Pythonのお勉強 Part32at TECH
Pythonのお勉強 Part32 - 暇つぶし2ch2:デフォルトの名無しさん
09/02/16 01:47:47
おつ

3:デフォルトの名無しさん
09/02/16 02:11:36
オツ

4:デフォルトの名無しさん
09/02/16 02:21:16
>>1
これはおつじゃなくて
たぶん蛇のシンボルうんぬん

5:デフォルトの名無しさん
09/02/16 02:22:01
掲示板作ったよ。
なんかホールとか発見したら教えてね。
しばらくしたら忘れてね。
URLリンク(rail.s4.pf-x.net)

6:デフォルトの名無しさん
09/02/16 04:16:32
import winsound
for i in (262, 294, 330, 349, 392, 440, 494, 523): winsound.Beep(i, 100)

7:デフォルトの名無しさん
09/02/16 10:47:34
君たちがよだれを垂らしながらほしがってるRubyのブロックつきメソッドは
Pythonから見れば叶わぬ夢であるという自覚くらいは持って頂きたく

8:デフォルトの名無しさん
09/02/16 12:18:31
■■日本語を文字化けしないで表示するやり方、エロい人教えて

# -*- coding: utf-8 -*-

import urllib

url = 'URLリンク(table.yahoo.co.jp)'
html = urllib.urlopen(url).read()

#a = html.decode('EUC-JP') #error
#b = html[:18].decode('EUC-JP') #ここまでなら実行できる

print html

9:デフォルトの名無しさん
09/02/16 12:25:49
Rubyのような中途半端なもの使うくらいならLispを使うな
LispとPython(おまけでPerl)があれば十分

10:デフォルトの名無しさん
09/02/16 12:33:11
>>8
ページ見てみたけど、先頭の方のHTMLコメント内に
euc-jpとしてデコードできない文字が入ってるようだ

html.decode('euc-jp', 'ignore')

html.decode('euc-jp', 'replace')
とでも汁

11:デフォルトの名無しさん
09/02/16 13:01:27
>>10

うぉ~出来た!多謝!!!

12:デフォルトの名無しさん
09/02/16 13:51:26
スルー力って大事だね。

13:デフォルトの名無しさん
09/02/16 14:21:44
リスト内包が便利すぎて最近RubyやLispのリスト処理関数忘れてしまった

14:デフォルトの名無しさん
09/02/16 21:44:44
                          刀、           , ヘ
                  /´ ̄`ヽ /: : : \_____/: : : : ヽ、
              ,. -‐┴─‐- <^ヽ、: : : : : : : : : : : : : : : : : : : : : : }
               /: : : : : : : : : : : : : :`.ヽl____: : : : : : : : : : : : : : : : : : /
     ,. -─「`: : : : : : : : : :ヽ: : : : : : : : :\ `ヽ ̄ ̄ ̄ フ: : : : :/
    /: :.,.-ァ: : : |: : : : : : : : :    :\: : : : :: : : :ヽ  \   /: : : :/
    ̄ ̄/: : : : ヽ: : : . . . . . . . . . . .、 \=--: : : :.i  / /: : : : :/
     /: :     ∧: \: : : : : : : : : : ヽ: :\: : : 〃}/  /: : : : :/         、
.    /: : /  . : : :! ヽ: : l\_\/: : : : :\: ヽ彡: : |  /: : : : :/            |\
   /: : ィ: : : : :.i: : |   \!___/ ヽ:: : : : : : :\|:.:.:.:/:!  ,': : : : /              |: : \
   / / !: : : : :.ト‐|-    ヽ    \: : : : : l::::__:' :/  i: : : : :{              |: : : :.ヽ
   l/   |: : :!: : .l: :|            \: : : l´r. Y   {: : : : :丶_______.ノ: : : : : :}
      l: : :l: : :ト、|         、___,ィ ヽ: :| ゝ ノ    '.: : : : : : : : : : : : : : : : : : : : : : /
      |: : :ト、: |: :ヽ ___,彡     ´ ̄´   ヽl-‐'     \: : : : : : : : : : : : : : : : : : イ
        !: :从ヽ!ヽ.ハ=≠' , ///// ///u /           ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      V  ヽ|    }///  r‐'⌒ヽ  イ〉、
              ヽ、______ー‐‐' ィ´ /:/:7rt‐---、       こ、これは>>1乙じゃなくて
                  ィ幵ノ ./:/:./:.! !: : : : :!`ヽ     ポニーテールなんだから
              r‐'T¨「 |: | !:.∨:/:./: :| |: : : : .l: : : :\   変な勘違いしないでよね!
               /: : .|: :| !:.!ィ¨¨ヾ、:.:/ !: : : : l: : : : : :.\


15:デフォルトの名無しさん
09/02/17 15:09:36
ここから勃起した巨大ペニスのAAを発射

16:デフォルトの名無しさん
09/02/18 01:21:05
つうかまじでpython厨うざい。
python厨は全員首吊って死ねよ。

ruby人口の方が多い。
rubyの方がいろいろできる。
言語的仕様は好みの問題。
議論の余地無し。
以上。

17:デフォルトの名無しさん
09/02/18 01:32:52
pass

18:デフォルトの名無しさん
09/02/18 02:26:46
>>1
ぱい乙

19:デフォルトの名無しさん
09/02/18 14:06:58
>>16
いろいろできるについてkwsk


20:デフォルトの名無しさん
09/02/18 14:45:29
煽りにマジレスしても意味ないが、
流石にruby人口の方が多いというのは無理があると思う

21:デフォルトの名無しさん
09/02/18 14:47:34
>>19

>>16 は前スレの >>979 に対して python ⇔ ruby 変換をしてコピペしたもの。
他人のレスを盗作するしかないぐらいに悔しくなった ruby 厨の仕業。
以前からpythonスレを荒しまくり、自分でrubyコミュニティーのアホさ加減を露呈している人間。
俺がrubyを使うのを止めて、python使いになるきっかけをになってくれた張本人でもある。

完全無視推奨。
以下、オリジナルのソース:

スレリンク(tech板)
| From: [979] デフォルトの名無しさん <sage>
| Date: 2009/02/17(火) 14:18:58
|
| つうかまじでruby厨うざい。
| ruby厨は全員首吊って死ねよ。
|
| python人口の方が多い。
| pythonの方がいろいろできる。
| 言語的仕様は好みの問題。
| 議論の余地無し。
| 以上。
|
| From: [985] デフォルトの名無しさん <sage>
| Date: 2009/02/17(火) 17:21:04
|
| 結局のところ>>979が穏便かつ正論だと言わざるを得ないな


22:デフォルトの名無しさん
09/02/18 14:53:56
実はrubyスレでも煙たがられる狂信者

23:デフォルトの名無しさん
09/02/18 15:17:12
同じ宗教の人が応援してるんでしょ

24:デフォルトの名無しさん
09/02/18 16:15:26
3になって何が変わったのさ

25:デフォルトの名無しさん
09/02/18 16:41:31
URLリンク(docs.python.org)
URLリンク(text.world.coocan.jp)

26:デフォルトの名無しさん
09/02/18 17:01:10
ruby厨は実はMatz本人だなんて事実は口が裂けても言えない

27:デフォルトの名無しさん
09/02/18 17:41:41
pass

28:デフォルトの名無しさん
09/02/18 19:36:43
netbeanとeclispどっちがおすすめ?

29:デフォルトの名無しさん
09/02/18 20:08:20
>>28
lisp


30:デフォルトの名無しさん
09/02/18 21:09:44
>>28
NetBeansでも問題なく普通にコーディングできるよ。
ただ、物凄く気になるのが1ソース内のインスタンス変数を同一のものと認識してくれない。
普通の変数なら、その変数を選択した時点でソース内の同じ変数が全てハイライトされるし
一括置換できるけど、インスタンス変数は出来ない。

次のバージョンぐらいから正式にサポートするみたいだからそれまではEclipseの方がいいかも
しれない。

31:デフォルトの名無しさん
09/02/18 23:33:45
ide使いたいならkomodoがよくね?

32:デフォルトの名無しさん
09/02/18 23:37:49
>>31
komodoは前のバージョンで日本語化したら、プロジェクト作ったりするときに
XMLがオカシイ!ってエラーが事あるごとに出てから嫌になった・・・

33:デフォルトの名無しさん
09/02/19 03:45:35
ぺちぱーの漏れが初めてpythonを触ってみた
シンプルに書けて良い感じ
コーディングスタイルを統一しやすいのもかなりマル
気にいったのでコツコツ勉強しますお

34:デフォルトの名無しさん
09/02/19 04:11:41
Pythonって関数(メソッド)の命名規則ってあるの?
組み込みの関数名が全部小文字だったり、単語区切りでアンダーバーが
あったりで・・・
よく使う関数とかは直ぐなれちゃうんだろうけど。

35:デフォルトの名無しさん
09/02/19 04:46:31
>>34
とりあえずPEP8を読もう

36:デフォルトの名無しさん
09/02/19 04:54:37
関数は全部小文字、適宜アンダーバー…じゃないかな?

37:デフォルトの名無しさん
09/02/19 06:41:10
boostの名前の付け方と似た感じなのかな

38:デフォルトの名無しさん
09/02/19 12:27:49
URLリンク(kei-software-engineering.blogspot.com)
URLリンク(kei-software-engineering.blogspot.com)

identifier can be namig
URLリンク(kei-software-engineering.blogspot.com)
>with sigil

_ は taxonomy な見方でみると sigil に属するものなんだろか…

39:デフォルトの名無しさん
09/02/19 13:39:15
Pyrex がすごい!


40:デフォルトの名無しさん
09/02/19 14:12:41
がいしゅつ?
URLリンク(www.ibm.com)


41:デフォルトの名無しさん
09/02/19 14:21:38

Python 3.0 は隔離スレを作るべきだと思うのは俺だけかな?
そもそもあれは実用で使うには時期が早すぎるわけで、ここで
普通に語られても困る。


42:デフォルトの名無しさん
09/02/19 15:11:42
別に

43:デフォルトの名無しさん
09/02/19 16:09:20
細分化する必要性が全く感じられない。
各自がレスの内容を収拾選択すればいいだけ。

44:デフォルトの名無しさん
09/02/19 17:03:12
このごろ新しく書き起こすプログラムは 3.0 向けに書くようにしているが
個人的にはこれまでのところほとんど違和感がない。2.x からの変更点の
リストを見て移行はたいへんだろうと予想していたので意外だった。

俺は Tkinter を愛用していて、この GUI ツールキットを使っている分には
2.x と 3.0 の差はほとんどない。print() や "".format() もそういうものだと思って
使ってみると別段困ることはない。

C API が大きく変わっているのが印象的だった。char * だったところが
wchar_t * になっててとまどった。

振り返ってみると 1.5.2 から 2.0 に移るときも案外スムーズだった気がする。
既存のプログラムは旧 Python で実行しつつ新しいプログラムは新 Python で
書いていたのも同じ。1.5.2 用から 2.0 用に書き直した自作の常用プログラムは
1つだけ(このプログラムは未だに使っている。そのうち 3.0 用に書き直すかも)。

まあ使い方に依るのかもしれない。個人的には今のところ 3.0 に満足してる。


45:デフォルトの名無しさん
09/02/19 17:30:14
まぁ、趣味人としは、3.0がこなれてきたら、
新しいスクリプトは3.0で書けばいいやって感じだな。

46:デフォルトの名無しさん
09/02/19 22:38:26
from b import c
この構文って3.0でも残るんだな。
import aとのギャップが直感的でない気がするのだけど。

47:デフォルトの名無しさん
09/02/19 23:27:43
from x import * は禁止して欲しい

48:デフォルトの名無しさん
09/02/19 23:46:14
>>46
from b import cがなくなったら困る。

>>47
わからないでもないけど、__init__.pyとかでは普通に使ってるから
なくなると面倒になる。

49:デフォルトの名無しさん
09/02/20 00:29:33
まだCentOSとかにデフォで入ってるのが2.4だったりするから、
配布を考えているものは2.4用にしてしまう。

50:デフォルトの名無しさん
09/02/20 00:33:40
新バージョンへの移行を促すべき

51:デフォルトの名無しさん
09/02/20 02:32:12
Python 3.0 は隔離スレを作るべきだと思うのは俺だけかな?
そもそもあれは実用で使うには時期が早すぎるわけで、ここで
普通に語られても困る。

52:デフォルトの名無しさん
09/02/20 03:08:57
細分化する必要性が全く感じられない。
各自がレスの内容を収拾選択すればいいだけ。

53:デフォルトの名無しさん
09/02/20 03:21:16
それコピペ

54:デフォルトの名無しさん
09/02/20 05:22:25
print 1
print (1)
どっちでも通るんだけど py 2.5.4, ipy 2.0.1
2.5系から文になったんだっけ…これ2.6からだったような…


55:デフォルトの名無しさん
09/02/20 05:27:17
逆だ…orz
「関数」になったんだっけ


56:デフォルトの名無しさん
09/02/20 05:40:12
>>54
(1)も1と同じ意味だから通るに決まってる。
(1, 2)になるとタプルになるが。

57:デフォルトの名無しさん
09/02/20 09:14:47
Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52)
>>> print ("aaa",3)
('aaa', 3)
>>> print (1,2,sep="#")
File "<stdin>", line 1
print (1,2,sep="#")
^

Python 3.0 (r30:67503, Feb 9 2009, 13:18:20)
>>> print ("aaaa",3)
aaaa 3
>>> print (1,2,sep="#")
1#2

58:デフォルトの名無しさん
09/02/20 10:16:02
それコピペ

59:デフォルトの名無しさん
09/02/20 12:33:17
【実験台】 Python 3.0 のお勉強 Part 1 【非互換】
スレリンク(tech板)

60:デフォルトの名無しさん
09/02/20 15:18:34
うっわー、バカじゃねえの。いや疑うまでもないか。

61:デフォルトの名無しさん
09/02/20 21:06:38
スレ荒らす暇でRubyもPythonも覚えればいいだろ
つかRubyスレだけじゃなくてPythonスレも荒らしてんのか
暇だねえ

62:デフォルトの名無しさん
09/02/20 22:08:48
[1,2,3] を ['1', '2', '3'] にしたいのですが

>>> [1,2,3]
[1, 2, 3]
>>> ','.join([1,2,3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> ','.join(str([1,2,3]))
'[,1,,, ,2,,, ,3,]'

わけがわかりません><

63:デフォルトの名無しさん
09/02/20 22:09:22
>>> ','.join(map(str, [1,2,3]))
'1,2,3'

64:デフォルトの名無しさん
09/02/20 22:10:18
>>> ','.join('%d' % i for i in [1,2,3])
'1,2,3'

65:デフォルトの名無しさん
09/02/20 22:11:32
>>> ['%d' % i for i in [1,2,3]]
['1', '2', '3']
>>> map(str, [1,2,3])
['1', '2', '3']
>>> str([1,2,3])
'[1, 2, 3]'

66:デフォルトの名無しさん
09/02/20 22:15:07
なんでこうなるの?

>>> ','.join('[1, 2, 3]')
'[,1,,, ,2,,, ,3,]'
>>> ','.join(str([1,2,3]))
'[,1,,, ,2,,, ,3,]'


67:デフォルトの名無しさん
09/02/20 22:17:42
join はリストを受け取るから
'[1, 2, 3]' は
['[', '1', ',', ' ', '2', ',', ' ', '3', ']']
になってから join() される


68:デフォルトの名無しさん
09/02/20 22:23:05
>>66
こうすれば理由が判ると思う。
>>> '#'.join('[1, 2, 3]')
'[#1#,# #2#,# #3#]'
>>> '#'.join(str([1,2,3]))
'[#1#,# #2#,# #3#]'

69:デフォルトの名無しさん
09/02/20 23:00:37
>>48
ごめん、何でなくなると困るのか教えて。

70:デフォルトの名無しさん
09/02/21 00:08:06
>>54
関数呼び出しの () を省略できるのは、 IPython の機能であって、
Python の構文ではないよ。

71:デフォルトの名無しさん
09/02/21 00:53:30
全然関係ないけど、asciiであと1個か2個他のカッコがあれば便利だったのにw

72:デフォルトの名無しさん
09/02/21 00:56:25
>>70
どこで関数よんでるんだ?

73:デフォルトの名無しさん
09/02/21 01:49:31
(1)が1と評価されて、print文に渡されてるだけ。
3.0から式になるから違うけど

74:デフォルトの名無しさん
09/02/21 01:50:12
(1,)とすれば違うだろうけど

75:デフォルトの名無しさん
09/02/21 02:21:17
>>39
Cythonの方がいいよ

76:デフォルトの名無しさん
09/02/21 02:30:13
うちのFreeBSDのPythonちゃんが2.5.4になったお

77:デフォルトの名無しさん
09/02/21 02:39:26
>>73-74
やれやれ、嘘を書くのはそこまでにしなさい。関数タイプの書き方許される様になったのは昔から。2.0とかじゃないの。

78:デフォルトの名無しさん
09/02/21 03:26:54
>>73
式っていうなら昔からもこれからも式だろw

3.0で文から関数に変わったんだろ

79:デフォルトの名無しさん
09/02/21 08:32:52
>>72
IPython 使ってみな。超便利だぜ。
In [1]: ord 'A' # これを
------> ord('A') # 勝手にこう解釈してくれる
Out[1]: 65

80:70=79
09/02/21 08:35:46
うわー、恥ずい。完全勘違い。
(1,)はタプルだけど(1)は1ってだけの話だな。
Python3.0ではIPython使えないしな。

>>77
from __future__ import print_function ってすればの話だよね。

81:デフォルトの名無しさん
09/02/21 10:11:50
>>80
式っていうなら昔からもこれからも式だろw

3.0で文から関数に変わったんだろ

82:70=79
09/02/21 10:36:05
>>81
俺は式とか文とかいう話題には参加してないが?

83:デフォルトの名無しさん
09/02/21 12:32:19
Pythonスレに粘着してるのは多分一人だと思うんだが奴は何がしたいのか

84:デフォルトの名無しさん
09/02/21 13:09:12
その一人は83の脳内にいる。

85:デフォルトの名無しさん
09/02/21 15:06:22
ぼくたちの心のなかにいるんだ

86:デフォルトの名無しさん
09/02/21 17:28:48
そもそも2chってめっきり人減ったよな
げろゆきが魅力無くなって手放したのも
理解出来る

87:デフォルトの名無しさん
09/02/21 17:41:17
URLリンク(lucumr.pocoo.org)

jinja2ってこんな面倒なことしてたんだな。
def bar(a=a):でいいと思うんだけど

88:デフォルトの名無しさん
09/02/21 18:23:03
結局
パイソンかルビーどっちがいのよ。
ルビーは日本人口が多くて
パイソンはハッカーも認める初心者にもおすすめの奥の深い言語
って聞いたんだけど。

89:デフォルトの名無しさん
09/02/21 18:29:29
gamilのパスワードを変えるスクリプトを
urllib,urllib2,cookielibで書いてみた
Rubyよりも簡単な気がするのは樹の精?

90:デフォルトの名無しさん
09/02/21 18:31:10
どっちも同じようなもんだろ

91:デフォルトの名無しさん
09/02/21 18:58:44
Python が連立方程式だとすれば
Ruby はつるかめ算みたいな感覚かな

92:デフォルトの名無しさん
09/02/21 20:00:16

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
早稲田理工スレの次スレ [大学受験]

93:デフォルトの名無しさん
09/02/21 23:14:13
URLリンク(www.youtube.com)

94:デフォルトの名無しさん
09/02/21 23:36:24
パイパンかこうぜ

95:デフォルトの名無しさん
09/02/21 23:45:28
>>88
最近Google App Engineのために勉強がてら出来るだけPythonを使うようにしている
いままではRubyで書いていた、仕事で使う書き捨てツールや日常の自動化ツール等をPythonで書くようにした

その結果感じたのは
使いやすさではRubyの圧勝

96:デフォルトの名無しさん
09/02/21 23:53:59
最近勉強がてらに出来るだけ英語を使うようにしている
いままでは日本語で読んでいた、仕事で使う本や趣味の本等を英語で読むようにした

その結果感じたのは
使いやすさでは日本語の圧勝

97:デフォルトの名無しさん
09/02/21 23:58:38
一応、慣れの問題は差し引いて考えてるよ

98:デフォルトの名無しさん
09/02/21 23:58:57
>>95
判断しかねるので、もうちょっと具体的に聞きたいな。

99:デフォルトの名無しさん
09/02/22 00:14:15
最近Google App Engineのために勉強がてら出来るだけPythonを使うようにしている
いままではRubyで書いていた、仕事で使う書き捨てツールや日常の自動化ツール等をPythonで書くようにした

その結果感じたのは
使いやすさではPythonの圧勝

100:デフォルトの名無しさん
09/02/22 00:16:20
str.len() じゃなくて len(str) だったり
str(u'ほげ') すると死んだり
Ruby 使ってたら疑問にも思わなかったことが
Python だと「あれっ?」て思うことはかなりある

101:95
09/02/22 00:17:00
まず第一にPythonのドキュメントって読みにくくない?

第二に len がメソッドでなかったりする一貫性の無さが
未知の仕様の推測やドキュメントのどこを調べればいいのかの推測を難しくする
まぁ、これは慣れれば問題ないというか、慣れれば逆にこっちの方が良いのかもしれないけど
こういうのって慣れにくさの原因にもなるでしょ

あと、ライブラリのインターフェースがユーザーフレンドリーじゃない感じ

正規表現が言語に溶け込んでなくて使いにくい

102:デフォルトの名無しさん
09/02/22 00:20:25
>>> u'ほげ'.__len__()
2
>>> 'ほげ'.__len__()
4
>>> len(u'ほげ')
2
>>> len('ほげ')
4
>>> len(u'ほげ'.encode('utf-8'))
6
>>> len(u'ほげ'.encode('ujis'))
4
>>> str('ほげ')
'\x82\xd9\x82\xb0'
>>> str(u'ほげ')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters
in position 0-1: ordinal not in range(128)
>>> str(u'ほげ'.encode('utf-8'))
'\xe3\x81\xbb\xe3\x81\x92'
>>> str(u'ほげ'.encode('ujis'))
'\xa4\xdb\xa4\xb2'

103:デフォルトの名無しさん
09/02/22 00:21:49
>>101
>まず第一にPythonのドキュメントって読みにくくない?
少なくとも Ruby よりましですね


104:デフォルトの名無しさん
09/02/22 00:23:36
正規表現については、perlより使いやすい構文に出会ったことがない。
やはりfirst class扱いされてると使いやすさは段違いだ。

105:デフォルトの名無しさん
09/02/22 00:23:53
lenくらい光速で覚えられないゆとりはRubyを使えばいいよね。

106:デフォルトの名無しさん
09/02/22 00:26:12
私がPythonにイラっとくるのは戻り値がない(selfを返さない)メソッドが多いことかな
obj.hoge().fuga().hage()
っていうことが(出来るケースもあるけど)出来なくて鬱陶しく感じるときがあります
式と文が区別されてることは事情が判るので我慢出来るんですが

107:デフォルトの名無しさん
09/02/22 00:26:14
>>101
RubyはどうかしらないけどPythonのドキュメントは俺も読みにくいと思う。

108:デフォルトの名無しさん
09/02/22 00:26:49
C++とかの正規表現よりまし
¥記号いくつ並べるんだよって思う

109:デフォルトの名無しさん
09/02/22 00:29:21
読みにくいと思うひとは具体的に例をあげてもらえますか?

110:デフォルトの名無しさん
09/02/22 00:32:39
初めてのPythonにUNICODEの扱いがほとんど書かれてないし
しかも間違ってるwことかな

111:デフォルトの名無しさん
09/02/22 00:33:43
>>109
まず例が少ないよ

112:デフォルトの名無しさん
09/02/22 00:35:51
>>105
lenが覚えられないとは書いてないじゃない
lenがあることで他の仕様が推測しにくくなるった書いてるんですよ

113:デフォルトの名無しさん
09/02/22 00:36:02
>>110
あれは著者が UNICODE についてなにも知らないので
触れてるフリしてさりげなくスルーしてるだけかと

114:デフォルトの名無しさん
09/02/22 00:37:34
>>87
違いは、
def bar(a=a): だと barが定義された時点のaの値が func_defaultsに入る。
URLのはcell creationとある様に、barが呼び出された時点のaの値がfunc_closureにcellオブジェクトとして格納される。
…くらいかな、。jinja2内での用途は知らないけど、
locals()の返す辞書にaを含めるという点はどちらも満たしてるし、
記事にはcellはoevrheadと書かれているので、cellオブジェクト自身が必要なのではなく
結果だけ欲しいのであれば、どちらでもいいのかもしれない。



115:デフォルトの名無しさん
09/02/22 00:37:48
流れを切る様ですみません。

class C:
 f = lambda x: x + 1

と書いて、C.f(3)などとやろうとすると
fの第一引数がCのinstanceになってしまうのですが、
なんとかならないでしょうか?

今は仕方ないので

 @classmethod
 def f(cls,x): return x + 1

としていますが、わずらわしいです。

116:デフォルトの名無しさん
09/02/22 00:38:48
カッコ無しでメソッド呼び出しをできるようにしてしまったばっかりに
メソッドオブジェクトの代入に特別な文法を導入せざるを得なかったRubyってかっこいいよね。

117:デフォルトの名無しさん
09/02/22 00:39:36
tupleとlistの使い分けが良くわからないんですけど
それぞれに決まった用途ってあるんですか?

118:デフォルトの名無しさん
09/02/22 00:44:17
4.16 Why are there separate tuple and list data types?
URLリンク(www.python.org)

119:デフォルトの名無しさん
09/02/22 00:44:24
>>115
f = staticmethod(lambda x: x + 1)

120:デフォルトの名無しさん
09/02/22 00:48:54
>>119
できました!
ありがとうございます。

121:デフォルトの名無しさん
09/02/22 00:54:22
>>117
tuple は型が違うものを混ぜても気にせず放り込んで
list は型がそろっている
という使い分けを無意識にしてるような気がします

122:デフォルトの名無しさん
09/02/22 00:56:53
>>121
listで型をそろえるとなるとtreeが作れないね

123:デフォルトの名無しさん
09/02/22 01:05:03
そうしないといけないって訳じゃないのでは

124:デフォルトの名無しさん
09/02/22 01:06:53
tuple は immutable だからね

125:デフォルトの名無しさん
09/02/22 01:08:40
>>117
tupleとlistで一番違うのは、辞書のキーに使えるかどうかかな。
tupleは辞書のキーにできるが、listはできない。

辞書のキーには変更可能(mutable)な型は使えないから。

126:デフォルトの名無しさん
09/02/22 01:09:20
pythonのlistはvectorに改名した方が実情にあっている。
そして、immutableなlistを新しく入れて欲しい。

127:デフォルトの名無しさん
09/02/22 01:10:14
>>126
同時に末尾最適化も入れないとあまり意味が無いな

128:デフォルトの名無しさん
09/02/22 01:13:21
immutableなlistとtupleの違いを詳しく

129:デフォルトの名無しさん
09/02/22 01:15:20
>>126は、力点としては関数型的なconsリストを指しているのだと思う

130:デフォルトの名無しさん
09/02/22 01:18:00
immutableなlist [a1,a2,a3,a4]は

(a1,(a2,(a3,(a4,()))))

で代用できる。面倒だけど。

131:デフォルトの名無しさん
09/02/22 01:20:05
>>130
確かにそれでできるけど、map/filter/foldとか使えないし
自前で再帰的なアルゴリズムを記述しても末尾最適化もされないから
ぶっちゃけオモチャだよね

132:デフォルトの名無しさん
09/02/22 04:29:54
lenが一貫性ないってのはよくわからん。一貫性がないっていうのは
Javaみたく配列の長さはa.length、ArrayListはa.size()、文字列の長さは
a.length()みたいのを一貫性がないというのであって、Pythonのは違うと
思う。まあ、慣れの問題だね。

133:デフォルトの名無しさん
09/02/22 05:19:36
一貫性ねえじゃんwww

134:デフォルトの名無しさん
09/02/22 05:25:43
愚かな一貫性は・・・

135:デフォルトの名無しさん
09/02/22 05:31:34
length size count
add append push_back
delete remove erase
title caption text
widget control component
list array vector

136:デフォルトの名無しさん
09/02/22 05:34:41
一貫性を定義しろ。話はそれからだ

137:デフォルトの名無しさん
09/02/22 05:38:33
goo国語
いっかん-せい ―くわん― 0 【一貫性】
最初から最後まで矛盾がない状態であること。同じ態度を持続すること。

138:デフォルトの名無しさん
09/02/22 08:35:30
Ruby厨の言うことは一貫性がない。

139:デフォルトの名無しさん
09/02/22 10:58:51
結局のところどっちも使えるようにしとけっ!
みたいな

140:デフォルトの名無しさん
09/02/22 11:08:14
>一貫性がないっていうのは
>Javaみたく配列の長さはa.length、ArrayListはa.size()、
>文字列の長さは a.length()みたいのを
>一貫性がないというのであって

どうして一つの文章で一貫性がないを二度も言う必要があるのはなぜなのかはおいといて
Javaでは「敢えて使い分けてる」んですよ
型安全と、メソッド名から型が判別出来こととの冗長性をわざと実現しているんです

141:デフォルトの名無しさん
09/02/22 11:27:49
nautilussvnを使っているんですが、クライアント認証を使ったSSLを経由してsvnサーバに
つなごうと思ったら、SSLに対応していないのかエラーが出てしまいます。

Error : callback_ssl_client_cert_prompt required
↑こんなの

なんとなく、クライアント認証用のプロンプトが必要だとか言ってるっぽいので、pythonのSSL
ライブラリでも入れればいいのかと思うのですが、対処方法ご存知のかたがいらしたら教えていただけませんか?


142:デフォルトの名無しさん
09/02/22 12:06:32
URLリンク(www.google.co.jp)

143:デフォルトの名無しさん
09/02/22 13:02:27
>>110
間違ってるってどのへん?

144:デフォルトの名無しさん
09/02/22 13:57:52
a.__lt__(self, b) : a < b
a.__eq__(self, b) : a == b
a.__getitem__(self, i) a[i]
a.__hash__(self) : hash(a)
a.__len__(self): len(a)

hashやlenも演算子に類するものと見ればいいんジャマイカ。
実際長さは__getitem__とも密接な関係にあるしね。うっかり
同名のメソッドを定義してアボーンなんてリスクを考えれば
これはこれでありだと思ふ。

145:デフォルトの名無しさん
09/02/22 15:53:14
2.6で(まともな)sslモジュールが標準になったけど
中身がCで書かれてて
派生クラスを食ってくれんのが悩み。

146:デフォルトの名無しさん
09/02/22 17:11:00
>>145
自分で拡張したい場合は確かに悩みどころだよな。
一方で、標準機能にいろんなものを詰め込んで欲しいと考える人もいるし。
妥協点としては、基本エンジンを簡潔・高速にして、よく使いそうな機能はライブラリで容易するとか。

147:デフォルトの名無しさん
09/02/22 17:53:44
暗いなら自ら明かりをつけましょう

148:デフォルトの名無しさん
09/02/22 18:46:17
クレクレ厨乙

149:デフォルトの名無しさん
09/02/22 18:47:28
誤爆

150:デフォルトの名無しさん
09/02/22 19:52:09
pythonのlambdaで実験していて、以下の問題に突き当たりました。
識者の方がいらっしゃいましたら、
ご教授願えるとありがたいです。

//無名関数をn個リストにして返す関数
def make_funcs(n):
fn_list = []
for i in range(n):
fn_list.append(lambda x : i*x)
return fn_list

//code block
fL = make_funcs(5)
for f in fL:
print(f(10))

//実行結果
40
40
40
40

//期待する実行結果
0
10
20
30
40

for文中のiが上手く認識されていないように思えます。
Schemeのクロージャとは振る舞いが異なるのでしょうか?


151:デフォルトの名無しさん
09/02/22 20:10:18
lambda x, i=i: i*x

152:デフォルトの名無しさん
09/02/22 20:27:38
>>150
Pythonでもクロージャは環境をキャプチャするんだが
そのforループではiが逐次破壊的に書き換えられてしまう
(let束縛ではなくset!のイメージ)んでそういう動作になる

単一代入でない&クロージャをサポートする言語で破壊的なループを使って
そういう書き方をすると、そういう動作になるのが普通で、
JavaScriptやPerlなんかもそうなったはず

Pythonでは>>151のような方法で対処できるが、魔術的だと感じられるなら
ループの中でさらにdefで明示的にブロックを作って、その中で
クロージャを作ったりするといいと思うよ

153:152
09/02/22 20:34:39
例えばこんな風に書くということね
def make_funcs(n):
    def make_func(i): return lambda x: i * x
    fn_list = []
    for i in range(n):
        fn_list.append(make_func(i))
    return fn_list

もっと短く書く書くこともできる
def make_funcs(n):
    make_func = lambda i: lambda x: i * x
    return [ make_func(i) for i in range(n) ]

154:デフォルトの名無しさん
09/02/22 20:54:37
>> 151, 152

非常に分かりやすい説明で、問題の原因が良く理解できました。
また、正しい書き方も分かりました。
ありがとうございました。





155:デフォルトの名無しさん
09/02/22 21:13:08
…で、実際処理速度はどうなの?>パイソン
PHPより早いのかな?

156:デフォルトの名無しさん
09/02/22 21:19:48
おおむねPython>Perl>PHP>Rubyってとこじゃね?

157:デフォルトの名無しさん
09/02/22 21:33:59
URLリンク(shootout.alioth.debian.org)
その手のベンチマークで定番?になってるサイトです。
言語の種類だけでなく、プログラミングの手法によっても結構変わるみたいですね。

158:デフォルトの名無しさん
09/02/22 21:47:06
URLリンク(shootout.alioth.debian.org)

159:デフォルトの名無しさん
09/02/22 21:55:27
C++が0.08秒で、PHPが48分って・・・orz
完全にやる気なくした・・www

160:デフォルトの名無しさん
09/02/22 22:01:33
>>156
馬鹿じゃない?

161:デフォルトの名無しさん
09/02/22 22:03:23
>>142
この回答って
Error : callback_ssl_client_cert_prompt required
これの対処法の回答という認識でいいんですかね・・・?

ググってみたんですがどれが回答になるのか分からなかったんですけど・・・。
そういうレベルの人はここに来てはいけないということですかね??


162:デフォルトの名無しさん
09/02/22 22:14:19
>>159
用途に合わせて言語を選ぶ。 当たり前のことじゃないか。

163:デフォルトの名無しさん
09/02/22 22:31:45
>>160
なんで?

164:デフォルトの名無しさん
09/02/22 22:33:07
>>161
こっちで質問しる
URLリンク(gimpo.2ch.net)


165:デフォルトの名無しさん
09/02/22 22:50:42
>>157
python 3 もっとがんがれ
おれもPHPが一番鈍足だとはしらんかった



166:デフォルトの名無しさん
09/02/22 22:54:23
>>163
根拠を示さないレス乞食はそっとしてあげて。

167:デフォルトの名無しさん
09/02/22 23:04:54
pass

168:デフォルトの名無しさん
09/02/22 23:34:42
インタプリタが遅いのは当たり前田のSPAM

169:デフォルトの名無しさん
09/02/22 23:37:20
まぁ>>156自体に根拠がないけどね

170:デフォルトの名無しさん
09/02/22 23:40:26
まあ・・ウェブならスクリプト言語でも十分ですけどね
2~3秒以上もかかる計算滅多にないし

確かにベンチマークではpythonの方が良い成績のことが多いみたいだけど
スクリプト言語である以上、ドングリの背比べのような気もしないではない

ただ、pythonってphpに取って代わるメジャーなスクリプト言語になり得るのかな?

171:デフォルトの名無しさん
09/02/22 23:41:30
>>158見ると>>156の順番通りだけど?

172:デフォルトの名無しさん
09/02/22 23:44:35
>>170
パフォーマンスを気にする必要があるのは、10K問題とかだと思う。

173:デフォルトの名無しさん
09/02/22 23:57:17
しっかしPHP6はいつ出るんだ?

WEBはDBへの接続とDB自体の処理速度が一番ボトルネックだと思う。
そこが早ければある程度なら問題ないんじゃないだろうか。

174:デフォルトの名無しさん
09/02/22 23:59:41
PHPは(言語)仕様がどうのってよりも、ビジネス戦略で広まってるだけですがな。

175:デフォルトの名無しさん
09/02/23 00:02:38
10k問題という言葉・・初めて知りましたw

一万接続なんて、スクリプトじゃむりぽ
…というか、アパッチも無理なんじゃ

176:デフォルトの名無しさん
09/02/23 00:02:43
ビジネス戦略って一体何なんだ?

177:デフォルトの名無しさん
09/02/23 00:52:54
Python 3.0の変更点を調べていると、

URLリンク(text.world.coocan.jp)'sNewInPython3.0
> callable関数は削除されました。
>『callable(f)』の代わりに、
>『hasattr(f, '__call__')』が使えます。
> operator.isCallable関数もなくなりました。

とあるのですが、後者の方が書き難いのではないかと思います。
Pythonでは複数のやり方を嫌うという説明を見ました。
しかし、より良いものが残るべきとう意見は分かります。
でも、今回の件は消す必要が無かったのでは?
と思ってしまいます。

皆さんの意見はいかがでしょうか?

178:デフォルトの名無しさん
09/02/23 01:01:28
正直 2.x でも callable なんて使ってなかったからどうでもいい。
EAFPってやつだ。

179:デフォルトの名無しさん
09/02/23 01:32:36
レスありがとうございます。
EAFPという考え方、初めて知りました。
Googleで調べたら、いろいろ勉強になりました。

そもそもオブジェクトの属性が持つかどうかをチェックするよりは、
try, ecept構文で実行して、例外を補足するスタイルが推奨されているんですね。

180:デフォルトの名無しさん
09/02/23 08:03:08
>>175
> 一万接続なんて、スクリプトじゃむりぽ
Erlangなんかの実績はあるよ。

181:デフォルトの名無しさん
09/02/23 08:34:59
魚病理学者って何だ?

182:デフォルトの名無しさん
09/02/23 09:57:42
pass

183:デフォルトの名無しさん
09/02/23 11:36:33
10k問題って西暦で10000年になって桁が増えるときの問題かと思ったぜ

184:デフォルトの名無しさん
09/02/23 14:29:48
10種類も苦しいことがあるなんてどんな業界だよ。

185:デフォルトの名無しさん
09/02/23 14:42:07
休憩がない、帰れない、給料安い、休暇(取れ)ない、雇用不安定
キリがない、規則が理不尽、経費が自腹、心を病む、過労死

で10kじゃね

186:デフォルトの名無しさん
09/02/23 14:51:47
>>185
おいおい、「彼女ができない」 が抜けてるぞ

187:デフォルトの名無しさん
09/02/23 14:54:28
「彼女(or結婚)できない」、すっかり忘れてたよ

188:デフォルトの名無しさん
09/02/23 20:50:30
Erlangでいけるなら
stackless + libev でいけるだろ、たぶん、きっと

189:デフォルトの名無しさん
09/02/23 20:51:29
>>157
これ見ると、概してCよりC++のほうが早いと思って良いのかなぁ。

190:デフォルトの名無しさん
09/02/23 21:04:40
>>188
有望ではあるよね。
C10K問題への対策の一つが高次並列化なんだが、stacklessが
変数使い捨てを強化すれば、並列化との相性が良くなる。

191:デフォルトの名無しさん
09/02/23 21:08:43
C10K問題対策って普通単にサーバ分散させるだけじゃねえの?

192:デフォルトの名無しさん
09/02/23 21:13:41
>>185-191
C10K: >>185 - 規則が理不尽 + 彼女ができない + コーディング規則が理不尽

193:デフォルトの名無しさん
09/02/23 21:26:10
>>191
静的コンテンツを同時に多数同時に見てもらうだけの時代はそれで済む事もあったけど、
例えば「10万人同時ログイン&互いに同じ関心を持つ者のグループをダイナミックに」
などとやろうとすると、別の手が必要。

関数型言語が並列化と相性がいいんで、stacklessみたいなのが関数型のいい所を
取り込んでくれるといいな、というのが感想。

194:デフォルトの名無しさん
09/02/23 22:06:09
10万人同時ログインってw
GLAYの幕張ライブやないねんからw

195:デフォルトの名無しさん
09/02/23 22:14:08
チャットみたいなもんか?
よくわかんねえけど
10万人で一緒にチャットする必要は感じないが……

今の大規模サービスって別にダイナミックコンテンツでも
普通にスケールさせてないか?
勿論サーバ分散させて

196:デフォルトの名無しさん
09/02/23 22:38:39
少数のサーバーに集中
     ↓
安価な多数のサーバーに分散するといいぜ
     ↓
でも、物理メンテ大変だし、あんまり安いマシンじゃなくて
ちょっと高級な中グレードのマシンで台数減らした方がよくね?
(イマココ)


197:デフォルトの名無しさん
09/02/23 23:08:25
C10K問題の先駆けは既に、Skype、Twitterなどでも出始めてる。
10万人というのは一例で、従来型サービスの延長じゃない事を
スケールさせたい場合の問題の一つ。

198:デフォルトの名無しさん
09/02/23 23:44:25
あんまり言語とは関係ない話になってるなw

199:デフォルトの名無しさん
09/02/24 00:07:49
10万人同時チャットってwww
忙しすぎw

200:デフォルトの名無しさん
09/02/24 11:41:28
ちょっと面白そうだな>10万人チャット

201:デフォルトの名無しさん
09/02/24 12:53:56
2chのスレの一番速い流れでスレあたり1000人だもんな。


202:デフォルトの名無しさん
09/02/24 13:35:13
人数の多いチャット部屋覗いたことあるが、大半はROM専
数人が発言しまくりで、残りは単発発言の奴かな
余程盛り上がる話題が無いとそんなにログ流れんし
ログが流れる時ってのは会話が成立しない祭状態で
会話したい奴は「特定の相手とのみ会話する機能」使って身内話

203:デフォルトの名無しさん
09/02/24 14:17:58
10KのKはKOBITOのK。

204:デフォルトの名無しさん
09/02/24 16:40:23
TwitterのPublic Timelineがある意味10万人チャットみたいなものか

205:デフォルトの名無しさん
09/02/24 17:50:41
聖徳太子「10Kまで同時通話おk」

206:デフォルトの名無しさん
09/02/24 20:37:20
pythonでhtmlを処理しようと思うんだがどういう方法がベターなの?

207:デフォルトの名無しさん
09/02/24 20:37:35
>>189
Linusの回答
URLリンク(tabesugi.net)
オリジナル
URLリンク(lwn.net)

208:デフォルトの名無しさん
09/02/24 20:53:57
C++のそういうネタは好きw

209:デフォルトの名無しさん
09/02/24 23:45:18
ネストした関数をunittestモジュールで外からテストにかける方法って
ない?

210:デフォルトの名無しさん
09/02/25 00:23:43
BeautifulSoupが流行ってる

211:デフォルトの名無しさん
09/02/25 01:21:36
>>206
htmlparserってのがあるけど、速度的には正規表現で処理するのがお勧め。

212:デフォルトの名無しさん
09/02/25 01:55:50
lxml

213:デフォルトの名無しさん
09/02/25 08:37:03
"substandard programmers"が書くCのコードもそれはそれは恐ろしいけどな。

214:デフォルトの名無しさん
09/02/26 02:22:46
lxmlが最強って聞いたけどそうでもないの?

215:デフォルトの名無しさん
09/02/26 14:51:02
lxmlが最強

216:デフォルトの名無しさん
09/02/26 15:21:07
lxmlが速いみたいだよ。どうしてもpure pythonが良いならBeautifulSoupだろうけど。

217:デフォルトの名無しさん
09/02/26 20:08:27
人の書いた作例とどう動くかが多数解説されたサイトを教えて下さい
解説サイトの理論を見ても理解できません
つーかPrologしかやったことないです

218:デフォルトの名無しさん
09/02/26 20:58:40
>>217
俺はむしろPrologのほうが分からんぜ…。

・ドキュメントのチュートリアルを一通り読む
>>1のまとめwikiにある問題集とドキュメントを照らし合わせながら読む
・とにかく書く

辺りかなぁ。
他の手続き型言語からの人なら
「自分の前に書いてたコードを今の言語に書き直してみる」
ってのも結構有効なのだろうけれど、Prologは毛色が違い過ぎて難しいだろうなぁ…。
特にユニフィケーションをフル活用するようなコードは言語としてサポートしてるPrologのほうが楽だろうし。

小さな練習問題が欲しいなら「練習問題 Python」辺りでググると大量に出てくると思う。

219:デフォルトの名無しさん
09/02/27 04:08:54
作例で数が多いとこならcookbook。でも、詳細な解説は期待できないかな。
いろんな人が投稿してるので質はバラバラだけど、
コードをベースに議論したりするので、他よりは割とコメント(解説)多めだと思う。
URLリンク(code.activestate.com)



220:デフォルトの名無しさん
09/02/27 08:52:56
generator について一言で言うと何なんでしょうか?

221:デフォルトの名無しさん
09/02/27 09:02:06
>>220
魔法

222:デフォルトの名無しさん
09/02/27 09:08:31
関数をイテレータ化するための魔法

223:デフォルトの名無しさん
09/02/27 14:28:57
今 URLリンク(www.python.jp)

4.7.1 デフォルトの引数値 の中の

def f(a, L=[]):
L.append(a)
return L

print f(1)
print f(2)
print f(3)

このコードを打とうとしてたんだけど、eclipseに
「.」ピリオド打つと固まってしまう。
コピペすると落ちないんだけど、直接「.」打つ方法ありませんか?

環境は
Eclipse Classic(SDK)3.4.1
Pydev 1.4.4.2636
Python 2.6
です。

お分かりの方いらっしゃいますか?


224:デフォルトの名無しさん
09/02/27 15:04:14
>>223
> 「.」ピリオド打つと固まってしまう。
「.」を入力した瞬間に、メソッド一覧を表示しようとしてると推測。

225:デフォルトの名無しさん
09/02/27 15:16:14
>>223
1日ほっとく

226:デフォルトの名無しさん
09/02/27 15:37:35
>>223
もっと早いマシン買えよ底辺ドカタ。

227:デフォルトの名無しさん
09/02/27 16:00:44
pass

228:デフォルトの名無しさん
09/02/27 17:58:08
>>220
遅延リスト

229:デフォルトの名無しさん
09/02/27 17:59:40
新しくpythonを勉強する際に、3.0対応の書籍・サイト・マニュアルはありますか?

230:デフォルトの名無しさん
09/02/27 18:36:20
>>229
はじめてのPython3
中身読んでないのでどのくらい使えるのかわからんけど。

231:デフォルトの名無しさん
09/02/27 19:08:48
URLリンク(www.catonmat.net)
URLリンク(inkhorn.org)

根性 types, object, attributes, method 理解

232:デフォルトの名無しさん
09/02/27 22:27:08
んじゃぁ

比較的新しいいい本は?

233:デフォルトの名無しさん
09/02/28 01:11:09
西尾さんが書いたJython本だな

234:デフォルトの名無しさん
09/02/28 01:34:54
>>229
スレリンク(tech板)

235:デフォルトの名無しさん
09/02/28 01:48:17
>>229
URLリンク(www.amazon.co.jp)

この本が一番日本語のPython本として一番よく出来ている。
他のがかすんで見えてしまうほどだ。この一冊さえあれば
Pythonについて完璧にマスターできるだろう。

236:デフォルトの名無しさん
09/02/28 02:47:46
>>235
その本を買って初心者を脱出したいと思います。
良著紹介ありがとうございました。

237:デフォルトの名無しさん
09/02/28 04:00:27
>>236
どういたしまして

238:デフォルトの名無しさん
09/02/28 07:30:36
>>235
Python関係ないだろ

239:デフォルトの名無しさん
09/02/28 09:29:57
>>238
はあ?
言語自体はPythonだろ

240:デフォルトの名無しさん
09/02/28 09:39:32
つか、Jythonってジャイソンって読むのか。ジェイソンだと思ってたw

241:デフォルトの名無しさん
09/02/28 09:48:20
爺さんって読むんだよ

242:デフォルトの名無しさん
09/02/28 09:48:25
>218-219
thx
パズル感覚でやってみます

243:デフォルトの名無しさん
09/02/28 11:55:31
>>239
Jthon本に対するコメントだよ
言語自体はPythonだけどその本に
Python的内容を期待してたら外れ

244:デフォルトの名無しさん
09/02/28 11:59:56
>>243
どっちかっつーとありゃJavaの本だ
ターゲット読者の絞込みが中途半端なんだよ
Java使いにとってはJavaのインストールとかEclipseとか
わざわざ説明してるのは馬鹿じゃないかと思う訳で
Python使いにとっては何が嬉しくてわざわざ
Javaインストールしてまで(ry


245:デフォルトの名無しさん
09/02/28 12:11:42
CPython から Java を呼び出して使えますか?

246:デフォルトの名無しさん
09/02/28 12:30:08
これから槍始める人は3.0かそれ以前をやるべきなのか・・・

247:デフォルトの名無しさん
09/02/28 12:40:18
2.5の日本語ドキュメントを利用できて、3.0の雰囲気も味わえる2.6

248:デフォルトの名無しさん
09/02/28 13:00:38
Guidoによると2.2の頃に書かれて改訂されたクソ本は買わない方がよいらしいよ。

249:デフォルトの名無しさん
09/02/28 13:06:40
クイックリファレンス一冊でオケ
ただし古すぎみたいな

250:デフォルトの名無しさん
09/02/28 13:19:37
Jython本をいつも推薦してくれるjava-jaの非モテ君ありがとう。

251:デフォルトの名無しさん
09/02/28 13:23:38
ジャイソン以外の良本はないのか

252:デフォルトの名無しさん
09/02/28 13:30:13
>>249の2.6/3.0対応版がもうすぐ出るよ
ピアソンがんばってくれないかね

253:デフォルトの名無しさん
09/02/28 13:49:19
すいませんアドバイスください m__m

コマンドプロンプト上でPythonを実行して
待機秒数を表示させたりする場合、
待機するループ内でprintやsys.stdoutの出力を行うと
データがどんどん流れていってしまうのですが、
それを防ぐ方法はありませんか?

254:デフォルトの名無しさん
09/02/28 13:54:03
import sys, time
for i in range(10):
    sys.stderr.write("%d\r" % i)
    time.sleep(1)

255:デフォルトの名無しさん
09/02/28 14:00:45
なるほど!!
どうもありがとうございます。

256:デフォルトの名無しさん
09/02/28 14:11:28
西尾さんのブログを読むべきだと思うけどな

257:デフォルトの名無しさん
09/02/28 14:12:14
>>254
すみません、ピコ秒単位で制御したいのですがどうすればいいんでしょうか

258:スルー力が足りない!
09/02/28 14:20:02
本人装った荒らし乙。

259:スルー力が足りない!
09/02/28 14:28:27
>>257
本人装った荒らし乙。

260:258 (!= 259)
09/02/28 14:38:09
図星だったwww


261:デフォルトの名無しさん
09/02/28 15:03:29
       //
     /  /   パカッ
     //⌒)∩__∩
    /.| .| ノ     ヽ
    / | |  ●   ● |     
   /  | 彡  ( _●_) ミ  まピョーん☆
   /  | ヽ  |∪|  /_
  // │   ヽノ  \/
  " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ

262:デフォルトの名無しさん
09/02/28 16:24:57
pass

263:デフォルトの名無しさん
09/02/28 18:15:08
ぬるぽ

264:デフォルトの名無しさん
09/02/28 19:28:41
try:
    ガッ

265:スルー力が足りない!
09/02/28 23:07:40
except ちんぽ as e:

266:デフォルトの名無しさん
09/02/28 23:37:00
俺の息子がexceptionalにepsironってことですね

267:デフォルトの名無しさん
09/03/01 15:15:27
SHA-1を計算するのに

f = open(target,'rb)
b = f.read()
f.close()
hashlib.sha1(b)

で計算はできたのですが
これをループを使って複数のファイルに対して行うと
途中でメモリエラーが出てしまいます(OutOfMemoryException)。
強制的にメモリを開放させるようなことはできないでしょうか?

b = ''
というようなこともしてみましたが無駄でした。
環境はIronPython 2.0.0.1、Windows Vista SP1です。


268:デフォルトの名無しさん
09/03/01 16:52:43
URLリンク(d.hatena.ne.jp)

269:デフォルトの名無しさん
09/03/01 17:04:45
入力されたフォームデータをsqliteでデータベースに溜め込むCGIをPythonで実現しようとしてるんですが
同時アクセスが有った場合にコリジョンを回避するにはどうしたらいいでしょうか?キューにしたいんですが。

270:デフォルトの名無しさん
09/03/01 17:07:42
import Queue

271:デフォルトの名無しさん
09/03/01 17:16:06
CGIじゃプロセスがそれぞれ異なるから無理でしょ。

あと、SQLiteに書き込むならロックされるはずだから
同時アクセスは気にしなくてもいいと思うよ。

272:デフォルトの名無しさん
09/03/01 17:26:26
aritayaki

273:269
09/03/01 17:26:54
下げ忘れてた。失礼。
ということは、例外を捕まえてtime.sleep(1)とかやった方がスマートですかね。
アクセスが集中したときは順番ゴチャゴチャになるかもしれないけれど。
マヌケな話で申し訳ないんですがコリジョンを意図的に発生させる方法を教えて貰えますか?
実際に例外出して見ないと不安で。

274:デフォルトの名無しさん
09/03/01 18:11:59
sqlite コマンド側からテーブルにロックかけたままにしておいて
CGI実行してみればどう?
タイムアウトはconnect時に指定できる。

あと、タイムアウトが発生してるような状態なら
時間をおいて再実行とかは、あまり意味がないだろう。
すぐにエラーにしてしまったほうがいいと思うけど。


275:デフォルトの名無しさん
09/03/01 18:44:49
ちょっと聞いてみたいことがある。

ある辞書の中から、いくつかのキーを持つ要素だけを取り出した部分辞書を作
りたい。

>>> request = {'hoge':1, 'fuga':2, 'piyo':3, ...}
>>> a = {}
>>> for key in ('hoge', 'fuga'):
...   a[key] = request[key]
...
>>> a
{'fuga': 2, 'hoge': 1}

これをもっと簡潔に書く方法は無いだろうか?


276:デフォルトの名無しさん
09/03/01 18:58:39
簡潔か微妙な気もするけど

dict([(key, request[key]) for key in ('hoge', 'fuga')])

277:デフォルトの名無しさん
09/03/01 19:15:26
リスト内包表記を map にしてみた。

dict(map(lambda x: (x, request[x]), ('hoge', 'fuga')))
なんだこの微妙さは。


278:デフォルトの名無しさん
09/03/01 19:37:35
dict([(x,request[x]) for x in request if x in ('hoge', 'fuga')])

279:デフォルトの名無しさん
09/03/01 19:41:54
英語的な連中には
コレが構文的に分かりやすいのかね?


280:デフォルトの名無しさん
09/03/01 20:28:58
内包表記って便利といえば便利だけど
python の魅力・長所である、
「記述内容が形(インデント)で見える」って
ところを完全に無視しているのが何と言うか…

281:デフォルトの名無しさん
09/03/01 21:16:08
え?内包表記、読みやすいじゃん・・・
トリッキーなことやりすぎるとあれだけど。


282:デフォルトの名無しさん
09/03/01 21:17:53
forの左に書けるのが文だけで式が書けないから色々微妙なことをしないといけなくなる

283:デフォルトの名無しさん
09/03/01 21:24:04
>>280
個人的には内包表記は「記述内容が形で見える」ものの最たるものだと思うなあ。

Z = [(x / y if y != 0 else None) for x, y in zip(X, Y)]

となっていたら Z はリストで要素は x / y か None だということが一目で分かるから。

たぶん問題なのは内包表記を入れ子にすると一気に難読化するということかと。
個人的には入れ子にして読みにくくなるぐらいならバラして for 文なりにするかな。

284:デフォルトの名無しさん
09/03/01 22:10:34
276と277の比較なら276のが読みやすい。

285:デフォルトの名無しさん
09/03/01 22:24:53
>>276-278共通して
('hoge', 'fuga')
なんだけど
['hoge', 'fuga']
じゃだめなの?


286:デフォルトの名無しさん
09/03/01 22:34:59
偏向する必要がないならタプルを使う。

287:269
09/03/01 23:05:54
じゃ俺はちょっと違った切り口で。
>>276とほぼ一緒だけどfilter使えばコメント無くても何やってるか分かりやすい。
あとrequestに無いキー持ってこようとしてもエラー吐かない。

request = {'hoge':1, 'fuga':2, 'piyo':3}
def f(x): return x in ('fuga','hoge')
dict([k,request[k]] for k in filter(f,request))

288:デフォルトの名無しさん
09/03/01 23:44:01
遅くね?

289:デフォルトの名無しさん
09/03/01 23:46:22
dict([k,request[k] if k in request else None] for k in ('fuga','hage'))

290:デフォルトの名無しさん
09/03/01 23:54:14
dict{[(k, v) for k, v in request.items() if k in ('fuga','hoge')]}

3.xであれば

{(k, v) for k, v in request.items() if k in ('fuga','hoge')}

291:デフォルトの名無しさん
09/03/01 23:57:35
ごめん、↑のdict{}はdict()だ

292:デフォルトの名無しさん
09/03/02 00:10:11
見つからないkeyは結果からは無くなった方が良いのかな

293:デフォルトの名無しさん
09/03/02 00:14:25
部分辞書だからな

294:デフォルトの名無しさん
09/03/02 09:44:29
URLリンク(blog.livedoor.jp)

>本書を見てびびった人は、以前紹介した「実践Python」を薦めておく。

勧めるなよ(wwwwWwwWwwwWWwwww


295:デフォルトの名無しさん
09/03/02 09:56:50
この本が一番いいんだけどな
URLリンク(www.amazon.co.jp)

296:デフォルトの名無しさん
09/03/02 10:00:33
URLリンク(blog.livedoor.jp)

子飼が紹介するとクソ本認定?

297:デフォルトの名無しさん
09/03/02 15:22:57
Windowsにpythonインストールしたら
付属でついてるpython editorのデバック環境が充実してておどろき
しかしemacs key-bindになれてるからemacs ぽく使える環境で便利なのないでしょうか?
emacsのpython.elはbreak pointの設定が右クリック一発でできなくて使いにくい

298:デフォルトの名無しさん
09/03/02 15:50:51
>>294
その本出版社が潰れて買えなくなってるよ。

299:デフォルトの名無しさん
09/03/02 16:08:32
>>297
じゃぁ右クリック一発でできるように改造すれば?


300:デフォルトの名無しさん
09/03/02 17:00:12
どうみてもクソ本認定です
本当にありが(ry

301:デフォルトの名無しさん
09/03/02 17:06:56
age

302:デフォルトの名無しさん
09/03/02 17:08:06
>>297
xkeymacs入れてしまえ

303:デフォルトの名無しさん
09/03/02 21:22:48
hoge.__setitem__(key, value)

無理やりreduceで書くなら例えば
reduce(lambda d, x: d.__setitem__(x, request[x]) or d, ['hoge','fuga'],{})
こんな書き方になると思うけど、Python使いはこの例を普通こんな風には書かない

dict((k, request[k]) for k in ['hoge','fuga'])
のほうがずっと素直で短く読みやすいからね

304:デフォルトの名無しさん
09/03/02 23:26:46
はぁ?

305:デフォルトの名無しさん
09/03/02 23:35:41
複素演算の構文調べてたら、とあるSEの書いたブログが引っかかったが
そこのサンプルはNameErrorとTypeErrorの出力ばっか張ってあって役に立たなかった

306:デフォルトの名無しさん
09/03/03 00:07:05
reduce とか lambda とかそのうちなくなるだろ。

307:デフォルトの名無しさん
09/03/03 00:34:39
それはそうかもしれないけど、3.0を生き残ったことで想定寿命は激延びな希ガス

308:デフォルトの名無しさん
09/03/03 00:51:03
lambdaって無くなるのかな

309:デフォルトの名無しさん
09/03/03 01:08:45
>>297
IDLEのこと?
OptionsのConfigure IDLEを開いて、KeysでClassic Unixにすれば
C-aで行頭とかになるよ。
C-x C-s みたいなキーシーケンスもできる。

310:デフォルトの名無しさん
09/03/03 01:29:17
lambdaの中で代入とか複数の文とか出来るようになるのはいつ?

311:デフォルトの名無しさん
09/03/03 01:52:36
mapとfilterは最悪消えてもリスト内包表記で書けるけど
reduceって代用あるっけ?

312:デフォルトの名無しさん
09/03/03 01:54:42
どっちみちreduceはfold_left相当でfold_rightはないし
unfoldもないけどな

313:デフォルトの名無しさん
09/03/03 01:56:01
>>310
つーか全部式にしてほしいという発想にはならんのか
文が存在する関数型言語ってあるっけ

314:デフォルトの名無しさん
09/03/03 04:53:23
Haskellのwhereって式?

315:デフォルトの名無しさん
09/03/03 08:02:01
⊂二二二( ^ω^)二⊃

316:デフォルトの名無しさん
09/03/03 09:02:51
>314-315
ナ、ナンダッテー>ΩΩΩ

317:デフォルトの名無しさん
09/03/03 09:53:35
Haskellのwhereはcase式の一部
URLリンク(www.haskell.org)

318:デフォルトの名無しさん
09/03/03 12:15:02
URLリンク(www.atmarkit.co.jp)

319:デフォルトの名無しさん
09/03/03 12:54:49
URLリンク(www.oreilly.com)
この本の日本語版ってありますか?

320:デフォルトの名無しさん
09/03/03 13:34:23
>>245
JCC

321:デフォルトの名無しさん
09/03/03 14:53:57
>>319
この表紙は人を選ぶな…

322:デフォルトの名無しさん
09/03/03 16:16:11
>>321
俺も初めて見たときはこれはさすがにどうかと思ったよ

323:デフォルトの名無しさん
09/03/03 16:23:05
>>319
> URLリンク(www.oreilly.com)

グロ
閲覧注意


324:デフォルトの名無しさん
09/03/03 17:39:28
ただの模様じゃん
なんも樹に成らん

325:デフォルトの名無しさん
09/03/03 23:36:22
俺は樹になる

326:デフォルトの名無しさん
09/03/04 01:06:21
カバーをひっくり返して、好きな絵を描くといいよ。

327:デフォルトの名無しさん
09/03/04 07:15:06
へび(そのものあるいはその絵)を嫌うひとは心理的に

328:デフォルトの名無しさん
09/03/04 09:21:27
そもそも蛇嫌いはpythonでアウトな気がする。

329:デフォルトの名無しさん
09/03/04 12:36:48
Python の由来は Monty Python であって、ヘビは関係ないと Guido は言って
たんだがなー。まあ O'Reilly の表紙にパイソンズ出すわけに行かないか。


330:デフォルトの名無しさん
09/03/04 17:52:34
>>329
Guido的には、元ネタ的にはそうなんだが
オライリーのPython本の絵が蛇になっちゃうのはそりゃ仕方ないよなーってことで
諦めた(受け入れた)、みたいな感じだったかと

331:デフォルトの名無しさん
09/03/04 18:34:07
日本語版はおっぱいでおk

332:デフォルトの名無しさん
09/03/04 20:03:47
>>331
エロ本コーナーに並びそうだな。

333:デフォルトの名無しさん
09/03/04 21:15:19
ジャイソンかサイソン
   どっち?

334:デフォルトの名無しさん
09/03/05 15:44:46
get 333

335:デフォルトの名無しさん
09/03/05 17:29:58
URLリンク(www.python.com)

336:デフォルトの名無しさん
09/03/05 18:16:01
Firefoxでアドレスバーにpythonと打つとpython.jpにつながるのでそれを期待して古いMozillaでやったら
大学のワークステーションでpython.comにアクセスしてしまったでござる

337:デフォルトの名無しさん
09/03/06 02:04:38
アイコンの蛇って名前とか付いてないの?

338:デフォルトの名無しさん
09/03/06 02:11:47
やっぱ時代はRubyだよな

339:デフォルトの名無しさん
09/03/06 02:33:09
ぱいちんこ

340:デフォルトの名無しさん
09/03/06 14:43:06
>>336
俺も間違えたことあるw
.comのほうは海外のエロサイトなんだよな

341:デフォルトの名無しさん
09/03/06 15:47:07
間違えてwww.goo.co.jpを開いちゃったみたいな感じか

342:デフォルトの名無しさん
09/03/06 18:31:59
Webポータルのハズがクルマ、はまだ良いだろ
python~の場合、技術資料のハズがエロサイトだぜ?
自宅で誰も居ないなら別に良いが、会社や学校、家族の目の前で間違えた時は…

343:デフォルトの名無しさん
09/03/06 18:38:36
>>342
いや、goo.co.jpもエロサイトだったんだが(今は無いが)

344:デフォルトの名無しさん
09/03/06 23:17:06
>>335
我が家でBフレッツ導入した時に、「セキュリティ対策ツール」という名前で
マイクロトレンドのOEMでウイルスバスター相当のセキュリティソフトが
1ユーザ分ついてくるのだが、このサイト、しっかりと、プロックしてくれました。
めんどくさいので、プロック解除してまでみたいとは思わん。

345:デフォルトの名無しさん
09/03/07 00:24:10
こういうアドレスを買収しようとしたら
いくらぐらいかかるんかね


346:デフォルトの名無しさん
09/03/07 01:37:51
2万円

347:デフォルトの名無しさん
09/03/07 11:26:51
既に取られてるドメインは2万じゃキツかろう
逆にまだ取られてないドメインならもっと安いが

348:デフォルトの名無しさん
09/03/07 21:48:43
3万円

349:デフォルトの名無しさん
09/03/07 22:37:25
逆にまだ取られてないドメインなら買収とは言わん罠

350:デフォルトの名無しさん
09/03/08 10:16:38
def f(hoge=3, fuga=7):
print (hoge, fuga)
または
f = lambda hoge=3, fuga=7: print (hoge, fuga)
という関数に対して
d1 = {'fuga': 8, 'hoge': 4}
という辞書で
f(**d1)
を実行すると期待通りになるのですが
d2 = {'kane': 1, 'fuga': 8, 'hoge': 4}
という辞書で
f(**d2)
を実行すると'kane'が無いと怒られます
どうすればうまくいくのでしょう

351:デフォルトの名無しさん
09/03/08 10:19:53
訂正します

誤 f = lambda hoge=3, fuga=7: print (hoge, fuga)
正 f = lambda hoge=3, fuga=7: (hoge, fuga)

352:デフォルトの名無しさん
09/03/08 15:09:33
def f(hoge=3, fuga=7, **kwargs):
  print (hoge, fuga)

353:デフォルトの名無しさん
09/03/08 15:49:40
eval("foo(param)")
はうまく動くのに
eval("bar.foo(param)")
が動いたりうごかなかったり
特に

#file a.py
def f():
eval("bar.foo(param)")

#file b.py
a.f()

としたときに動いてくれない

354:デフォルトの名無しさん
09/03/08 16:59:02
質問してるのか、
問題を喚起しているのか、
ツンデレなのか、
はっきりしなさい!

355:デフォルトの名無しさん
09/03/08 17:39:14
eval関係無く動くまい

356:デフォルトの名無しさん
09/03/08 18:00:41
ツンデレです

357:デフォルトの名無しさん
09/03/08 20:43:28
適切に sys.path.append していないと予想

358:デフォルトの名無しさん
09/03/09 01:13:08
通常の仕事にevalなんて使う事ないなぁ。
皆どんな高度なことやってるの?

359:デフォルトの名無しさん
09/03/09 01:32:46
アプリのコマンドライン。
emacsだとM-xに相当か。
制作中はアプリ自身のデバッグにも使える。

360:デフォルトの名無しさん
09/03/09 14:10:34
>>353
#a.py
class Handletest:
def handle(self, methodstr):
result=eval(methodstr,globals(),locals())
return result

if __name__ == "__main__":
import numpy
handletest=Handletest()
print handletest.handle("numpy.linalg.norm([1,2])")#動く




#b.py
import numpy
import a
if __name__ == "__main__":
h= a.Handletest()
print h.handle("numpy.linalg.norm([1,2])")#動かない
-------------
golbals localsに違うものいれないといけないみたいなのだけど
どう入れればいいのかわからない

361:デフォルトの名無しさん
09/03/09 17:10:33
print h.handle("import numpy; numpy.linalg.norm([1,2])")

362:デフォルトの名無しさん
09/03/09 18:39:03
h.handle("numpy.linalg.norm([1,2])", globals(),locals())
h.handle("numpy.linalg.norm([1,2])", {"numpy":numpy}, {})

363:デフォルトの名無しさん
09/03/09 19:35:25
>>360
bでimport numpyしただけだと
bからはnumpyという名前が見えるが
aからは見えないのさ

importはインタプリタにモジュールをロードするだけでなく、
カレントのモジュールにシンボルをインポートするという意味を持っている

364:363
09/03/09 19:47:41
こんだけじゃ説明足りんかな
Pythonのグローバル変数(グローバル環境フレーム)ってのは
インタプリタグローバルじゃなくて、モジュールスコープで別れてるんだよ

モジュールのトップレベルの束縛=グローバル変数
だと思っていい
globals()関数が返すのも、あくまで「そのモジュールの」グローバル変数

365:デフォルトの名無しさん
09/03/09 20:55:55
>>353
#a.py
class Handletest:
def handle(self, methodstr):
import numpy
result=eval(methodstr,globals(),locals())
return result

if __name__ == "__main__":
handletest=Handletest()
print handletest.handle("numpy.linalg.norm([1,2])")

366:デフォルトの名無しさん
09/03/09 21:40:14
import sys
class Handletest:
    def handle(self, methodstr):
        frame = sys._getframe(1)
        return eval(methodstr, frame.f_globals, frame.f_locals)

367:デフォルトの名無しさん
09/03/09 22:01:48
sys._getframeを呼び出してるメソッドは継承すると酷いことになる

368:デフォルトの名無しさん
09/03/10 10:49:07
ウーパールーパーって食えるんだな
URLリンク(www.fnn-news.com)

369:デフォルトの名無しさん
09/03/10 23:18:16
おまえら、金融系とか経済系の
ゲーム作るプロジェクトやりたい?

370:デフォルトの名無しさん
09/03/10 23:33:20
>>369
自分で勉強しろ

371:デフォルトの名無しさん
09/03/10 23:51:17
やりたい

372:デフォルトの名無しさん
09/03/10 23:56:48
プロジェクトというからにはキッチリドキュメントがそろってるんだろうな?

373:デフォルトの名無しさん
09/03/11 00:01:34
>>370
どっちの意味?

プログラムを勉強しろっていみ?
それとも、金融知識を勉強しろっていみ?

374:デフォルトの名無しさん
09/03/11 00:04:55
>>371
金融系のプロジェクトでプログラマー募集したら、
なぜか応募してきたのがpythonのプログラマーなんだよね。

他にも自分が見聞きしてる範囲内で、
「学校を作ろう」とかいう、ふざけたプロジェクトに応募
してたのもpythonのプログラマーだったし、ひょっとして
pythonって、せっかく学んでも、いじるアプリがないから
参加するプロジェクトを探してる状態なんじゃないかなーって
思ったわけだ。

もしこれがPHPだったら、wordpressはあるし、joomlaはあるし、
phpbbはあるし、mediawikiはあるし、で、いくらでもアプリも
プロジェクトもあるし、いじり倒すおもちゃは豊富にあるしで、
プルグラマー募集してもきてくんないんだよね。

でもpythonだったら、いじるおもちゃがない状態だから、
プログラマーが余っていて、わりかし捕獲しやすい
状態なのかなと。

375:デフォルトの名無しさん
09/03/11 00:08:59
>>374
学校を作ろうを馬鹿にするな!!

376:デフォルトの名無しさん
09/03/11 01:13:02
すまんが、真面目な話してるんだ、馬鹿は黙ってくれないか

377:デフォルトの名無しさん
09/03/11 01:20:54
そりゃphpなんかと比べてしまえば
pythonを存分に使わせてもらえるところは少ないだろうね

378:デフォルトの名無しさん
09/03/11 01:36:52
そもそもPythonはRubyより劣るからな。利用価値がまったくない。

379:デフォルトの名無しさん
09/03/11 01:41:20
仕事でゲーム作る人募集って事?

380:デフォルトの名無しさん
09/03/11 02:25:34
>>379
Rubyは優秀だからな。

381:デフォルトの名無しさん
09/03/11 02:49:52
面白そうならなんでもやるぜ

382:デフォルトの名無しさん
09/03/11 03:00:21
ドモホルンリンクルの計測なんてどうだ

383:デフォルトの名無しさん
09/03/11 06:49:10
>>377
phpは優秀だからな。

384:デフォルトの名無しさん
09/03/11 17:52:44
URLリンク(ja.uncyclopedia.info)
わろた

385:デフォルトの名無しさん
09/03/12 08:31:02
日本語のプロジェクトじゃなければ結構あるんじゃね

386:デフォルトの名無しさん
09/03/12 13:19:39
はじパイの第2版が中古で売ってたんだけど今のバージョンって3.0なの?
第2版は2.3までだからもうちょっと新しいのかったほうがいい?

387:デフォルトの名無しさん
09/03/12 13:57:08
>>386
個人的には2.4以降じゃないと嫌だなw
generatorなくてなんのPythonよ

388:デフォルトの名無しさん
09/03/13 01:55:16
UNICODEの扱いがちゃんと載ってるのにしなよ

389:デフォルトの名無しさん
09/03/13 02:56:44
JapaneseCodecsがあれば10年は戦える

390:デフォルトの名無しさん
09/03/13 13:40:57
Windowsで、2.5.2使ってるんだが、code(codeop)の動きがどうもおかしいんだ。

普通にコンソールでは、u''が使えるんだ。

>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\u3042'

だけど、InteractiveConsoleを使うと、

>>> import code
>>> code.InteractiveConsole().interact()
Python 2.5.2 (r252:60911, Mar 27 2008, 17:57:18) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\x82\xa0'

と、u''を正しくdecodeしてくれない。

どうもcodeop.compile_CommandCompilerがこういう動作をしているようで、
IPythonでu''が化けるのも同じ原因のようだ。
Windows版のコンソールは、何か特別なパッチが当たってるんだろうか。
どこか設定をいじってやればコンソールと同じ動きするんだろうか。

まぁunicode('あ')とか書けばいいんだけどなんかくやしい。


391:デフォルトの名無しさん
09/03/13 13:54:02
>>390
2.6.1 amd64 で、 code.InteractiveConsole() では上手く動いたよ。
それでもIPythonはダメ。

392:デフォルトの名無しさん
09/03/13 14:49:33
>>391
2.6.1でやってみた。

>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\u3042'
>>> import code
>>> code.InteractiveConsole().interact()
Python 2.6.1 (r261:67517, Dec 4 2008, 16:51:00) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> 'あ'
'\xe3\x81\x82'
>>> u'あ'
u'\u3042'
>>> unicode('あ')
Traceback (most recent call last):
File "<console>", line 1, in <module>
UnicodeDecodeError: 'cp932' codec can't decode byte 0x82 in position 2: incomplete multibyte sequence
>>> unicode('あ', 'utf8')
u'\u3042'

なぜUTF-8www

2.5でも、codeop.CommandCompilerにunicode渡すとこんな動きになるんで、
ようするに2.6ではraw_inputがunicodeを返すようになっただけでCommandCompilerの挙動は変わってないみたいだ。
IPythonは、渡す前にsys.stdin.encodingでencodeしてるので、2.5と同じ動きになる。

コンソールで使ってるCommandCompilerの正体はいったいどこにあるんだ!?
ソースを読めばいいんだろうが、どこを読めばいいのかすら分からん。

393:デフォルトの名無しさん
09/03/13 15:00:15
【Python】Pylons Web Frameworkスレ
スレリンク(php板)

394:デフォルトの名無しさん
09/03/13 15:03:12
組み込みのcompileを使うと問題がよく分かる。

>>> exec compile("'あ'", '<input>', 'single')
'\x82\xa0'
>>> exec compile("u'あ'", '<input>', 'single')
u'\x82\xa0'
>>> exec compile(unicode("'あ'"), '<input>', 'single')
'\xe3\x81\x82'
>>> exec compile(unicode("u'あ'"), '<input>', 'single')
u'\u3042'
>>>

どうしろってんだ・・・

395:デフォルトの名無しさん
09/03/13 15:57:47
あんまりいい方法ではないと思うけど

import code
import sys

class MyInteractiveConsole(code.InteractiveConsole):
  def __init__(self, *args, **kw):
    code.InteractiveConsole.__init__(self, *args, **kw)
    self.__compile = self.compile
    self.compile = self.mycompile
  def mycompile(self, source, *args, **kw):
    if sys.stdin.encoding:
      if isinstance(source, unicode):
        source = source.encode(sys.stdin.encoding)
      source = "# coding: %s\n%s" % (sys.stdin.encoding, source)
    return self.__compile(source, *args, **kw)

if __name__ == "__main__":
  MyInteractiveConsole().interact()

396:デフォルトの名無しさん
09/03/13 16:15:11
>>395
それだと、結局最初の(2.5の)

>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\x82\xa0'

って挙動になるだけだよね。



397:391
09/03/13 16:23:50
なおした
URLリンク(dsas.blog.klab.org)

398:395
09/03/13 16:33:49
>>396
自分の環境(Windows)では2.5, 2.6でも↓のようになるのを確認したけど、ならない?
(MyInteractiveConsole)
>>> 'あ'
'\x82\xa0'
>>> u'あ'
u'\u3042'

399:デフォルトの名無しさん
09/03/13 18:55:32
ならない
sys.stdin.encoding

どこでも同じとは限らない

400:デフォルトの名無しさん
09/03/13 19:57:05
>>397
うん、それでsys.setdfaultencoding("utf-8")すれば使えるようにはなるんだ。
でもそれだとWindows環境でpysh使ったとき、にほんごファイル名が通らなくなる。(UTF-8に変換されるため。)

UTF-8Cygwin使う、ってのも一長一短だしなあ…

401:デフォルトの名無しさん
09/03/13 19:58:11
>>398
ならないなあ…
環境設定でなんとかなるのなら是非教えてほしい

402:デフォルトの名無しさん
09/03/13 20:42:48
>>400
sys.setdefaultencoding('utf-8') するのは何故?
>>397 の修正だけで、全く問題ないよ?
/open u"ソ.txt"
こんなのも余裕。

403:デフォルトの名無しさん
09/03/13 21:01:23
>>397の修正だとcp932の環境でstrの'あ'が'\x82\xa0'になって欲しいところ
utf8の'\xe3\x81\x82'になっちゃう

404:デフォルトの名無しさん
09/03/13 21:12:13
>>403
なるほど。日本語をcp932でstrで使うなんて発想が無かった。
from __future__ import unicode_literals
して、strと決別しちゃえ。

405:デフォルトの名無しさん
09/03/14 10:25:26
>>402
>sys.setdefaultencoding('utf-8') するのは何故?
cp932だとunicode('あ')でエラーになるからじゃないか?

406:デフォルトの名無しさん
09/03/14 11:20:45
>>405
もともとの defaultencoding は ascii
インタラクティブシェルじゃなくて普通のスクリプトでも unicode('あ') はエラー。

Python3.0からは utf-8 になるから、from __future__ import ??? でやってることと
同じといえるかもしれないけど。

407:デフォルトの名無しさん
09/03/14 12:17:23
>インタラクティブシェルじゃなくて普通のスクリプトでも unicode('あ') はエラー。

馬鹿ですねわかります

408:デフォルトの名無しさん
09/03/14 12:17:35
普段はmbcs,cp932あたりをsys.setdefaultencodingしてるんでしょ、きっと

409:デフォルトの名無しさん
09/03/14 12:31:56
URLリンク(fettig.net)
この本の日本語版っていつ頃出ますか?

410:デフォルトの名無しさん
09/03/14 12:53:32
>>409
このイラストはスパゲティコードの暗示なのか…?

411:デフォルトの名無しさん
09/03/14 13:22:22
MLで翻訳の需要あるか聞かれてたやつだっけ?
とても微妙な反応だったなw

412:406
09/03/14 15:17:31
>>407
何が? u'あ' はOKだけど、 unicode('あ') は
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe3 in position 0: ordinal not in range(128)

>>408
それをさせないように、普通は del sys.setdefaultencoding してあって、
reload(sys)
sys.setdefaultencoding('utf-8')
とかしないと初期値のasciiから変更できないのに、、、

みんなUnicodeはきちんと使おうぜ。外部とのやり取りは encode/decode して、リテラルで使うときは
unicode('ほげ', 'utf-8') じゃなくて u'ほげ' が正解だ。

413:デフォルトの名無しさん
09/03/14 18:10:21
あまりreload(sys)は流行らせるなよ

>>409
twistedは処理がボコボコ切られて正直使いにくいからこれ以上流行って欲しくないなあ

414:デフォルトの名無しさん
09/03/14 18:16:10
>>413
eventletマンセーですねわかります

415:デフォルトの名無しさん
09/03/14 20:16:32
>>408
pyshを長いこと使ってるから
sitecustomize.pyにsys.setdefaultencoding('cp932')と書いて
リテラルはunicode('あ')と書くスタイルが染みついてるw

utf-8にするとマジック関係が動かないからなあ・・・

[C:Documents and Settings/Administrator]|2> cd デスクトップ
[Error 2] 指定されたファイルが見つかりません。: '\xe3\x83\x87\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\x88\xe3\x83\x83\xe3\x83\x97'

IPythonのソースに手を入れたついでに、マジック関係のユニコード化もするか。

とまで考えたところで、なんというか進む方向が酷く間違っている気がしてきたが目をつぶってがんばる

416:デフォルトの名無しさん
09/03/14 20:50:36
つーわけでユニコード化マジックコマンド。

--- C:/Python25/Lib/site-packages/IPython/iplib.py.bak Sat Mar 14 20:41:18 2009
+++ C:/Python25/Lib/site-packages/IPython/iplib.py Sat Mar 14 20:36:39 2009
@@ -936,6 +936,8 @@
valid Python code you can type at the interpreter, including loops and
compound statements. It is added by IPython to the Python builtin
namespace upon initialization."""
+
+ arg_s = unicode(arg_s, 'utf-8')

args = arg_s.split(' ',1)
magic_name = args[0]
@@ -2019,7 +2021,7 @@
# this allows execution of indented pasted code. It is tempting
# to add '\n' at the end of source to run commands like ' a=1'
# directly, but this fails for more complicated scenarios
- source=source.encode(self.stdin_encoding)
+# source=source.encode(self.stdin_encoding)
if source[:1] in [' ', '\t']:
source = 'if 1:\n%s' % source

デフォルトエンコーディングをutf-8にする必要はない(compilerにユニコードを食わせたときにutf-8化するのはデフォルトエンコーディングとは関係がない)。

[C:Documents and Settings/Administrator]|1> cd デスクトップ/
[C:Administrator/デスクトップ]|2>


417:デフォルトの名無しさん
09/03/15 05:39:24
あかん・・・ユニコードリテラルをちゃんと扱えるようになったところで、

print 'あ'

が普通に化けるんじゃ本末転倒だなあ。

418:デフォルトの名無しさん
09/03/15 10:37:01
>>417
from __future__ import unicode_literals
これで全部解決

419:デフォルトの名無しさん
09/03/15 10:51:01
「,」と「%」の記号を16進数にエスケープしたいのですが
re.subを使って置換する方法はありますか?


(1) 'A is 20%, B is 80%'
(2) 'A is 20%25%2c B is 80%25'
(1)を(2)に変換したい。

次のコードでは「\1」は通常の文字列ではないのでうまく動作しない。
import re
txt = 'A is 20%, B is 80%'
print re.sub('([,%])', '%02x' % (ord(r'\1')), txt)

420:デフォルトの名無しさん
09/03/15 11:11:14
>>419
re.sub('([,%])', lambda m: '%02x' % ord(m.group(1)), txt)

421:デフォルトの名無しさん
09/03/15 11:18:06
>>419
urllib.quote(txt)

422:デフォルトの名無しさん
09/03/15 11:46:15
>>418
んだな。~/_ipython/ipy_user_conf.pyのmain関数の最後に、
o.autoexec.append('from __future__ import unicode_literals')
を追加。

2> 'あ'
<2> u'\u3042'
3> u'あ'
<3> u'\u3042'
4> print 'あ'
-------------->print('あ')





423:デフォルトの名無しさん
09/03/15 12:06:10
416のarg_sのユニコード化がエラーになるので削除。
unicode()にユニコード食わせるとユニコードのままにならなかったっけ・・・?
で、デフォルトエンコーディングはcp932かmbcsにしとく必要があるようだ

424:デフォルトの名無しさん
09/03/15 12:25:42
>>423
unicode() の第一引数が unicode オブジェクトの場合は、第二引数があると
エラーになる。
if not isinstance(arg_s, unicode):
    unicode(arg_s, 'utf-8')

425:デフォルトの名無しさん
09/03/15 13:21:20
>>424
なるほど。isinstance()しとくしかないようだなぁ。

というかunicode_literalsのためだけに2.6にあげたよ!あげたよ!

426:デフォルトの名無しさん
09/03/15 13:27:29
>>420,421
ありがとう。

re.sub('([,%])', lambda m: '%%%02x' % ord(m.group(1)), txt)
第二項目が関数だと、Matchオブジェクトを引数にして呼び出されるのか。

urllib.quote(txt)
確かにこの方が簡単ですね。
ただ今回はファイルの後方互換性が必要で、
エスケープするのは記号2種類だけにしたいので
とりあえず文字列置換を使うつもりです。

427:デフォルトの名無しさん
09/03/15 13:45:03
txt.replace('%', '%25').replace(',', '%2c')
じゃいかんの?

428:デフォルトの名無しさん
09/03/15 15:48:38
>>427
Ruby使う事にしたので問題ないです。

429:デフォルトの名無しさん
09/03/15 21:33:17
>>427
今回の場合はそれで十分ですね。
実はPerlのコードを参考に作っているんだけど
Pythonでもコンパイルとかなしで出来るのか知りたかったので
「re.sub」で聞いてみました。

430:デフォルトの名無しさん
09/03/15 21:47:25
パイソンのRadツールって何があります?

431:デフォルトの名無しさん
09/03/15 23:12:03
Rubyですかね。

432:デフォルトの名無しさん
09/03/16 01:08:07
よくわからんが、エンコーディングの設定が間違ってるでFA?

433:430
09/03/16 01:24:58
Rubyにしてみます。

434:デフォルトの名無しさん
09/03/16 02:31:18
あるある

435:デフォルトの名無しさん
09/03/16 02:42:22
こうしたRuby厨の工作によりまともな人はRubyを嫌うのであった

436:デフォルトの名無しさん
09/03/16 03:30:38
てかruby厨ってrubyしか使ったことないかあるいは使えないんでひたすら布教するんだろうな
複数の言語を使いこなせないとは哀れな

437:デフォルトの名無しさん
09/03/16 03:31:47
どこの世界に>>431みたいな布教をする奴がいるんだw

438:デフォルトの名無しさん
09/03/16 04:34:45
もともとはそういう奴らがいたから、現在そういうネタになってるんだよw

439:デフォルトの名無しさん
09/03/16 04:41:44
パールときてルビーときて。
次はどんな宝石だい?

440:デフォルトの名無しさん
09/03/16 05:00:24
満を持してダイヤモ

441:デフォルトの名無しさん
09/03/16 05:08:34
・・・花崗岩とか?

442:デフォルトの名無しさん
09/03/16 10:53:24
トルコ石まで続くかもなw

443:デフォルトの名無しさん
09/03/16 14:34:47
URLリンク(sankei.jp.msn.com)
URLリンク(sankei.jp.msn.com)
URLリンク(sankei.jp.msn.com)
宝石の条件の一つには硬度が高いことも重要である。
これは、硬度が低い鉱物の場合、経年による砂埃(環境に遍在する石英など)による風化・劣化のために、
観賞価値が失われてしまうためである。
例としてダイヤモンドはモース硬度10、ルビー・サファイアはモース硬度9である。
石英のモース硬度は7であり、これらの宝石の硬度は石英のそれより高いことに注意されたい
(オパールなどは例外的に硬度が低い)。
硬度以外の条件として色彩、透明度、希少性など鑑賞的価値・財産的価値・所有の欲求を満たす性質が重要である。

444:デフォルトの名無しさん
09/03/17 12:11:42
>>411
2年前なら確実に買っただろうけどな。

445:デフォルトの名無しさん
09/03/17 14:29:19
reprって何て読むのでしょうか?
また、名前の由来は何でしょうか?

446:デフォルトの名無しさん
09/03/17 14:39:50
representかな?

447:デフォルトの名無しさん
09/03/17 14:41:24
れぷると読んでいる
representだと思っている

俺はな

448:デフォルトの名無しさん
09/03/17 15:13:35
representation、表現

マニュアルを嫁

repr(object)
Return a string containing a printable representation of an object. (...)

449:デフォルトの名無しさん
09/03/17 17:46:09
>446-448
ありがとうございます
マニュアルは和訳しか呼んだことがなくて気付きませんでした…

450:デフォルトの名無しさん
09/03/18 01:31:58
マニュアル読まないと分からない言語って糞じゃないですか?

451:デフォルトの名無しさん
09/03/18 01:39:19
そりゃマニュアル読まずとも理解できればそれにこしたことはないけど、
開発言語くらいの規模だとマニュアルなしでは非常に厳しい。
マニュアル読まずとも習得できる言語ってHQ9+とかのジョーク言語くらいじゃない?

452:デフォルトの名無しさん
09/03/18 02:19:35
IPython使ってるなら ? 付けるだけ。

In [10]: repr?
Type: builtin_function_or_method
Base Class: <type 'builtin_function_or_method'>
String Form: <built-in function repr>
Namespace: Python builtin
Docstring:
repr(object) -> string

Return the canonical string representation of the object.
For most object types, eval(repr(object)) == object.

453:デフォルトの名無しさん
09/03/18 03:01:26
>>> help(repr)
Help on built-in function repr in module __builtin__:

repr(...)
repr(object) -> string

Return the canonical string representation of the object.
For most object types, eval(repr(object)) == object.

454:デフォルトの名無しさん
09/03/18 23:20:58
わかるよ、習うより慣れろってことね。わかります。
だけど、マニュアル見た方が良い場合もある。

バージョンによる文法の違いとか、
他の言語を使ったことがあるけど、pythonに移行したい場合。

help方式は、そもそも、索引する単語が分かっている場合にしか使えない。


455:デフォルトの名無しさん
09/03/19 00:41:47
scipyのバイナリは
SSEがサポートされて無いと使えないんですか?

456:デフォルトの名無しさん
09/03/19 00:55:06
そういう質問してる時点で駄目だと思う

457:デフォルトの名無しさん
09/03/19 01:06:30
んー
CPUがSSE3をサポートして無いといって中断するんだよな。
WinでのbuildについてはOfficialにマニュアルもないし…

ATLASとBLAS入れてMinGWでeasy_installか?

458:デフォルトの名無しさん
09/03/19 09:14:01
Rubyしかないな

459:デフォルトの名無しさん
09/03/19 18:08:57
Cythonって既にpython3に対応してるんだな。
lxmlがpython3に対応したというのを見て初めて知った。

460:デフォルトの名無しさん
09/03/20 02:04:44
パイソン学び始めて1日目ですが
数当てゲームの作り方を
ヒントだけでいいので教えてください。

461:デフォルトの名無しさん
09/03/20 02:34:33
数当てゲームでググる

462:デフォルトの名無しさん
09/03/20 02:55:17
そのぐらい自分で考えてフローチャートでも書いてみれ

463:デフォルトの名無しさん
09/03/20 03:41:11
うおお
頭がパンクしそうだ

464:デフォルトの名無しさん
09/03/20 04:20:42
>>460
import random
while(True):
  print '0-9? ',
  print 'ok' if int(raw_input()) == int(random.random() * 10) else 'bad'


465:デフォルトの名無しさん
09/03/20 04:23:25
>>464
なんか見たこと無い構文がいっぱいorz
プログラミングって難しいですね・・・

466:デフォルトの名無しさん
09/03/20 04:48:52
int(random.random()*10)
よりは
random.choice(range(0, 10))
のほうがよくね?

467:デフォルトの名無しさん
09/03/20 05:04:26
random.randint(0, 9)

468:デフォルトの名無しさん
09/03/20 05:53:35
>>466-467
ありがとうございます
勉強になります

469:デフォルトの名無しさん
09/03/20 05:55:10
毎回乱数発行してたら0~9まで10回入力しても当たらんケースがあるのかw

470:デフォルトの名無しさん
09/03/20 06:01:14
分かってるとは思うけど各回の期待値は1/10だから
10回連続で外れる確率は0.9**9で35%くらいある
逆に乱数一回だけ発行だと10回以内で確実に当たる

471:デフォルトの名無しさん
09/03/20 08:44:10
35%もあるのか

472:デフォルトの名無しさん
09/03/20 10:12:05
そんなことよりエロゲつくってくださいよぉ

473:デフォルトの名無しさん
09/03/20 10:16:37
了解

474:デフォルトの名無しさん
09/03/20 10:39:39
音ゲー作ろうかと思ったけどMIDIわかんえ

475:デフォルトの名無しさん
09/03/20 12:33:21
URLリンク(www13.plala.or.jp)
URLリンク(www13.plala.or.jp)
URLリンク(www13.plala.or.jp)

476:デフォルトの名無しさん
09/03/20 17:05:58
2.6 と 2.5 の共存はどうやるのがいいんでしょうか?
窓環境で ctypes で dll にアクセスする用途で 2.6を
入れたはいいものの、環境変数の設定を 2.5 -> 2.6と
設定し直す手間がとても面倒なんです…

477:デフォルトの名無しさん
09/03/20 17:39:23
そうだね

478:デフォルトの名無しさん
09/03/21 19:58:48
3もでてるのに何で今更2.6が使いたいの?
モジュールの対応状況ならまだ2.5が最良だろ?


479:デフォルトの名無しさん
09/03/21 20:01:37
>>478
3はまだ先行者による地雷発掘中だから一般人は使っちゃダメ。
2.6 に移行して from __future__ しまくるのがベスト。

480:デフォルトの名無しさん
09/03/21 23:37:35
とか言ってる割には
今から使い始めるには3からが良いよ
ってのを良く見るんだが…

まぁ、バグ出しの問題と
仕様変更による混乱回避の問題は別物だけど
使っちゃ駄目ってのもおかしな話だ

だったらリリースすんなよって言われても仕方ない

481:デフォルトの名無しさん
09/03/21 23:53:31
>>今から使い始めるには3からが良いよ
言ってねーよ。少なくとも2chでは…

482:デフォルトの名無しさん
09/03/22 00:10:39
ruby1.9のがはるかに先をすすんでいる。

483:デフォルトの名無しさん
09/03/22 00:12:09
>>482
それは絶対にないwww

484:デフォルトの名無しさん
09/03/22 00:38:56
ipython 重すぎね?
何をそんなにがりがり読み込んでんだよ

485:デフォルトの名無しさん
09/03/22 00:45:05
レジストリ


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch