Pythonのお勉強 Part30at TECH
Pythonのお勉強 Part30 - 暇つぶし2ch1:デフォルトの名無しさん
08/11/16 19:09:55
Pythonオフィシャルサイト
URLリンク(www.python.org)
日本Pythonユーザ会
URLリンク(www.python.jp)
まとめWiki
URLリンク(python.rdy.jp)
関連スレ
URLリンク(find.2ch.net)
前スレ
スレリンク(tech板)

2:デフォルトの名無しさん
08/11/16 19:10:57
おっぱい

3:デフォルトの名無しさん
08/11/16 19:18:26
OOPy オブジェクトオリエンテッドパイソン

4:デフォルトの名無しさん
08/11/16 19:19:30
  _  ∩ 
( ゚∀゚)彡 おっぱいそん!おっぱいそん!
 ⊂彡

5:デフォルトの名無しさん
08/11/16 21:15:07
>>4
www

6:デフォルトの名無しさん
08/11/16 23:12:23
>>1ぱいおつ

7:デフォルトの名無しさん
08/11/17 00:26:19
>>4
これはいいPythonista

8:デフォルトの名無しさん
08/11/17 00:29:57
掲示板作ったよ。
なんかホールとか発見したら教えてね。
しばらくしたら忘れてね。
URLリンク(rail.s4.pf-x.net)

9:デフォルトの名無しさん
08/11/17 00:39:56
LLなんて言ってもアメリカのITトップ企業では通じないから気をつけろ!
メガンテしちゃうぞ!!

10:デフォルトの名無しさん
08/11/17 00:56:26
実際通じないだろ。LLは英語風日本語だから。

11:デフォルトの名無しさん
08/11/17 00:57:00
まあ、英語として使えようが使えまいがSDだが。

12:デフォルトの名無しさん
08/11/17 00:59:00
ちなみにLLVMのLLは、
Low Levelの略である。PythonコミュニティでLLといって場合には
むしろこっちの意味にとられるかもしれないから注意が必要だ。SDですが。

13:デフォルトの名無しさん
08/11/17 01:24:14
おっぱい

14:デフォルトの名無しさん
08/11/17 01:25:42
import urllib
import urllib2
import cookielib

req = urllib2.Request(
    'URLリンク(pc11.2ch.net)',
    urllib.urlencode(
      {
        'bbs' : 'tech',
        'key' : '1226830195',
        'time' : 1,
        'submit' : u'書き込み'.encode('sjis'),
        'FROM' : '',
        'mail' : 'sage',
        'MESSAGE' : u'おっぱい'.encode('sjis'),
        'suka' : 'pontan'
        }
      ),
    {'Referer' : 'URLリンク(pc11.2ch.net)'}
    )
opener = urllib2.build_opener(
    urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
res1 = opener.open(req)
if '<!-- 2ch_X:cookie -->' in res1.read():
    res2 = opener.open(req)

15:デフォルトの名無しさん
08/11/17 03:21:58
while 1:
    print u"おっぱい"

16:デフォルトの名無しさん
08/11/17 04:40:09
while 1:
  print u"( ゚∀゚)o彡°おっぱい!おっぱい!"

17:デフォルトの名無しさん
08/11/17 07:57:46
PythonコミュニティでLLといって場合にはRuby信者にメガンテされてしまうかもれないから注意が必要で。
まあ俺はアメリカのITトップ企業につとまっているので日本語のおかしいなってきた。

18:デフォルトの名無しさん
08/11/17 18:50:15
日本語情報少ないpythonを使うメリットって何?
Rubyの方が優れてない?


19:デフォルトの名無しさん
08/11/17 18:57:52
今は日本語情報サイトの数は十分だと思うよ。日本産のRubyには負けるだろうけど。
PythonはOSとかの環境を気にせず使えるのが最大の利点かな。

20:デフォルトの名無しさん
08/11/17 19:18:03
日本語情報少ないか?

21:デフォルトの名無しさん
08/11/17 19:43:58
導入部分はそれなりに情報あるけどさ、フレームワークの情報とかやっぱり少ないよ。
Ruby、というかRailsに持ってかれちゃった感が拭えない。


22:デフォルトの名無しさん
08/11/17 19:44:28
>>18
RubyがPythonをかなりパクってる為、言語としてはそこまで変わ
りはないが、世界ではPython人口の方が圧倒的に多く (企業/政府機関で
もGoogle、NASA、Appleを筆頭にPythonを全面的に促進)、
ライブラリの数も多いから、やろうと思えばなんでもプログラムできる。
Pythonの方が年配だから、プロジェクト/プログラム例も盛り沢山。
それに gtk、gimp、pidgin など、LinuxやUnixではPythonを
様々なコンポーネントで有効活用しているから、沢山遊べる。
シンタックスもPythonの方が綺麗。
Pythonの作者は まつもとゆきひろ とは違って、DQN気味ではない。

どうも見ても Python の方が有利だし、Pythonを学ぶのが吉。


23:デフォルトの名無しさん
08/11/17 19:47:51
日本語情報が少ないのだったら、英語情報にあたればよいだけ。

24:デフォルトの名無しさん
08/11/17 19:53:19
Pythonの方がライブラリが充実してるから。これにつきる。
言語を選択する際のライブラリの充実度はかなり重要。
文法だけならPythonやRubyよりも好きな言語は沢山あるんだけど、
マイナーすぎてまだつかえない。

25:デフォルトの名無しさん
08/11/17 20:06:08
Django使ってる俺はここでは少数派かい?

26:デフォルトの名無しさん
08/11/17 20:07:01
>>25
俺も使ってるよ。
あと、 Google App Engine 使ってる人の多くは Django を使ってると思う。


27:デフォルトの名無しさん
08/11/17 20:27:09
>>18
なんつうかRubyだのPythonだのよりまず先に英語を学べ

28:デフォルトの名無しさん
08/11/17 20:35:58
>>24
.NETやJVMにタダ乗り系の奴は、マイナーでも
自動的にライブラリは充実してることになるよな

29:デフォルトの名無しさん
08/11/17 20:40:20
.netにもIronPythonがあるからな。
.netなしでも動くPythonの価値。
マイナーってホントマイナーな奴。

30:デフォルトの名無しさん
08/11/17 20:42:35
Linux、Unix、Mac、Windows、全てのOSで強いのが Python。

31:デフォルトの名無しさん
08/11/17 20:49:25
PythonだろうがRubyだろうが何だろうが、
自分で海外の資料よみあされないと、
プログラマとしての能力に限界を設けることになるからな。

32:デフォルトの名無しさん
08/11/17 20:59:43
まあ大学院生とかでも英論文読めないとかあり得んだろ
それと一緒だ

つうか英語以上に学んで役に立つプログラミング言語はねえぞ

33:デフォルトの名無しさん
08/11/17 21:05:46
英語はプログラミング言語じゃねぇ!
自然言語だ!
このケツ毛野郎が!

34:デフォルトの名無しさん
08/11/17 21:06:31
「英語以上に」は「学んで役に立つ」にかかってるんだよ

35:デフォルトの名無しさん
08/11/17 21:48:20
>>1
乙Python

36:デフォルトの名無しさん
08/11/17 21:56:05
で、お前らはGAE使ってるの?
最近全然聞かないんだけど。

37:デフォルトの名無しさん
08/11/17 21:58:49
ココの住人でライブラリつくったら、
OpPythonとかになるんだろ?

38:デフォルトの名無しさん
08/11/17 22:06:12
いいえ、pyPanを作ります。

39:デフォルトの名無しさん
08/11/17 22:14:25
実際CPANの真似しなくて本当によかったと思ってる

40:デフォルトの名無しさん
08/11/17 22:16:51
>>22
>RubyがPythonをかなりパクってる為
これはダウト。RubyはPerlやLispをパクってるけど、Pythonからはかけらもパクってないだろ。

>ライブラリの数も多いから、やろうと思えばなんでもプログラムできる。
これはPythonに限らずRubyでもPerlでもJavaでも同じだろ。

>>24
>Pythonの方がライブラリが充実してるから。これにつきる。
これはないって。RubyもPerlもJavaも同じようなもん。他の言語をろくに知らないと、こういう見方になるのか。

Pythonにも痛い信者がいるもんだな。もっと冷静な人ばかりだと思ってた。

>>30
>Linux、Unix、Mac、Windows、全てのOSで強いのが Python。
確かに、WIndowsでの動作はPythonは比較的良い。Javaがいちばんだけど。
でもPythonはWindowsではファイルロックができんからなー。あれはなんとかならんのか?

41:デフォルトの名無しさん
08/11/17 22:17:34
俺、パイパンが好き。
とか言ってたら変態だからな。

42:デフォルトの名無しさん
08/11/17 22:21:29
もうちょっとがんばれ!

43:デフォルトの名無しさん
08/11/17 22:24:55
>>40
うそうそ、全部嘘。
みんな名前のH度でPython選んでるに決まってるじゃん。
俺もそうだ。

44:デフォルトの名無しさん
08/11/17 22:31:14
>>40
なんでJavaが入ってるの?これだからJ厨は…

45:デフォルトの名無しさん
08/11/17 22:41:41
portalocker
URLリンク(code.activestate.com)

46:デフォルトの名無しさん
08/11/17 22:45:33
何が何をパクろうがどうでもいい。
大事なのは何が一番馴染むか。
もちろん俺はおっぱいそんだがな。

47:デフォルトの名無しさん
08/11/17 22:46:44
Javaのような糞重い言語がいいなんて言うやつ何なの?

48:デフォルトの名無しさん
08/11/17 22:52:13
あれは大量にメモリ食うしロードは糞遅いけど
演算速度はPythonより早いから

49:デフォルトの名無しさん
08/11/17 23:02:12
>>40
> でもPythonはWindowsではファイルロックができん
ctypesで別に何でもできるが
msvcrt.locking
というのがある

が、Windowsでのプロセス間排他はMutexやSemaphoeのほうが一般的だろう



50:デフォルトの名無しさん
08/11/17 23:03:34
Java使うくらいならCで拡張モジュール書けよ

51:デフォルトの名無しさん
08/11/17 23:07:18
Javaみたいな中途半端が一番使いにくいよな。
まさにC/C++とPython/Rubyみたいなのを両刀できないやつの
逃げ道w

52:デフォルトの名無しさん
08/11/17 23:18:13
Javaにはctypesのようなffiが無いし、JNIは異常に使いにくいからなあ
PythonにはPsycoもboost.pythonもCythonもScipy.weaveもある

53:デフォルトの名無しさん
08/11/17 23:41:11
JavaにPsycoは要らないだろ。HotSpotあるのに。

54:デフォルトの名無しさん
08/11/17 23:43:56
ああ、Psycoは「Javaに対して」有利な点にはなってないな

55:デフォルトの名無しさん
08/11/18 00:39:44
Pythonは適当に書いたスクリプトを、普通にライブラリモジュールとしして使えるのが魅力。
モジュールを作るのがこれほど手軽な言語は他に知らない。

56:デフォルトの名無しさん
08/11/18 00:42:53
>>40
メガンテという魔法を使えばファイルロックできるよ。

57:デフォルトの名無しさん
08/11/18 02:01:03
メガザルロック

58:デフォルトの名無しさん
08/11/18 02:01:42
OpenOfficeライブラリOoo.py

59:デフォルトの名無しさん
08/11/18 02:02:35
Pythonで書かれたPythonインタプリタは、PyPy

60:デフォルトの名無しさん
08/11/18 02:04:24
CPANのPython版はPyPI

61:デフォルトの名無しさん
08/11/18 02:30:01
Pythonで書かれた 円周率計算プログラム。Pyπ

62:デフォルトの名無しさん
08/11/18 08:56:53
ごめん。目の前が真っ暗だ。
12月が山だと思う。察してくれよみんな。

63:デフォルトの名無しさん
08/11/18 10:53:30
pythonを最適化された高速ネイティブコードに変換してくれるコンパイラがほしいぞ

64:デフォルトの名無しさん
08/11/18 12:53:54
>>63
psyco

65:デフォルトの名無しさん
08/11/18 13:49:40
え?psycoってネイティブコード吐けるの?

66:デフォルトの名無しさん
08/11/18 14:18:10
なんでCで拡張しないの?馬鹿なの?

67:デフォルトの名無しさん
08/11/18 15:19:15
.


68:デフォルトの名無しさん
08/11/18 15:22:53
普段と同じように振る舞っているのは空元気だと気づいてくれよ。
ごめん、ほんとうにごめん。もう駄目だ。

69:デフォルトの名無しさん
08/11/18 15:27:03
ごめん。がNGワードって事で。

70:デフォルトの名無しさん
08/11/18 15:47:36


71:デフォルトの名無しさん
08/11/18 15:54:25


72:デフォルトの名無しさん
08/11/18 15:54:47
ごめん駅でごめん

73:デフォルトの名無しさん
08/11/18 15:59:30
なはり駅でなはり

74:デフォルトの名無しさん
08/11/18 15:59:48


75:デフォルトの名無しさん
08/11/18 16:00:40


76:デフォルトの名無しさん
08/11/18 19:20:33
で、どこに行けばDjango使いに会えるの?
Google groupのDjango usersぐらいしかないんだけど。

77:デフォルトの名無しさん
08/11/18 21:35:14
久々にこの板に来てみたんだけど、
Google App Engineのスレさえないんだね。
しかもPythonスレでも全然話題になってないとは・・・


78:デフォルトの名無しさん
08/11/18 21:37:36
最初はなったが・・・
弄ってる人はここで話してもしょうがないからねぇ・・・

79:デフォルトの名無しさん
08/11/18 22:43:09
大規模なものを書けば書くほど、Javaとの手間の差がなくなってくるのは気のせい?

80:デフォルトの名無しさん
08/11/18 23:31:14
>>79
Javaはstrutsの悪いイメージが・・・

81:デフォルトの名無しさん
08/11/19 00:48:29
>>77
Google App Engine
スレリンク(php板)

82:デフォルトの名無しさん
08/11/19 01:09:57
>>76
会ってもしょうがないよ。
落胆するだけ。

83:デフォルトの名無しさん
08/11/19 02:15:50
161は完全にいなくなっちゃったね。
勿体無い。

思うのはさ、「ウンコに触れたら自分もウンコ臭い」ってことだと思うんだ。
(ww辺りをNGに設定してさ、極力スルーしようよ。
皆で頼み込めばID実装されるかもしれないしさ。
これじゃpythonスレとしての機能を果たしてないよね。

84:デフォルトの名無しさん
08/11/19 02:16:16
国籍法改正案について語ろうぜ

85:デフォルトの名無しさん
08/11/19 03:01:43
>>84
スレリンク(tech板)
そっちでやれ

86:デフォルトの名無しさん
08/11/19 10:42:04
import 外国人 as 選挙の票

87:デフォルトの名無しさん
08/11/19 10:43:17
>>79
javaと根本的に違うって感じは確かにしないね

88:デフォルトの名無しさん
08/11/19 13:14:44
簡単に済む仕事がちゃんと簡単に済むようになっているのは十分有難いことだぞ

ま、シリアスなタスクはPythonではやりたくないがな
性能は最初から求めないにしても、リソースリーク、排他制御が問題になるような
タスクは嫌だ

89:デフォルトの名無しさん
08/11/19 15:13:24
便利なpythonのプログラム作ったけど
自分だけの秘密ツールにするか
公開してしまうか悩むな

90:デフォルトの名無しさん
08/11/19 15:20:16
ここで審議してあげるのでうpしなさい

91:デフォルトの名無しさん
08/11/19 15:21:18
>>89
公開すると後悔するよ

92:デフォルトの名無しさん
08/11/19 15:23:18
>>89
どんなツールかだけでも書けばいいのに。

93:デフォルトの名無しさん
08/11/19 15:24:01
>>89
とりあえず何するプログラムか言え

94:デフォルトの名無しさん
08/11/19 15:30:59
掲示板とかです。
ダンジョーを使って作りました。

95:デフォルトの名無しさん
08/11/19 15:36:43
>>94
ダンジョーってなに? Djangoのことか?
別に公開しても問題ないでしょ。
launchpad あたりにあげてくれれば、参加できるけど。

96:デフォルトの名無しさん
08/11/19 15:42:34
wgsiとかもです。
パイソンで書きました。

97:デフォルトの名無しさん
08/11/19 15:53:20
「じゃんご」
"dg" にこだわるなら「ぢゃんご」

98:デフォルトの名無しさん
08/11/19 15:58:22
>>76
な、94とか95とか97みたいな奴ばっかりなんだって。
会っても意味ないよ。

99:デフォルトの名無しさん
08/11/19 16:16:04
全く辻褄が合っていない >>98

100:デフォルトの名無しさん
08/11/19 17:13:23
(゚Д゚;) ダ、ダンジョー?

101:デフォルトの名無しさん
08/11/19 18:15:57
>>89
こんなとこで公開すると、変なやつに粘着されるぞw

102:デフォルトの名無しさん
08/11/19 18:39:33
それなりに優れたコードなら公開しなくても
興味持って聞いてくる奴が出てくる。
それからでも遅くない。

103:デフォルトの名無しさん
08/11/19 18:58:37
TurboGears、Django両方使ったことある奴ってここにいる?

104:デフォルトの名無しさん
08/11/19 19:12:11
おれ。

105:デフォルトの名無しさん
08/11/19 19:24:28
>>104
どっちが柔軟に感じる?

106:デフォルトの名無しさん
08/11/19 19:57:03
>>105
djangoだね。turbogearsは落ち目だから、もうやめたほうがいいよ。

107:デフォルトの名無しさん
08/11/19 20:02:15
djangoに遅延評価はいってるけど
どんな使いかたするのかのいい例がみつからない

108:デフォルトの名無しさん
08/11/19 20:05:28
>>106
TurboGears、落ち目か。
pylonsと統合するとかいう話はどうなったんだろう。

俺としては、Djangoは便利なんだけど、認証まわりの拡張性がイマイチだと思うのよ。


109:デフォルトの名無しさん
08/11/19 20:16:30
>>108
> 俺としては、Djangoは便利なんだけど、認証まわりの拡張性がイマイチだと思うのよ。

それは実際当たってるね。
セッション、ユーザーログインなど、ユーザーの情報をdjangoで有効活用するように
するには、多少のプログラミングが必要となる。
あと、個人的にはtemplateへの文字列が atuto escape になったのが嫌い(解除できるけど)。


110:デフォルトの名無しさん
08/11/19 20:23:40
ていうかDjangoのORマッパーとか低機能すぎだろ。

111:デフォルトの名無しさん
08/11/19 20:36:07
>>110
そんなに困ったことはないなあ。
いざとなったらカスタムSQL書けばいいし。

112:デフォルトの名無しさん
08/11/19 20:38:34
>>110
多くの開発者は満足しているようなんだけど、
Django の ORM のどの辺が "低機能すぎ" なの?
どこが改良できそうなの?
DBスキーマのラッパーなんだから、DBの機能よりは
フレキシブルにはいかないのはしってるよね。

113:デフォルトの名無しさん
08/11/19 20:42:19
Djangoユーザ怖ええ(wwwww

114:デフォルトの名無しさん
08/11/19 20:46:17
>>76
な。111とか112みたいなやつばっかりなんだって。

115:デフォルトの名無しさん
08/11/19 20:48:10
113 = 114


116:デフォルトの名無しさん
08/11/19 20:52:01
>>114
106も追加しといて.

117:デフォルトの名無しさん
08/11/19 20:59:39
>>98=>>101=>>113=>>114=>>116
また君か、自演君。
もう邪魔なんで消えてくれないかね。

118:デフォルトの名無しさん
08/11/19 21:03:44
>>117
TurboGearsとPylonsとDjangoどれが好き?

119:デフォルトの名無しさん
08/11/19 21:09:29
web.py

120:デフォルトの名無しさん
08/11/19 21:09:50
zope3

121:デフォルトの名無しさん
08/11/19 21:23:03
>>117
オマエガナー

122:デフォルトの名無しさん
08/11/19 21:26:33
>>119
web.py作ってた人たちはPylonsに移行したんだぜ。

123:デフォルトの名無しさん
08/11/19 21:49:17
ダンジョーってなんだよ(w

124:デフォルトの名無しさん
08/11/19 22:39:33
pythonも昔は「ぴちょん」とか読まれたりしてた

125:デフォルトの名無しさん
08/11/20 00:51:05
いまでもうっかりすると IDLE に「ぴちょn」とか打っちゃう。


126:デフォルトの名無しさん
08/11/20 06:34:57
pyてょn

127:デフォルトの名無しさん
08/11/21 01:40:50
@PAGESの広告いつの間にか増えてる
優良鯖が有料鯖になりそうだ…

Python使える無料鯖って少ないよな

128:デフォルトの名無しさん
08/11/21 01:53:00
国外でも少なめなのかな。
でもPython使う様になるんだと
VPSとか金払ってしっかり環境整えたいから
気にしないなあ。‥嘘ですが

129:デフォルトの名無しさん
08/11/21 10:09:14
任意の深さのlisp要素にmapってできないの?

130:デフォルトの名無しさん
08/11/21 10:10:27
Pythonとlispの夢の競演

131:デフォルトの名無しさん
08/11/21 11:09:37
Djangoはすばらしいと思うが使ってる奴はイタいな(w

132:デフォルトの名無しさん
08/11/21 12:02:38
「おれがDjangoだ!」って奴ばかりだからな。

133:デフォルトの名無しさん
08/11/21 12:59:46
ダンジョーのひとたちは広めたいのか自己主張をしたいのかよく分からないです。
後者だとしたら、たいしたことないくせに身の程知らずが、と思います。

134:デフォルトの名無しさん
08/11/21 13:17:24
django をダンジョーと呼ぶ低能人間の方が身の程知らずだと思うけどな。

135:デフォルトの名無しさん
08/11/21 13:19:23
dyango七人夏物語

136:デフォルトの名無しさん
08/11/21 13:31:04
ダンジョーってDajngoのことを言っていたのか
よく気がついたな >134

137:デフォルトの名無しさん
08/11/21 13:57:37
>>136
>>94-95

138:デフォルトの名無しさん
08/11/21 13:58:34
松永弾正

139:デフォルトの名無しさん
08/11/21 16:04:09
痛いDjango野郎を"ダンジョー"と呼ぶことにしませんか。

140:デフォルトの名無しさん
08/11/21 16:05:41
>>135
アッーーー!!

141:デフォルトの名無しさん
08/11/21 16:30:03
>>129
普通に出来ると思うけど。どのような利用例を想定してる?
ロジック部分の関数とデータ所得(任意の深さにアクセス)を分けるなら単にネストでok。
map(func, map(lambda x:x[0][1][2], alist))

142:デフォルトの名無しさん
08/11/21 16:52:54
再帰的に map してくれる map がほしい、ってことでそ

143:デフォルトの名無しさん
08/11/21 17:15:22
>>133
自己主張という名の自慰行為を見せ合って喜ぶ変態集団,というようななところか。

144:デフォルトの名無しさん
08/11/21 17:18:21
西部警察「Django!!」

145:デフォルトの名無しさん
08/11/21 17:35:30
def treemap(f, xs):
  for x in xs:
    if hasattr(x, "__iter__"):
      yield list(treemap(f, x))
    else:
      yield f(x)

こんなもんでいいんじゃね

146:デフォルトの名無しさん
08/11/21 17:44:30


147:デフォルトの名無しさん
08/11/21 17:48:12
def recursive_map(fun, arg):
 def f(a):
  if hasattr(a, "__len__"):
   return map(f, a)
  else:
   return fun(a)
 return f(arg)

148:デフォルトの名無しさん
08/11/22 13:17:09
Pythonクックブック第二版を買ったんだけど
サポートサイト(URLリンク(python.is-a-geek.org))が潰れてるみたい
なんだよね。どっかに正誤表ないかな?

149:デフォルトの名無しさん
08/11/22 13:48:23
Python 3.0 rc3 released

150:デフォルトの名無しさん
08/11/22 22:47:05
Linuxの上でPyQt4のQTextEditなんかで日本語入力したいんだけど、
どうすればいいか分かりますか?
scim使ってるので
XMODIFIERS="@im=scim"

LANG=ja_JP.eucJP
とかしてるんですが、全然だめです。


151:デフォルトの名無しさん
08/11/22 23:25:50
qtが直接scimとやりとりするように、
scim-qtimm 入れて QT_IM_MODULE=scim ってしないと駄目じゃないかな?
つーかPythonの話ではないな。

152:デフォルトの名無しさん
08/11/23 08:28:37
ありがとです。
そうですね、QTの話だなと思い直してググったら
scim-bridgeという奴ならという情報があったので
それを使ったら入力できるようになりました。
ただscimで入力できていたktermやFirefoxでは
だめになったので、scimとscim-bridge並走状態…
とりあえずはいいか…

unicodeが普通に使えるようになってPyQt4での
日本語の扱いも楽になりましたね。


153:デフォルトの名無しさん
08/11/23 13:51:04
PythonインタプリタをPythonで作っているのですが、相談したい事があります。

現在入力中の文がコマンドとして
1 途中なのか、2 エラーなのか、3 コンプリートしたものか
判断する方法はないでしょうか?

1の例
for i in range(1, 3): ←これだけ入力されたら続きがある

2の例
j = foo() ←fooという関数はない

3の例
1+2 ←文として評価する事ができる

アドバイス頂けたら幸いですm(__)m

154:デフォルトの名無しさん
08/11/23 14:10:53
Lib/code.py

155:153
08/11/23 15:08:54
>>154
ありがとうございます。
見てみまする。

156:デフォルトの名無しさん
08/11/23 15:13:15
>>153
pypy

157:153
08/11/23 16:20:16
>>156

なんですか、そのいやらしい名前は。
ありがとうございます。

158:デフォルトの名無しさん
08/11/23 19:59:53
>>152
scimでもscim-bridgeでもuimでも問題ないだろ。
つーかLANG=ja_JP.eucJPってどんな化石なディストリ使ってるんだよ。

159:デフォルトの名無しさん
08/11/24 16:16:54
>>156
マジで有るのか。
「パイパイいれていじってみたんだけど良いなコレ。」
「パイパイちょっと触ってみたんだけど、まだ発展途上じゃね?」
みたいな会話が繰り広げられているのか。

160:デフォルトの名無しさん
08/11/24 19:50:05
こんなプログラムが必要になった。
temp=lst[i]; lst[i]=-1; i=temp #(1)

pythonではこんな見苦しい一時変数は必要ないもんね。と思い次のように書いた。
i, lst[i] = lst[i], -1 #(2)

賢明な諸兄はお気づきかと思うが、このプログラムは上手くいかない。
半日悩んだ結果、次のように書けばよいことが判った。
lst[i], i = -1, lst[i] #(3)

で、教えて欲しいんだけど、(2)が駄目で、(3)なら良いというこの動作は
うちの環境ではたまたま動くだけ? それとも公式に規定された動作ですか?

### 結局、プログラムは(1)の書き方で完成しました。

161:デフォルトの名無しさん
08/11/24 20:15:08
これのWARNINGのところじゃない?
URLリンク(www.python.org)
URLリンク(www.python.jp)

162:デフォルトの名無しさん
08/11/24 20:27:12
>>160
URLリンク(www.python.org)
> If the target is a target list enclosed in parentheses or in square brackets:
> The object must be a sequence with the same number of items as there are targets
> in the target list, and its items are assigned, from left to right, to the
> corresponding targets.

左から右の順で代入するとあるので公式に規定された動作といえそう。


163:デフォルトの名無しさん
08/11/25 03:29:32
Rubyだとruby会議みたいなイベントが全国であるけど、
Pythonにもそういうイベントってある?

164:デフォルトの名無しさん
08/11/25 08:34:11
>>163
PyConじゃね?

165:デフォルトの名無しさん
08/11/25 08:56:23
URLリンク(pyspa.org)

166:デフォルトの名無しさん
08/11/25 09:37:52
ないわ~

167:デフォルトの名無しさん
08/11/25 11:56:27
>>163
残念ですが、なくなったようです。

168:デフォルトの名無しさん
08/11/25 12:52:26
だからRubyやれって!

169:デフォルトの名無しさん
08/11/25 17:18:14
>>167
PyConって無くなったの?
知らなかった...orz....Pythonもうダメだ....。


170:デフォルトの名無しさん
08/11/25 17:19:02
そうだねRubyもうダメだね

171:デフォルトの名無しさん
08/11/25 17:34:31

>>167=>>169
おい、デマばっか流してんじゃねーよ。

PyCon は今年もあったし、来年もちゃんとある。
URLリンク(www.python.org)

せいぜいお前は Python の人気を妬む Ruby使いってとこだろうが、
大人気ないぞ。


172:デフォルトの名無しさん
08/11/25 17:36:51
Ruby使いがPythonの「人気」に嫉妬することはなかろ

173:デフォルトの名無しさん
08/11/25 17:46:13
>>167
ダンジョー乙

174:デフォルトの名無しさん
08/11/25 18:01:24
だからRubyやれって!
日本でpython使うメリットなんてないんだよ。

175:デフォルトの名無しさん
08/11/25 18:27:39
rubyにnumpyに相当するものあるの?

176:デフォルトの名無しさん
08/11/25 18:45:13
Ruby 使いは痛々しいな。。。
なんだ >>174 は、
恥というものを知らんのか。

177:デフォルトの名無しさん
08/11/25 18:56:11
>>173
いいえ、ターボギアスR2です。

178:デフォルトの名無しさん
08/11/25 19:01:46
またruby厨が荒らしてるよ

179:デフォルトの名無しさん
08/11/25 19:19:21
>>174
惨めなやつ!

180:160
08/11/25 20:06:14
>>161,162
なるほど、ちゃんと公式ドキュメントに書かれてたんですね。
「are not safe 安全でない」の解釈が微妙ですが、
規定された動作と考えてよさそうですね。

勉強になりました。ありがとうございました。

181:デフォルトの名無しさん
08/11/25 20:20:07
LinuxのX端末上で文字の色を反転させて出力する方法はありますか?

例えば、

txt="abcdefg"
5番目と7番目(インデックス4と6)の文字の表示色を反転
print txt

みたいなことを望んでいます。

182:181
08/11/25 20:24:00
追記
文字と文字の背景の色を反転という意味です。

183:デフォルトの名無しさん
08/11/25 20:58:49
もちろんできます。

184:sage
08/11/25 21:00:56
エスケープシーケンス使えば。
URLリンク(www.siafoo.net)

もっと凝りたいなら、cursesで。

185:デフォルトの名無しさん
08/11/25 21:03:19
X端末なつかしいな。

186:181
08/11/25 22:33:33
>>184
ありがとうございます。
エスケープシーケンスを使うことにしました。


187:デフォルトの名無しさん
08/11/26 14:44:10
>「are not safe 安全でない」の解釈が微妙ですが、

「全く安全という訳ではない」



188:デフォルトの名無しさん
08/11/26 19:02:41
turbogearsスレにも書いたのですが、過疎ってるようなのでこちらで質問させてください。

turbogearsを構成している各eggファイルをダウンロードして、turbogearsのインストールを行いたいのですが、
公式サイトのファイルリストのどのファイルをダウンロードすればいいのでしょうか。
ちなみにWindows環境です。


189:デフォルトの名無しさん
08/11/26 19:15:30
URLリンク(nagosui.org)

190:デフォルトの名無しさん
08/11/26 19:20:15
URLリンク(docs.turbogears.org)
URLリンク(docs.turbogears.org)


191:デフォルトの名無しさん
08/11/26 19:27:41
>>189
ご紹介いただいたページは既に拝見しました。
プロクシ環境なのでこの方法が使えません。

そこで、上記サイトのオフラインインストールマニュアルを見たのですが、
"基本的に最新バージョンの各パッケージのeggファイルを落とせばいいけど、lightbox等の一部のパッケージは除く"みたいな表現があったので、悩んでます。
これらのファイルはダウンロードしなくていいって事なんですかね?

192:デフォルトの名無しさん
08/11/26 19:35:23
いいんじゃない?

193:デフォルトの名無しさん
08/11/26 19:38:57
>>192
そうですか。では、インストールしてみます。
ありがとうございました。

194:デフォルトの名無しさん
08/11/27 00:00:43
質問です。
Pythonで数独を解くプログラムを書きました。
色々いじってPenIII933MHzでPsycoなしで70秒、Psycoありで
25秒くらいで回答できるようになりました。
さらに高速化しようとboost.pythonを利用してC++に
移植したのですが返って遅くなってしまいました。
何が原因でしょうか?必要であればソース出します。

195:デフォルトの名無しさん
08/11/27 00:11:03
>>194
よくわかんねえな。つうかそんなの組み方次第じゃないの。

数独解くプログラムって
URLリンク(codepad.org)
こんなもんでいいの?
C/CLLなら瞬殺だと思うけど。

196:デフォルトの名無しさん
08/11/27 00:11:58
>>194
>PenIII933MHz

ワーキングプアかよ(wwWwwwWWWwwwwWwwWwwww

197:デフォルトの名無しさん
08/11/27 00:26:59
>>195
回答ありがとうございました。ほとんど同じコードをPythonで書いていました。
あまりC++が詳しくないので、おっしゃられるとおりC++での組み方が
悪いだけなのだと思います。勉強しなおしてきます。

198:195
08/11/27 00:44:36
CLLって何だw
C++のtypoね

>>197
ロジックが同じようなもんなら、とりあえず以下の点が疑わしいかなあ

・最適化していない(コンパイルオプションの問題)
・最近のVC++を使っているなら、vectorとかを使うと、[]演算子でもデフォルトで
 範囲チェックがなされている可能性が高い(俺も細かいことは知らん)


199:デフォルトの名無しさん
08/11/27 00:57:35
>>198
Pythonでは
URLリンク(codepad.org)
という感じでした。

C++はおっしゃられるとおりvectorを多用していました。
boost.pythonがどうこういう以前の話だったようです。
勉強になりました。

200:デフォルトの名無しさん
08/11/27 01:07:40
おお、すごい2chにpostで投稿できた。

201:デフォルトの名無しさん
08/11/27 01:07:55
>>199
vector<>は別に悪者じゃなくて、C++ならそれが普通なんだけどね
VC++は最近セキュリティがらみで色々やってるみたいだから

SECURE_SCLだったかな?そのへんのキーワードでぐぐってみるといい

202:デフォルトの名無しさん
08/11/27 01:10:31
>>198
スレ違いだが、vectorの仕様では、
oprator[]は範囲チェックなし、
範囲チェックしたければメンバー関数at(i)を使うことになっている。


203:デフォルトの名無しさん
08/11/27 01:12:55
>>202
仕様ではそうなっていてもVC8以降は_SECURE_SCLが効いてると
operator[]の範囲チェックをするようになっていた気がする

だから、[]演算子「でも」と書いたんだけどね

204:デフォルトの名無しさん
08/11/27 05:32:11
vectorは要素コピーしまくり

205:デフォルトの名無しさん
08/11/27 05:34:04
Dequeに置き換えるだけで速くなる

206:デフォルトの名無しさん
08/11/27 06:17:44
>>196
PIII800MHz
192MB
ですがなにか?

207:デフォルトの名無しさん
08/11/27 08:07:04
PenII266を現役で使用してるんだが・・・

208:デフォルトの名無しさん
08/11/27 08:23:41

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res1 = opener.open(req)
if '<!-- 2ch_X:cookie -->' in res1.read():
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res2 = opener.open(req)


209:デフォルトの名無しさん
08/11/27 08:27:50
ぱい

210:デフォルトの名無しさん
08/11/27 10:41:28
質問させてください。
pythonで一番メジャーなパッケージマネージャは何ですか?

調べてもあんまり出てこないんですよね・・。

211:デフォルトの名無しさん
08/11/27 10:53:26
>>210
easy_installじゃないの?

212:デフォルトの名無しさん
08/11/27 12:26:52
うちのファイルサーバーはpenIII 800だ

213:デフォルトの名無しさん
08/11/27 13:34:53
>>194
つか、遅すぎなんだけど。なにそれ。やる気あんの?

boost とか使う前にアルゴリズムを改良しろよ。
まずは CSP 学べ。

214:デフォルトの名無しさん
08/11/27 13:43:26
産業廃棄物をサーバとして使うなよ(wwWwwWWWwwwwwWwWwwwwWwwww

215:デフォルトの名無しさん
08/11/27 14:18:44
総当りでもしてるのかな?

216:デフォルトの名無しさん
08/11/27 14:26:15
>>215
総当りに近いんじゃね?
25秒とか、古い Pen II でもありえんよ。
CPU が P3 933Mhz もあるんだったら、半秒以上かかる sudoku solver 書いた時点で負け。


217:デフォルトの名無しさん
08/11/27 14:31:22
コードは上にあがってるじゃん

218:デフォルトの名無しさん
08/11/27 14:56:20
>>199のコードに
if __name__ == '__main__':
  import sys
  main(sys.argv[1])

を付け加えて、
530070000
600195000
098000060
800060003
400803001
700020006
060000280
000419005
000080079
とかいう入力を与えてみたけど、一瞬だったけど?
time の結果が0.25秒程度
別にPsycoとか使ってねー

PentiumM 1.7GHz
Windows XP SP3
Python 2.5.2


219:デフォルトの名無しさん
08/11/27 15:01:05
>>194
それって25*25でってこと?


220:デフォルトの名無しさん
08/11/27 15:14:04
っと、コードが晒されているのか。
(少なくとも)3種の枝刈り手法があったと思ったが、どれもやってないの?

221:デフォルトの名無しさん
08/11/27 15:16:32
81マスに9通りの数を置くだけなんだから、総当りだってゴミみたいな計算量だろ
上でやってるのはごくシンプルなバックトラックだよ

数十秒とか絶対ありえん

222:デフォルトの名無しさん
08/11/27 15:17:26
いやさすがに総当りはないか、訂正するw

223:221=222
08/11/27 15:18:47
「総当りがゴミ」を訂正するという意味、重ね重ねすまん

224:194
08/11/27 16:01:18
>215,216,220,221
221さんが指摘されているとおりシンプルなバックトラックです。
他のアルゴリズムも勉強してみます。

>213,218,221
218さんが検証してくださっているとおり簡単な問題は
1秒未満で回答できます。紛らわしくてすいません。
URLリンク(www.sudoku.name)
の問題を使用しているのですが上級++で

004000080
003007000
600800009
030002500
070080090
005000030
200001007
000400100
050000600

というような問題の回答が遅いです。
220さんがおっしゃっているようにアルゴリズムの工夫で
何とかしてみます。ありがとうございました。

225:デフォルトの名無しさん
08/11/27 16:32:27
枝刈りしたら、この上級++の問題、数十倍速く解けるみたいだよ。
がんばって。

226:デフォルトの名無しさん
08/11/27 17:16:13
PyQtを使ったプログラムはソースを公開しないといけないの?

227:デフォルトの名無しさん
08/11/27 18:32:35
ユーザーはともかく、クリエータはGTK(GNOME)の方が多いだろう
GTKがLGPLなのに対して、QtはGPLか最近のtool kit としては高額の
有償ライセンスかのいずれか
利用できる人間は、どうしても限られてくる


228:デフォルトの名無しさん
08/11/27 21:04:28
turbogearsの2.6対応まだなのー?

229:デフォルトの名無しさん
08/11/28 02:59:53
おれも最近sudoku作ったよ!ナカーマ
どっかのホームページで数独の問題集があって、難易度ごとに別れているんだけど
最強難易度の一番最後の問題(たぶん94番目)を解くのに3秒くらいだったよん。

==環境==
WinXP
ActivePython 2.5.2.2くらい
Core2Duo1.7GHz

230: 
08/11/28 10:47:18
foo = "hoge"
bar = "fuga"
TITLE = {"title":foo - bar}

print TITLE["title"]
これで hoge - fuga と出力したいんだけど
"foo - bar"で引用符で囲むと foo - barになる。
囲まないとエラーになる。
どうすれば hoge - fuga に出来ますか?

231:デフォルトの名無しさん
08/11/28 11:00:31
なんかえらい基本的なことが抜けてる気がするぞ
ちゃんと勉強汁

foo + " - " + bar
"%s - %s" % (foo, bar)


232:デフォルトの名無しさん
08/11/28 11:15:59
>>224
>>195の、単純なバックトラックのCのコードですら
その問題は(俺の環境では)0.35秒ぐらいで解けるようだよ

アルゴリズム改善がベストだが、C++で書いても
そんなに遅いのは、別の理由もありそうだな

233:デフォルトの名無しさん
08/11/28 11:21:11
\x00とすると16進数で8ビット文字列を作れますよね。
16進数を作ってから、\xとつなげるにはどうすればいいですか?
"\x%x"のように文字列フォーマットを使おうとするとエラーになってしまいます。

234:デフォルトの名無しさん
08/11/28 11:22:44
"\\x%x"で定義してから、置換すればいいんじゃね?

235:デフォルトの名無しさん
08/11/28 11:25:31
できないじゃないですか。

236:デフォルトの名無しさん
08/11/28 11:26:19
素直にchr()使いなさい。

237:デフォルトの名無しさん
08/11/28 11:30:51
printf("%c", 0x25);
こんな感じ

238:デフォルトの名無しさん
08/11/28 12:18:40
>>237
chr(0x25)

239: 
08/11/28 12:36:35
>>231
おぉ! + を使って繋げるのか
TITLE = {"title":foo + " - " + bar}
print TITLE["title"]
hoge - fuga
と、無事にできました

でも、これが分かりません orz
> "%s - %s" % (foo, bar)

プログラム経験は昨日からです...
www.python.jpを見ながら勉強してます

240:225
08/11/28 12:55:52
>>229
試してみる。どんな問題?

241:デフォルトの名無しさん
08/11/28 13:51:06
Pythonのオススメの統合開発環境は何ですか?(日本語化可能だと有難いです

PyScripterはバグが多く、使いにくかったです…

242: 
08/11/28 15:10:40
>>241
テキストエディタでいいじゃん

243:デフォルトの名無しさん
08/11/28 15:15:29
>>241
Vimを +python でコンパイルしたもの

244:デフォルトの名無しさん
08/11/28 15:26:20
>>240
URLリンク(www.sudoku9981.com)
の94番目のやつ

245:225
08/11/28 15:46:29
>>224
ありがと。
0.98秒くらいだった。ハードのスペック違うけど。

Vista
CPython 2.6
PentiumM 2.1GHz

246:225
08/11/28 16:31:33
ごめん、訂正。
3回くらい実行したら、最短で0.2秒くらいだった。


247: 
08/11/28 16:47:05
チュートリアルでさえ難しいです
誰か僕に愛の手を

248:デフォルトの名無しさん
08/11/28 16:51:58
どこがわからないか*具体的に*いってみ

249:デフォルトの名無しさん
08/11/28 16:52:45
チュートリアル難しいよねえ。
まあ地道にコード打ってがんばろう。
てなことで今数独問題生成・解答アルゴリズムを考えてる。

250:デフォルトの名無しさん
08/11/28 17:17:26
BeginnersGuide/NonProgrammers - PythonInfo Wiki
URLリンク(wiki.python.org)

251: 
08/11/28 17:43:16
>>248
>"python file" と "python <file" の違いに注意してください。
>後者の場合、プログラム内でinput() や raw_input() が呼び
>出され、ユーザからの入力が必要な場合、入力はファイル から
>取り込まれます。この場合、パーザはプログラムの実行を開始
>される前にファイルを終端まで読み込んでおくので、プログラム
>はすぐに入力の終わりまで到達してしまいます。前者の場合
>(大抵はこちらの方が望ましい動作です)、入力には Python
>インタプリタの標準入力に接続された何らかのファイルまたは
>デバイスが充てられます。

まず最初に意味が理解できなかった所です。

252:デフォルトの名無しさん
08/11/28 18:01:08
perlの場合は両方ともfileを実行するが
pythonは違うから注意しろってことだろ

253:デフォルトの名無しさん
08/11/28 18:26:17
>>251
チュートリアルといいつつ、本当の初心者向けの文章ではないからね
Unixの経験と、他の何らかの言語の経験を仮定している記述も多い

必要の無いところは、分からなくても読み飛ばしてしまっていいと思う

254:デフォルトの名無しさん
08/11/28 18:34:05
>>251
両者ともfileに含まれるPythonコードを解析し実行するという点では同じ。
ただ後者の場合は、解析段階で最後まで読んだfileをinput()の入力にあてがうので、
やってみるとEOFErrorになる。なので普通は誰もやらない。

255:デフォルトの名無しさん
08/11/28 18:45:00
python fileとpython <fileが何の事か分からんです
ひょっとしてコンソールで

$ python file.py
$ python < file.py

こういう事?

256:デフォルトの名無しさん
08/11/28 18:52:23
>>255
なんでそんな簡単なことがわからんの?
Pythonがどうこう以前に、そんなこと
普通にシェルに触ったことがある奴なら誰でもしってるよ。

$ cat < file.py

がなんで file.py の内容をそのまんま吐き出すか考えてみろよ。
stdin からのインプットを待ってるからだろ?


257:デフォルトの名無しさん
08/11/28 19:05:03
触るな危険

258:デフォルトの名無しさん
08/11/28 19:19:45
数独をPythonでLISP風に解くとどんなコードになりますか?
Pythonにこだわらずに
LISPだけでもいいです。


259:デフォルトの名無しさん
08/11/28 19:25:11
>>258
LISP風の定義を言え。
lambda関数ばっかでやりたいのか? 変数に代入できんだろ。

260:デフォルトの名無しさん
08/11/28 19:41:12
触るな危険

261:デフォルトの名無しさん
08/11/28 19:47:35
>>258
Lispは全然詳しくないが
・インデクスアクセスしたいタイプの問題なので、リストよりベクタ向き
・副作用を避けようとすると、9x9のベクタを大量にコピーしまくる羽目になる
ような気がするが、どうなんだろうな

>>199のコードはforとかは使っているが比較的関数型よりのコードに見えるよ
つまり、コピーしまくりんぐ

262:デフォルトの名無しさん
08/11/28 19:53:30
>>258
URLリンク(www.norvig.com)
URLリンク(blog.livedoor.jp)
URLリンク(www.unixuser.org)
URLリンク(d.hatena.ne.jp)

263: 
08/11/28 20:33:07
>>256
ごめんなさい

264:デフォルトの名無しさん
08/11/28 20:37:06
python <i>file</i>
python < <i>file</i>

このようになってたら分かり易いんだけどな。
fileがファイル名なのか "file" という文字を
そのまま打つ必要があるのかが解り難い

265:デフォルトの名無しさん
08/11/28 21:07:38
>>251の訳文「入力は <i> file </i> から取り込まれます」とすべきだったんだな

266:194
08/11/28 22:38:59
>>225
URLリンク(codepad.org)
枝刈りとして分岐が少ない場所から走査するようにしたところ
5秒で回答できるようになり5倍高速化しました。
数十倍は難しいです。もしよろしければ後学のために
ソースを見せていただけないでしょうか?

>>244,245
2.8秒でした。自分のプログラムもそれなりの速さがでているようで
安心しました。

>>198,201,202,232
C++勉強して書き直したところboost.pythonを利用して
0.5秒で回答できるようになりました。
きちんとC++やりなおさないとだめですね。

ところでC++とPythonで配列をやりとりするとき
URLリンク(codepad.org)
のように書いてみたのですが他にうまい書き方があるのでしょうか?

URLリンク(www.boost.org)
を見たのですが、vector<->listの変換の自動化は未実装である
ということでしたが毎回wrapperを書かないといけないのでしょうか?


267:デフォルトの名無しさん
08/11/28 23:00:46
>>266
python標準のリストって何でも入るからな

効率よくC++のvector<int>とやりとりしたいんなら
とりあえずarrayがいいんじゃないの
arrayモジュールについて調べてみることを薦める

arrayは単一型のシークエンスで、バッファインタフェースを備えていて、
buffer_info()で思いっきり内部にアロケートされてる配列のアドレスも取れるから

268:225
08/11/29 00:36:50
あれから遊びで、複数解を求めるように
改造しちゃったけど、それでよければ。

URLリンク(codepad.org)


269:デフォルトの名無しさん
08/11/29 05:23:48
for(std::size_t i=0; i<boost::python::len(l); i++)
{
board[i]=boost::python::extract<int>(l[i]);
}


イテレータでまわすほうが速くなると思う

270:デフォルトの名無しさん
08/11/29 05:29:06
>>268
助けて

$ python sudoku.py
Traceback (most recent call last):
 File "sudoku.py", line 80, in <module>
  main(sys.argv[1])
IndexError: list index out of range

271:デフォルトの名無しさん
08/11/29 05:32:09
ごめん

#test()
#sys.exit(0)

のコメントアウトを外すんだね。
吊ってくる。

272:デフォルトの名無しさん
08/11/29 05:50:26
URLリンク(codepad.org)
ポイントは
・セルごとに次に置ける数字のsetを用意する(テーブル)
・一番数字の個数が少ないセルから分岐する
・テーブルは再帰ごとに新しいのをつくる
最初、数字ごとに次におけるセルをテーブルにして苦労した。

273:デフォルトの名無しさん
08/11/29 11:51:43
pynumはPython2.6に対応してないんですか?

274:デフォルトの名無しさん
08/11/29 12:55:56
URLリンク(inforno.net)
また、-3コマンドラインスイッチにより3.0で削除される機能を使っている場合、警告を出せる。

URLリンク(d.hatena.ne.jp)
2.6を使用するために、あなたのコードに下記の変更が必要かもしれない。


275:デフォルトの名無しさん
08/11/29 17:07:00
Python 言語の中身を詳しく説明したサイトはないの?
例えば AST とか、バイトコンパイルの実装とか、そういったやつ。

276:デフォルトの名無しさん
08/11/29 19:02:43
あるよ

277:デフォルトの名無しさん
08/11/29 19:05:49
いじわるな人・・・

278:デフォルトの名無しさん
08/11/29 19:10:38
>>277
そういう池沼にはレスつけないでくれ。

279:デフォルトの名無しさん
08/11/29 19:33:54
>>276
そうか、なら安心だな。


280:デフォルトの名無しさん
08/11/29 19:35:53
>>275-279
どうみても同一人物だな

281:デフォルトの名無しさん
08/11/29 19:36:24
>>275-280
どうみても同一人物だな

282:デフォルトの名無しさん
08/11/29 20:30:01
matplotlibのplot3Dにバグあるってどんなバグ?
自分は普通に使えてるんだけど

283:デフォルトの名無しさん
08/11/29 20:46:37
pythonで3次元plotしたい場合のお勧めはどれ?
matplotlibがもうサポートしないよと言ってる

284:デフォルトの名無しさん
08/11/29 22:45:23
vpython

285:デフォルトの名無しさん
08/11/30 20:49:38
>>284
便利そうだ
URLリンク(www.nasuinfo.or.jp)


286:デフォルトの名無しさん
08/12/01 11:47:04
3.xへの移行ってまだまだ先でいいんですかね?
色んなライブラリのパッケージもあって楽だし
今のところは2.5が一番使いやすい環境みたいだけど、
今からそれ勉強しても無駄になりますか?


287:デフォルトの名無しさん
08/12/01 15:29:43
>>286
>今からそれ勉強しても無駄になりますか?
無駄にはならないと思うよ。ただ2.6を使ったり、Python 3.0で何がどう変わるのか、なぜ変わるのか、その辺りの事情についてアンテナ張って勉強しとけばオッケーかと。


288:デフォルトの名無しさん
08/12/01 15:47:03
邦訳ドキュメントも2.5になったばかりだし、しばらくは2.5でいいよ。

289:デフォルトの名無しさん
08/12/01 18:28:12
2.6をわざわざVC9でビルドしたが、そこで力尽きてしまった
環境全部移行するのが面倒くさすぎて、結局まだ2.5.2を使っている

どーせ主要なディストリとかcygwinとかもまだキャッチアップしてないだろ

290:デフォルトの名無しさん
08/12/01 19:15:10
>>289
Debian stableだとまだ2.4だw
3に完全移行するのは当分先になるだろうな

291:デフォルトの名無しさん
08/12/01 19:15:26
このスレでturbogearsやってるのは俺だけの予感

292:デフォルトの名無しさん
08/12/01 19:32:20
そんなメジャーなものを使ってて良くいうよ。
俺なんかTenginだもんね。

293:デフォルトの名無しさん
08/12/01 19:37:18
でもturbogearsって聞かなくね?
mod_wsgiで動くの?

294:デフォルトの名無しさん
08/12/01 19:37:56
pythonで画像処理ならPILですが
動画なら何を使うといいのでしょうか?

295:デフォルトの名無しさん
08/12/01 21:51:44
俺なんかTempita

296:デフォルトの名無しさん
08/12/01 22:21:28
なんでマイナー自慢になってんだよw

297:デフォルトの名無しさん
08/12/01 22:34:55
俺はダンジョーで毎日ヤッてるよ。

298:デフォルトの名無しさん
08/12/01 22:38:07
>>297
Djangoの話題はスレが荒れる

299:デフォルトの名無しさん
08/12/01 22:57:04
ぞぺの仲間入りですね

300:デフォルトの名無しさん
08/12/01 23:04:19
ぞぺとどじゃんごっていろいろ似てるよな
使ってる人たちの香ばしさとか

301:デフォルトの名無しさん
08/12/01 23:26:18
パイパイで、ぽろーーん

302:デフォルトの名無しさん
08/12/02 00:55:46
pythonでインデント使わない方法はありませんか?
ファイルサイズが大きくて困ってます

303:デフォルトの名無しさん
08/12/02 01:00:59
気にするな

304:デフォルトの名無しさん
08/12/02 01:03:52
x=range(100);print x
for i in x: print i;print '\n';

これなら出来るけど

class hoge: def func(): pass;

みたいにインデントが必要なのが2つ以上は無理だと思うよ

305:デフォルトの名無しさん
08/12/02 01:18:02
今時メモリすらギガ単位で計られる時代に
たかがスクリプトのファイルサイズを気にする奴がいるとはな

306:デフォルトの名無しさん
08/12/02 01:30:41
低スペックに気を配れないプログラマはゴミ

307:デフォルトの名無しさん
08/12/02 01:31:53
可読性に気を配れない奴もな

308:デフォルトの名無しさん
08/12/02 01:32:03
300K以上のスクリプト起動すると遅くない?

309:デフォルトの名無しさん
08/12/02 01:34:27
インタプリタだから容量は実行速度にも影響出るだろ

310:デフォルトの名無しさん
08/12/02 01:51:35
じゃぁメモリに置いとけや

311:デフォルトの名無しさん
08/12/02 01:53:12
バイトコンパイルして実行するんだから
インデントが実行速度に影響するわけないだろ

312:デフォルトの名無しさん
08/12/02 01:53:36
>>309
> インタプリタだから

関係ねえし。


313:デフォルトの名無しさん
08/12/02 01:57:51
インデント削るととか、大昔のBASICの高速化技術みたいだな
発想が化石過ぎて感動した

pycってファイルが何なのか分かってるか?

314:デフォルトの名無しさん
08/12/02 02:11:32
書き込み権限がないからpycが無いです

315:デフォルトの名無しさん
08/12/02 02:13:22
1つの.pyに詰め込んでるのでpycが無いです

316:デフォルトの名無しさん
08/12/02 02:13:30
昔のBASICって、よく使う変数はプログラムの最初の方で
宣言しておいた方が速くなるとかあったなw

そういえば、レンタル鯖とかでPythonのCGIを実行する場合って
pycは作られるのかな?

317:デフォルトの名無しさん
08/12/02 02:14:17
>>316
作られるよ

318:デフォルトの名無しさん
08/12/02 02:14:52
pyc作られようが作られまいが、内部的にはバイトコンパイルしてから
実行だから、「インデントが」速度に影響出るなんてことは、あり得ねえけどな

319:デフォルトの名無しさん
08/12/02 04:06:23
>>302
> pythonでインデント使わない方法はありませんか?
> ファイルサイズが大きくて困ってます
ハードタブにしろ

320:デフォルトの名無しさん
08/12/02 07:30:44
今時ハードタブはありえない

321:デフォルトの名無しさん
08/12/02 08:30:29
内部的にバイトコンパイルする速度には影響出るが
全体の実行時間に対する割合で言えば影響は無いと言ってもいいくらいという

322:デフォルトの名無しさん
08/12/02 08:42:55
スレリンク(tech板)l50

323:デフォルトの名無しさん
08/12/02 10:06:44
>>321
ギャバンが蒸着を完了する程度の差しか無いだろうな。

324:デフォルトの名無しさん
08/12/02 10:29:07
Pythonのスレで思うのは
バージョン間ごとの信者なんて沸かないことだな。
安定だの不安定だの、信頼性に欠けるとか。
ドキュメント化されてるからそうなってるんだろうなー。

325:デフォルトの名無しさん
08/12/02 10:36:25
>>324
バージョンあがるごとに確実によくなってるし、Deprecated Warning を無視していない
限りはほぼ確実に次のマイナーバージョンアップ (2.4 -> 2.5 みたいな) で問題ないから
移行も楽だからねぇ。

Python3.0も、互換性はなくなるけどオブジェクトシステムとか基本が変わらないし、
Python2.6にPython3.0移行支援が用意されてる (大量の Deprecated Warning と 2to3) から、
php4 -> php5 とか perl5 -> perl6 とか ruby1.8 -> ruby1.9 とかよりも簡単に
移行できそう。まぁ、ある程度有名ライブラリが3.0に対応してくるまで自分のアプリは
2.x 用のままだけど。

326:デフォルトの名無しさん
08/12/02 10:37:20
まぁ一年は様子見るけどな

327:デフォルトの名無しさん
08/12/02 18:45:34
PILでimage sequenceをゼロから作る方法をみつけれない
どこかにいいsample codeないのかな

328:デフォルトの名無しさん
08/12/02 18:51:24
GoogleCodeSearch

329:デフォルトの名無しさん
08/12/02 21:41:14
静止画はPIL
動画はpygame
という使い分けでいいのか?


330:デフォルトの名無しさん
08/12/02 22:40:31
どういう用途において?

331:デフォルトの名無しさん
08/12/03 02:00:48
PILはaviファイルの読み込みする方法はみつけたけど
加工して書き込みできなかった

pygameが読み込みも加工も新規作成もできる


332:デフォルトの名無しさん
08/12/03 14:21:04
クラス変数についてです。
class foo(object): CON = 'const'
print foo.CON # print CON としたい

例えば上のprint文で、いちいち"foo."を書くのが面倒です。
importっぽいことをやって、"foo."を省略できるように
させる方法はあるのでしょうか?


333:デフォルトの名無しさん
08/12/03 14:53:10
研究室の学生の人数全分のmatlab買えないので
pythonに切り替えた

はたしてこの選択は間違っていなかったのか

334:デフォルトの名無しさん
08/12/03 15:10:02
カローラと自転車を比べてもしょうがないな

335:デフォルトの名無しさん
08/12/03 16:25:36
>333
python というより numpy, scipy の話って感じかな

sage ってのもなんか似た臭いなんだけどどういう位置づけなのかな?
scipy のさらに上位のまとめライブラリ?


ただ matlab から"乗り換え" というのなら普通は
scilab とか octave とかが思い浮かぶけど

336:デフォルトの名無しさん
08/12/03 16:41:24
>>333
俺は windows用の matlab なら持ってるけど、俺がメインでつかう
linux 用の matlab はもってないから、完全に matlablib に乗り換えた。
(URLリンク(en.wikipedia.org))

matlab はソフトウェアには組込めないけど、matlablibは
簡単にインテグレーションできるので、移行してよかった。
てか、matlablib を見つけれてよかったとおもってる。

お勧めするよ。

337:デフォルトの名無しさん
08/12/03 16:45:21
matplotlib の話なのか、
おれが知らない matlablib の話なのか
はっきりしてくれ

338:デフォルトの名無しさん
08/12/03 16:48:23
>>337
ごめん、matlablib は自分用語で、公式にはmatplotlib。

339:デフォルトの名無しさん
08/12/03 20:20:50
>>333 pythonに切り替えた
  はたしてこの選択は間違っていなかったのか

Matlab は揃いすぎ。理屈が解らなくても、マウス・クリックだけでフィルタ設計ができ
てしまう。Python ならば、学生が理論を理解できていなかったら結果を出せない。学生
用ならば python のほうが良いと思う。


>>335 ただ matlab から"乗り換え" というのなら普通は
  scilab とか octave とかが思い浮かぶけど

Python 使いならば matlab から scipy に乗り換えてもおかしくない。sympy など、他の
モジュールとの連携させる意味では python のほうが matlab より扱いやすい。もう
matlab は言語としては古臭くなっていると思う。

Matlab の優位性は、matlab 言語での膨大な蓄積とドキュメントの豊富さだと思う。


340:デフォルトの名無しさん
08/12/03 22:08:10
>>332
class foo(object): CON = 'const'
CON = foo.CON
print CON

どうよ?

341:デフォルトの名無しさん
08/12/04 01:25:08
>332
import foo.CON as CON


342:デフォルトの名無しさん
08/12/04 01:36:37
すみません、12文字以内でお願いしますです。

343:デフォルトの名無しさん
08/12/04 02:45:06
file1
--------
class foo(object): CON = 'const'
--------
file2
--------
from file1 import foo.CON as CON
print CON
--------

344:デフォルトの名無しさん
08/12/04 05:42:06
matlabが今のlapackみたいな位置づけになるのも遠くないのか

345:デフォルトの名無しさん
08/12/04 09:09:15
話のネタっす

ナイトツアー問題
URLリンク(slashdot.jp)


346:デフォルトの名無しさん
08/12/04 09:56:16
shutil.move()
ってめっさ遅くないですか?
ローカルにある2MBくらいのファイルを移動するのに0.4秒から1秒かかったんですけど
流体の計算より時間かかるってどんだけ

347:デフォルトの名無しさん
08/12/04 10:48:53
OSやドライブorディレクトリのマウント状況によるだろう

348:デフォルトの名無しさん
08/12/04 11:05:44
>>346
時間がかかってるんなら、それはクロスデバイスな移動を行おうとしたからで、
実際にはコピーが走ってるんだろ

コピーはshutil.copyfileobj()で行われるはずだが
デフォルトでは16KB単位(デフォルト引数でlength=16*1024となっている)
のようだから、ddでも使ってその環境での最適なバッファ長を確認したうえで、
shutil.copyfileobj.func_defaultsを書き換えてみたら

349:デフォルトの名無しさん
08/12/04 11:08:41
言わずもがなだが、念のため
キャッシュに一旦入ってしまうとコピーは一瞬で終わるし
コピーの性能を評価する時には色々気をつけなければならないことは沢山あるぞ

勿論同一デバイス上でのrenameでいいのなら、それに越したことは無い

350:デフォルトの名無しさん
08/12/04 11:42:52
3.0きたな。

351:346
08/12/04 11:43:58
いちおスペックは
XPsp2 core2 Cドラ 空き100ギガ以上

とりあえずファイルの操作はpopenでシェル呼んでやったほうが速いですか?

popen2.popen4('move '+ファイルパス+' '+ディレクトリパス+' /y')

でいけますか?

352:332
08/12/04 12:02:47
>>340 >>341 >>343
お返事有難うございました。
するとなると、下記のような場合で foo.CONX を一気に CONX と
書けるようにするのは難しいのでしょうか?
class foo(object):
 CON1 = 'const1'
 CON2 = 'const2'
 # 以下CON3などたくさん


353:デフォルトの名無しさん
08/12/04 12:04:09
>>351
よくわからんな
Cドライブ→Cドライブの移動で、そんなに時間かかってんの?

354:デフォルトの名無しさん
08/12/04 12:21:56
3.0きたけど様子見。
他のライブラリーが対応してないから

355:デフォルトの名無しさん
08/12/04 12:24:11
まあクオリティ的には Ruby 1.9 より断然上だよな> Python 3.0
そういえば、 Perl 6 という vaporware もありました。

356:デフォルトの名無しさん
08/12/04 12:30:13
まだ2.6にも移行してねえんだが……

357:デフォルトの名無しさん
08/12/04 12:41:44
>>353
CからCです。
いくらなんでも遅すぎですよね。


358:デフォルトの名無しさん
08/12/04 12:45:06
>>352
file1
--------
class foo(object):
 CON = [('const%d' % n) for n in xrange(1000)]
--------
file2
--------
from file1 import foo.CON as CON
for n in len(CON):
print 'CON%d = %s' % (n, CON[n])
--------


359:デフォルトの名無しさん
08/12/04 12:47:22
>>357
早めにディスクのバックアップ取っとけw


360:デフォルトの名無しさん
08/12/04 13:51:33
sage使ってる人います?
numpy単独よりも便利なのかな

361:デフォルトの名無しさん
08/12/04 14:13:38
pythonのコードをdllや.soにする方法ってあるのかな

362:デフォルトの名無しさん
08/12/04 14:17:33
3.0のWhat's Newは短いなぁ

363:デフォルトの名無しさん
08/12/04 14:21:57
>>362
変更点は全て列挙してあると思うけど、例を載せてほしいってこと?


364:デフォルトの名無しさん
08/12/04 15:05:48
2.6に多くの機能が入ったからその分短くなったね

365:デフォルトの名無しさん
08/12/04 15:43:10
そういう問題なのか???

ありすぎて書けない… わけじゃなく段差の分結果的に
"what's new" の項目数は少なくなったって感じ?

366:デフォルトの名無しさん
08/12/04 15:44:05
>>365
いやいや、十分長いがなw
参考文献へのリンクも含めて読んでみろよ。


367:736
08/12/04 15:59:14
>>359
ちなみに正常な環境だと shutil.move()の実行速度って何秒くらいですか?
テスト条件はできれば同じくらいの環境で

368:デフォルトの名無しさん
08/12/04 16:16:05
shutil.move("C:\test.txt", "C:\Test")みたいにdstにディレクトリを指定すると
実装のos.renameでOSErrorが発生してcopy2の方が呼ばれてるから遅くなってるのかな?
shutil.move("C:\test.txt", "C:\Test\test.txt")みたいにファイル名を追加するか
os.renameを直で使ってみたら?

369:368
08/12/04 16:17:10
↑のはWindowsでの話。他のOSは分からない

370: 株価【52】
08/12/04 16:29:59


371:デフォルトの名無しさん
08/12/04 17:37:20
>367
0秒

372:デフォルトの名無しさん
08/12/04 19:02:54
具体的にはどの段階で3.0にいこうすればいいのかね?

373:デフォルトの名無しさん
08/12/04 19:35:22
>>372
お前の使ってるライブラリが対応したときだろ。

374:デフォルトの名無しさん
08/12/04 19:59:37
まだ 3.0 リリースせずにユーザーがもうちょっと 2.6 に慣れてから
リリースすればよかったような気がする。

でも、3.0は長い移行期間が必要とされるから、逆に早めにリリース
しておきたかったんだろうね。

375:デフォルトの名無しさん
08/12/04 20:17:04
>>352
... class a:
... CONST1=1
... CONST2=2
... for x in dir(a):
... if x.startswith("CONST"):
... exec(x + "=" + "a." +x)
... print CONST1

どうよ?

376:375
08/12/04 20:18:06
インデントがめちゃめちゃだ。
ごめんよ。

377:デフォルトの名無しさん
08/12/04 20:57:18
printのカッコが地味に面倒だな。
こっちの方が言語的にいいのは、頭では理解してんだけどさ。
いままでの癖がなかなか抜けなくて、ぱいそんたんに怒られてばっかりだ。

378:デフォルトの名無しさん
08/12/04 21:26:41
3.0が出たので入れてみた(Vista)

早速起動した。
> help()
打ってみた。動く。
そこで出た文章に従って
> modules spam
打ってみた。

エラー出た。
uft-8 ってエンコーディングが見つからないって。
・・・・あたりまえじゃああああ
どこが間違ってるのかよく分からんです。
Python30のディレクトリ下をgrepして出てくるのは
Lib/test/bad_encoding.py だけ。これは想定通りだろうが・・・

379:デフォルトの名無しさん
08/12/04 21:35:52
・・・もしかしてLib/testはインストール後に
除去するのが正しい使い方?
別んとこによけておいたら、↑も通った。

380:デフォルトの名無しさん
08/12/04 22:38:47
print("a%s%s" % ('b', 'c'))

なんかキモイな…

381:デフォルトの名無しさん
08/12/04 22:42:12
Py3kはユニコード指定しなくていいのが嬉しい。
これでフレームワークが対応してくれれば・・・。

382:デフォルトの名無しさん
08/12/04 22:52:02
つーか2.5とかでも別に

def printf(fmt, *args): print fmt % args,
def fprintf(f, fmt, *args): print >>f, fmt % args,

とか定義すりゃ
printf("a%s%s\n", 'b', 'c')
とか書けるわなあ

print()関数は、%とカッコがC風のprintf()より冗長に見えてしまうね

383:デフォルトの名無しさん
08/12/04 23:03:10
setuptoolもまだ対応してないのかな?

384:デフォルトの名無しさん
08/12/04 23:06:11
3.0わしょーい

385:デフォルトの名無しさん
08/12/05 00:17:30
>>380
boost::format
みたいだ

386:デフォルトの名無しさん
08/12/05 00:28:39
print("a{0}{1}".format('b', 'c'))
print("a", 'b', 'c', sep="")

387:デフォルトの名無しさん
08/12/05 00:32:32
>>386
それもキモいな
あまり意味の感じられない多様性

Perlみたい

388:デフォルトの名無しさん
08/12/05 00:44:15
string template は

389:デフォルトの名無しさん
08/12/05 00:53:59
print文なんて一発プログラムでしか使わん。
ちょっと込み入った規模ならファイルオブジェクトにwriteするか
loggingを使ってる。

潔癖症にかかってる人は
変える必要など無い所まで変えやがるから
迷惑この上ない。


390:デフォルトの名無しさん
08/12/05 01:03:49
一貫性に拘りすぎるのはバカみたいなことを
Pythonの中の人言ってなかったっけか

391:デフォルトの名無しさん
08/12/05 01:06:36
>>390
それは本当にそう思うけど
print()関数は、後方互換性潰してまで導入したのがこれか、とは思う

392:デフォルトの名無しさん
08/12/05 01:07:24
printは最初っからキモイ

393:デフォルトの名無しさん
08/12/05 01:09:51
>>392
全くだw

394:デフォルトの名無しさん
08/12/05 01:12:03
自演オワタ

395:デフォルトの名無しさん
08/12/05 01:15:56
単要素のタプルもキモイ

396:デフォルトの名無しさん
08/12/05 01:21:54
>>389
じゃぁお前はprintの変更の影響受けて無いじゃん。

Python開発者は潔癖症なんかじゃないよ。
print文の変更も議論の上だよ。 print文でファイルに出力する方法とか、最後に改行しない
方法とか、その為だけに構文を増やしていたのを、普通の関数呼び出しにして柔軟に
使えるようになった。

数タイプを削減するためだけに構文増やしまくってたprint文がキモ過ぎただけで、
print関数は素直で自然な姿。

397:デフォルトの名無しさん
08/12/05 02:15:03
後方互換性潰してまで導入したのがこれか

398: 
08/12/05 02:22:59
それが何か?

399:デフォルトの名無しさん
08/12/05 04:52:48
Cとの互換性を重視して文法がカオスになってるC++を見てると、
どこかで切り捨ては必要だなって思う。

400:デフォルトの名無しさん
08/12/05 09:11:27
printの構文くらいしか噛みつくとこないんですね

401:デフォルトの名無しさん
08/12/05 10:00:42
デバッグプリントしようとしてエラー吐いたときのイラつきは異常

402:デフォルトの名無しさん
08/12/05 10:32:16
>>400
printの構文くらいしか噛みつくとこないということにする以外に噛み付く方法無いんですね

403:デフォルトの名無しさん
08/12/05 10:41:21
print以外に互換ない所ってどこ?

404:デフォルトの名無しさん
08/12/05 10:44:28
そもそも、printの構文なんて存在しなくなったというのが正しい。
printが関数になって、関数の構文で呼び出せるようになり、
Pythonの構文がいっそうシンプルになった。

405:デフォルトの名無しさん
08/12/05 10:46:27
>>400
ぶっちゃけPython3.0の新機能なんざ、後方互換性の破壊による
二重保守や移行の手間に見合うほどのもんじゃないよ、どれもこれも

Python3.0のほうがより良い仕様だということは認めるが、
別に言語仕様だの性能だのの明白な強化に繋がる仕様じゃないし
単なる切り落としも多い
例えば、reduce()がbuiltinから消えて喜ぶ奴がいるか?
はっきりしているのは、それでスクリプトを書き換える必要が生じる
ユーザだけは沢山いるということだ

周辺ライブラリとか作ってる人たち、今後は二重保守やテストを強いられることに
なんのかね
当たり前のようにC APIも仕様変わってんだろ
ぞっとするぜ

406:デフォルトの名無しさん
08/12/05 10:47:36
>>403
文字列の扱いは全く完璧に変わった
例外のハンドリングも構文が変わった

シンタクスレベルの変更なので、スクリプト内で動的にバージョンを判断して
分岐することはできない
バイトコンパイルの時点でシンタクスエラーになるからな

407:デフォルトの名無しさん
08/12/05 10:49:24
変化に対応できないじじいは史ねってことですね、分かります。

408:デフォルトの名無しさん
08/12/05 11:02:43
>>405
移行したくないならどうぞそのまま Python 2.x をお使いください。
だれもあなたに移行しろと言ってませんし、俺もまだ移行しません。
1年や2年は様子見で良いよ。
ライブラリが揃いだしてから、新規のコードは Python3.0 用に書き始めれば良い。

409:デフォルトの名無しさん
08/12/05 11:09:44
> ライブラリが揃いだしてから、新規のコードは Python3.0 用に書き始めれば良い。

なるほど、使ってる全部の端末に2種類のPythonインタプリタをインストールして
二重運用するわけかw
そして今までのコードベースはそのやり方じゃ、3.0からは使えない、と

うっかりミスでトラブル続出だな
boost.pythonとかどうなるのやら

410:デフォルトの名無しさん
08/12/05 11:11:52
>>409
俺は1.9、2.4、2.5、2.6、3.0全部入れてるぞ

411:デフォルトの名無しさん
08/12/05 11:13:16
>>410
>1.9

Ruby厨乙(ww

412:デフォルトの名無しさん
08/12/05 11:13:56
流石反応はええな

413:デフォルトの名無しさん
08/12/05 11:51:49
hoge.cppからhoge.hppを自動生成するschemeのprogramが
format文(pythonのprint文)のきもい使い方駆使しまくってたんだけど
似たことpythonでもできるようになるのかい?

414:デフォルトの名無しさん
08/12/05 11:59:32
>>405
C APIについてはどうなのか知らないけど、

通常のPythonスクリプトのプロジェクトでの2重保守のコストは、
テストを自動化してるかどうかによると思う。
変換ユーティリティ 2to3 の利用もテストを前提としてるみたいなので。

URLリンク(www.artima.com) より、簡単に抜粋すると。

0. テストを書く。
1. python 2.6 へ移植。
2. py3k 警告モードでテスト。
3. 警告がなくなるまで修正を繰り返す。
4. 2to3で 3.0 向けに変換。
5. 3.0 でテスト。
6. エラーがあれば変換前のコードを修正する。
7. release

手作業が必要なところ以外を自動化してしまえば、
保守コストが2倍掛かるなんてことにはならないはず。

移植コストは 2to3 がどの程度の変換をサポートしてるかに拠るのかな。
8割程カバー出来ればいいや、みたいな事言ってたを何処かで読んだけど。ソース失念。

415:デフォルトの名無しさん
08/12/05 12:05:31
URLリンク(gihyo.jp)
に2to3の適用範囲についての説明はあるな
その後もっとマシなものになっているのかどうかは分からんが

その辺は、要求品質にもよるだろうな
業務としてやってるようなものなら、テストだって全自動で終わりとかありえねえし

ゲームの自動テストでも書いてみるか?w


416:デフォルトの名無しさん
08/12/05 12:32:19
C apiの変更はboost.pythonに吸収してもらえないのかねえ

417:デフォルトの名無しさん
08/12/05 12:47:45
URLリンク(docs.python.org)
を見ると、Sequence ObjectsからString Objectsの記述は無くなって、
Bytes ObjectsだのByte Array Objectsだのが登場している。
Unicode Objectsは残っている。
strはUnicode Objectsにマップするのだろうか。

URLリンク(docs.python.org)
を見ると、相変わらずフォーマット"s"が存在し、
「string or Unicode Objects」とか書いてある。
そしてそれが「char*に」変換する。
byteからのフォーマット指定子も追加されているが。

正直何がしたいんだか良く分からないんだが。
上っ面だけ整理して、C APIはカオスに見える。
ドキュメントが追いついていないだけか?

418:デフォルトの名無しさん
08/12/05 13:38:36
まあ3.0移行とか関係なく、普通にテスト書くだろ。
テスト書かないハゲは消えろや。

419:デフォルトの名無しさん
08/12/05 15:34:22
python 2.5/2.6 を使っているんですが、
この段階では print 文でなくて print 関数を使うようにはできませんか?
future import なんとかでできたらいいなぁ、と。
いずれ python 3.0 に移行するまでのつなぎとして
今からそう書いておきたいんですが・・・

420:デフォルトの名無しさん
08/12/05 15:36:26
2.6なら from __future__ import print_function

421:デフォルトの名無しさん
08/12/05 15:44:51
>>419

>>382


422:デフォルトの名無しさん
08/12/05 16:26:39
いつのまにか2.6.1

423:デフォルトの名無しさん
08/12/05 17:42:43
>>420-421
ありがとうございました.
めでたく print("aiueo") できました.

ところで,Python でメッセージを標準エラー出力
に出す時に簡便な方法といえば何でしょうか?
やはり os.write などを使って出すのでしょうか?
print2("aiueo") のような関数は標準的にはありませんか?

自分で便利関数を作ってもその存在を忘れてしまうほど
頭が弱いので,与えられたものがあればそれを使おうと思います.

424:デフォルトの名無しさん
08/12/05 17:45:34
sys.stderr.write(...)
print >>sys.stderr, ...
print(..., file=sys.stderr)

425:デフォルトの名無しさん
08/12/05 17:47:20
>>424
> print >>sys.stderr, ...

これは非推奨。

426:デフォルトの名無しさん
08/12/05 18:02:02
logging

427:デフォルトの名無しさん
08/12/05 19:03:20
おお,logging なんてのがあるんですか.
>>425 のような書き方も知りませんでした.

もう一つ質問があります.
設定ファイルであれこれ設定する必要があるのですが,
できれば UNIX/Windows で共通に使えるように
したいと思っています.こういうときホームディレクトリ
直下に .myapplication ファイルでも用意して,
その中に ConfigFile 形式や JSON 形式で設定を
書くようにすればいいのでしょうが, Windows の
場合だったらプロファイル直下かなぁ,とか,
ポータブルにするための手間は惜しみたいとか考えてしまいます.

アプリケーションの個人用の設定ファイルの扱い方,
特にその配置場所について,Python 流のお決まりの
やり方というのはあるのでしょうか?

428:デフォルトの名無しさん
08/12/05 19:14:45
レンタルサーバーでもpython3.0対応してくれたら
移行してもいいんだがな

429:デフォルトの名無しさん
08/12/05 19:58:03
>>427
os.path.expanduser()

430:デフォルトの名無しさん
08/12/05 20:23:29
>428
自分で入れればいい

431:デフォルトの名無しさん
08/12/05 20:32:07
ブロックの終わりを示すキーワードを強要するオプションがほしかったな

432:デフォルトの名無しさん
08/12/05 20:39:22
>>427
Pitおすすめ
URLリンク(d.hatena.ne.jp)

433:デフォルトの名無しさん
08/12/05 23:56:09
以下の呼び出しはaがアサインされてないよと言われて失敗してしまうんですが
そういうものなんですかね?

def maker(a):
  # return lambda(c): a + c
  def f(c):
    a = a + c
    return a
  return f

f = maker(3)
print f(4)

左辺値のaを別の変数にすれば動きます。

434:デフォルトの名無しさん
08/12/06 00:07:22
俺はBeautiful Soupが3.0に対応するまで移行するのは待っていよう


435:デフォルトの名無しさん
08/12/06 00:08:36
Python3.0ならnonlocalで出来たかと

436:デフォルトの名無しさん
08/12/06 00:09:04
>>433
URLリンク(docs.python.org)

If a name binding operation occurs anywhere within a code block,
all uses of the name within the block are treated as references to
the current block.
This can lead to errors when a name is used within a block before it is bound.
This rule is subtle. Python lacks declarations and
allows name binding operations to occur anywhere within a code block.
The local variables of a code block can be determined
by scanning the entire text of the block for name binding operations.

と書いてあるので、仕様だろう
結局のところletのような構文は無いのだし、それがPythonなのだと思うしかない

俺は最近はletだのvarだのmyだのが無いことの不便さのほうを感じることが
多いな


437:デフォルトの名無しさん
08/12/06 00:19:56
64になって困るのだろうか?


438:デフォルトの名無しさん
08/12/06 00:30:47
pythonでswitch文書くにはどうしたらいいの?

439:デフォルトの名無しさん
08/12/06 00:32:02
switchなんてものは無いが、別にいらんだろ
パターンマッチもないよ
ifで頑張れ

440:436
08/12/06 01:38:31
すまん、ちょっと意図を勘違いしていた。
>>433は左辺も右辺も自由変数を参照したいわけだな?
ならPython3ではnonlocal文でいいはずだが、
それ以前のPythonでは、自由変数に代入することはできない。

global変数にはglobal文を使うことで代入することはできるが
global変数を使うこと自体稀だろう。

Schemeなどのlet文では左辺がローカルな束縛で右辺が自由変数という
ケースも良く出てくるが、それもPythonではできない。
できない理由は>>436の引用に説明されている通り。

いずれも変数宣言を持たないことによる帰結だな。

441:デフォルトの名無しさん
08/12/06 01:41:19
let「文」はおかしいな
まあいいか

442:デフォルトの名無しさん
08/12/06 01:44:19
py3kについてkwskかかれた日本語まだー?w

viewってなんだよviewって・・・

443:デフォルトの名無しさん
08/12/06 01:54:06
>>440
ありがとうございます!

エラーもはいてくれるし、ローカル変数を使うつもりが初期化を忘れて
勝手にネームバインディングされるよりはわかりやすくていいのかな。


444:デフォルトの名無しさん
08/12/06 01:56:51
>>443
本当はletなどで明示したほうがいい、と俺は思うんだけどね

まあ、letの3文字をタイプする手間と、それを省くことによる仕様面での制限の
トレードオフを考えたときに、Pythonは手間を省く方を選んだということだ

445:デフォルトの名無しさん
08/12/06 02:33:08
>>433
def maker(a):
  # return lambda(c): a + c
  def f(c, a=a):
    a = a + c
    return a
  return f

とすればいいと思うよ。


446:デフォルトの名無しさん
08/12/06 02:45:50
a += c でもだめなんかなぁ。。。

447:デフォルトの名無しさん
08/12/06 04:45:34
>>438
caseが全て定数なら、辞書を使うと高速。
パターンマッチが必要なら
URLリンク(code.activestate.com) みたいなのを拡張して使うといい。

制御構造の為に標準構文以外の独自拡張を取るのが、
可読性を損ねるという考えもあるので、無難なのは if/elif... かな

448:デフォルトの名無しさん
08/12/06 08:40:20
>>442
きっと一年後ぐらいに出ます。

449:デフォルトの名無しさん
08/12/06 10:07:05
>>431
キーワードのデフォルトはpassですねわかります

450:デフォルトの名無しさん
08/12/06 11:16:12
debug=sys.stderr.write
...

debug("ほげ~")

451:デフォルトの名無しさん
08/12/06 11:38:27
>>449
そうそう。対象ファイル内ではpass/return/break/continueを強要するの。だめ?

452:デフォルトの名無しさん
08/12/06 14:37:18

@hoge

ってどういう意味なの

@の使い方がわからない

453:デフォルトの名無しさん
08/12/06 14:43:17
きっと"python デコレーター"とかで検索す

454:デフォルトの名無しさん
08/12/06 15:12:22
>>451
素直に、インデントによるブロックを折畳表示してくれるエディタの支援を使おう。

455:デフォルトの名無しさん
08/12/06 15:45:10

wwwww                                 wwwww            
 wwwww                               wwwww            
  wwwww               ww            wwwww                   
   wwwww             www           wwwww            
    wwwww           wwwww         wwwww                       
     wwwww         wwwwwww       wwwww                        
      wwwww       wwwwwwww      wwwww 
       wwwww     wwww  wwww    wwwww                      
         wwwww  wwww    wwww  wwwww
          wwwwwwww       wwwwwwww
           wwwwww         wwwwww
            wwww           wwww
             ww             ww


456:デフォルトの名無しさん
08/12/06 18:07:31
a=[1,2,3,4,5]
b=[5,4,3,2,1]
for c,d in a,b:
 print c,d

これできないのって仕様?

457:デフォルトの名無しさん
08/12/06 18:21:29
ZIPを要求する!

for c,d in zip(a,b):
 print c,d

458:デフォルトの名無しさん
08/12/06 18:22:46
>>457
存在忘れてたw
ありがとう。

459:デフォルトの名無しさん
08/12/06 18:43:16
BeautifulSoup/2to3 挑戦してみた。

1. 2to3 BeautifulSoup.py | patch BeautifulSoup.py
2. 3k に sgmllib がない。2.6から持ってくる。
3. sgmllib内 warnings.warnpy3k 辺りはいらないので削除。
4. 2to3 sgmllib.py | patch sgmllib.py
5. 3.0 で import BeautifulSoup が通る。
6. re.match, re.search 等に bytes オブジェクトが渡っている所を str() で wrap
数箇所修正。(実行してエラーが出た箇所を潰していく)
7. BeautifulSoup(text).prettify() がエラーなしに動く。
8. 文字列が全て <b'font' b'size'="b'-1'"> の様になっているのに気付く。
str(b"foo") が "b'foo'" という文字列を返す為。.decode()で文字列に変換する必要がある。
9. PageElement.toEncoding, NavigableString.__str__ が bytes を返すのを .decode(encoding) で str に。
※ 他にも bytes を返すメソッドがあるかも知れない。
※ 2.x 互換の方法が解らなかった為、ここは 3.0 のコードを変更した。
10. ここまでで .prettify() 通った。diff取るの忘れたけど手作業で変更したのは5,6箇所程。
※ 2.x では decode/encode して端末へ表示してたのが、3.0では不要になった。
.prettify()の返す文字の文字コードが異なる?修正が影響したのかどうかは追ってない。



460:デフォルトの名無しさん
08/12/06 19:46:13
ぱいおつ

461: 
08/12/07 12:23:34
>>439
あざす

462:デフォルトの名無しさん
08/12/07 14:27:35
バランスの取れた括弧にマッチさせるときに
以下の正規表現だとre.compile()時にnothing to repeat.と怒られてしまいます。
何が不味いのでしょうか。
'(?P<REP>'
 '\('
  '([^()]+|(?P=REP))*'
 '\)'
')'
(?P<>)の入れ子自体は問題ないようなのですが・・・


463:デフォルトの名無しさん
08/12/07 14:39:22
ちなみにテストコードです。
import re
r = re.compile('(?P<REP>\(([^()]+|(?P=REP))*\))')
s = 'abc((de(f))gh((ijk)lmn))opq'
print r.search(s).group()

464:デフォルトの名無しさん
08/12/07 16:33:06
emacsのoutlineマイナーモードでpythonのコードも折りたたみたい

465:デフォルトの名無しさん
08/12/07 19:18:49
HTML/XMLの操作にはBeautifulSoupとlxmlのどちらが主流派なんですか?
BeautifulSoupはpure pythonという以外に何かメリットデメリットあったら教えて下さい。
HTML/XMLの操作ってあんまりやったことないので常道ってのも分からないので判断しかねて・・・


466:デフォルトの名無しさん
08/12/07 20:19:23
>>462
そういう「再帰的な定義」を許していないんじゃないか?
そういう記述ができるものがあるのは知っているけど、
エラーメッセージから想像力を働かせるとPythonでは許していないような気がする。


467:デフォルトの名無しさん
08/12/07 20:20:00
>>462 (?P<>)の入れ子自体は問題ないようなのですが・・・

問題あるだろう。こうだろう
r = re.compile('(?P<REP>(\([^()]+|(?P=REP))*\))')


468:デフォルトの名無しさん
08/12/07 21:04:33
>>466
やっぱりそうなんですかね。
(?P<>)の入れ子はcompileは通るのですがどうも効いていないっぽいです。

>>467
ありがとうございます。
でもバランスしません(>_<)


469:デフォルトの名無しさん
08/12/07 21:16:56
(?P=name)って要するに名前付きのバックリファレンスだろ?
入れ子の記述を仮に許しても、方針として全然ダメじゃねえの?

要は「マッチしたもの」にマッチするんだから
一般的な入れ子のカッコを処理できるわけないじゃん

470:デフォルトの名無しさん
08/12/07 22:02:13
pythonで 誌
という文字をunquoteっしたいんですけども
どうすればいいですか?

471:デフォルトの名無しさん
08/12/07 22:10:22
>>469
期待通りに動く処理系もあるんですよ・・・

472:デフォルトの名無しさん
08/12/07 22:33:20
なら具体的なバージョンとかの情報出すべきかと・・・

473:デフォルトの名無しさん
08/12/07 22:45:55
文字参照を元の文字に戻すにはどうすればいいでしょうか

474:デフォルトの名無しさん
08/12/07 22:48:25
ver.1.9のことです(>_<)

475:デフォルトの名無しさん
08/12/08 02:13:53
正規表現万能論者はお断りします

476:デフォルトの名無しさん
08/12/08 02:15:45
本来的な正規表現ではないよな
バックリファレンスですら

そういう意味ではPythonのは既に足は踏み外してるけど
再帰を許すほどではないな

477:デフォルトの名無しさん
08/12/08 08:46:23
俺の質問に答えろや

478:デフォルトの名無しさん
08/12/08 11:40:41
>>471
リファレンスみたいな豪快な拡張にポータビリティを期待するほうがダメかと。
Pythonの正規表現の仕様から、これが処理できないのはおかしいとはっきり
導出できるなら、そのようにバグとして報告すればいい話。

>>470 >>473
import urllib
urllib.unquote

479:デフォルトの名無しさん
08/12/08 12:52:22
質問
cgiをpythonで作っています。

#!/usr/local/bin/python

import cgitb,time

print "Content-Type: text/html\n\n";

t = time.strftime('%H:%M:%S')

print '<p>time is'+ t +'</p>'

この状態なら動くのですが、print関数の文字列に日本語が含まれているとcgiが動かなくなります。
これは何故でしょうか・・・?
ちなみに保存文字コードはshift-jisです。

480:デフォルトの名無しさん
08/12/08 13:05:16
>>479
文字コードをUTF-8(BOM無)で保存すればいい

481:デフォルトの名無しさん
08/12/08 13:26:31
>>479
URLリンク(www.python.jp)

482:479
08/12/08 13:29:38
UTF-8で保存すると今度は全くcgiが動作しなくなります・・・OTL

483:デフォルトの名無しさん
08/12/08 13:31:30
windowsXPでpython 3.0なんですが
>>>douon("変態")
["変態", "編隊", "変体", "へんたい", "ヘンタイ", "hentai"]
みたいな関数を標準モジュールだけで書いていただけませんでしょうか


484:デフォルトの名無しさん
08/12/08 13:32:58
>>482
ん?sjisでも「全く動作しない」はずだが……

CGIなんだから、直接pythonインタプリタで実行してみろよ
たとえコメントの中だろうが、エンコーディングを指定せずに
非ASCII文字が書かれている時点で
Pythonインタプリタにはねられるから


485:デフォルトの名無しさん
08/12/08 13:36:39
>>483 無理。ていうか辞書次第。

486:デフォルトの名無しさん
08/12/08 13:37:17
>>483
migemoあたりの辞書を使うといいんじゃねえか
migemoで普通やるのの逆変換になるが

487:479
08/12/08 13:39:18
>>481
参考URL有難うございます。


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

import time
print "Content-Type: text/html\n\n";

t = time.strftime('%H:%M:%S')

print u'<p>時間は'+ t +'</p>'


のようにエンコードを指定してもインタプリタでは動くのですが、cgiファイルとしてサーバーにアップ後は動かなくなります。
パーミッション等は合ってます。

488:デフォルトの名無しさん
08/12/08 13:42:27
>>487
unicode文字列をprintに渡してるんなら、また別の問題がある。
printはunicodeを受け取ると、sys.stdout.encodingに従ってそれを
変換しようと試みるが、sys.stdout.encodingは環境次第だ。
多分asciiか何かになってんだろう
もともとpythonのstdin/stdoutのencodingはリダイレクトに弱い。

自分でエンコーディングを指定してバイト列に変換してからprintに渡せ。

489:デフォルトの名無しさん
08/12/08 13:44:22
>>485
>>486
ありがとうございます
やっぱいきなりでは無理ですよね


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