トップページ⇒tech
1001コメント265KB

Pythonのお勉強 Part14

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2006/10/20(金) 00:34:56
日本 Python ユーザ会
http://www.python.jp/Zope/
Python オフィシャルサイト
http://www.python.org/
Python 2.5
http://www.python.org/download/releases/2.5/
IronPython
http://www.codeplex.com/Wiki/View.aspx?ProjectName=IronPython
まとめ wiki
http://www7a.biglobe.ne.jp/~yasozumi/python/wiki/
Pythonの入門書「みんなの Python」
http://www.amazon.co.jp/gp/product/479733665X/

Pythonのお勉強 Part13
http://pc8.2ch.net/test/read.cgi/tech/1157984472/
0951デフォルトの名無しさん2006/11/11(土) 00:35:17
join
0952デフォルトの名無しさん2006/11/11(土) 01:10:14
>>946
self.buffer
0953デフォルトの名無しさん2006/11/11(土) 08:54:32
>>950
必ずしも速くはない(状況次第)ということを>>948の結果は示している。
0954デフォルトの名無しさん2006/11/11(土) 09:58:11
結局読みにくいコードにするくらいなら素直に書け

特に性能上のボトルネックになる部分なら
チューニングも悪くはないが
0955デフォルトの名無しさん2006/11/11(土) 10:25:18
ボトルネックはおまえの能力。Python に非は無い。
0956デフォルトの名無しさん2006/11/11(土) 20:19:46
この時期ボトルネックのセーターは暖かくていいよね。
0957デフォルトの名無しさん2006/11/11(土) 20:23:27
そろそろボトルネック奏法の話をしようぜ
0958デフォルトの名無しさん2006/11/11(土) 22:34:52
rubyで書かれた「deplate」というWikiのコンバータがあります
Pythonで同じようなものありますでしょうか?

VimのWikiモードみたいなもので「Viki」ってのがありまして
そこからコンバータでhtmlに変換しようとしています

Vikiのサイトでdeplateが紹介されていたのですが
PythonでそんなんあればPythonのほうがいいと思いました

ご存じのかたいますか?
0959デフォルトの名無しさん2006/11/11(土) 23:49:27
Docutils
0960デフォルトの名無しさん2006/11/12(日) 01:44:42
JapaneseCodecsをインストールしようとしているんですが、
python setup.py installを行っても、次のようなエラーメッセージが出て、完了しません。

$ python JapaneseCodecs-1.4.11/setup.py install
/usr/lib/python2.4/distutils/dist.py:222: UserWarning: 'licence' distribution option is deprecated; use 'license'
warnings.warn(msg)
running install
running build
running build_py
error: package directory 'japanese' does not exist

'japanese'のパッケージがないからエラーだよ、って意味なんでしょうけども、
対処方法がわかりません。どなたかご存じではないでしょうか。
0961デフォルトの名無しさん2006/11/12(日) 01:45:53
いまどきJapaneseCodecsなんて不要だということに気が付こうぜ
0962デフォルトの名無しさん2006/11/12(日) 01:52:10
2.4には標準で入ってる
0963デフォルトの名無しさん2006/11/12(日) 01:54:06
へーそうなんだ。ありがとうございます。

しかし納得がいかない。。。
日本語を扱うためのパッケージをDLし、いざインストールするとそれがないと言われるなんて。
十中八九私に過失があるんでしょうけど。

必要ないならば気にせずにやっていこうと思います。
0964デフォルトの名無しさん2006/11/12(日) 01:55:36
>>962
納得です。どもでした。
0965デフォルトの名無しさん2006/11/12(日) 01:56:13
そろそろJapaneseCodecsのことは忘れてあげてください
0966デフォルトの名無しさん2006/11/12(日) 02:17:49
むしろ ninix を忘れないでくれ、ninix
0967デフォルトの名無しさん2006/11/12(日) 03:30:23
Python Wart with Exception and Stack Frame
http://fucoder.com/2006/11/python-wart-with-exception-and-stack-frame/
>  Any convenient solution?
0968デフォルトの名無しさん2006/11/12(日) 03:31:04
>>960
$ cd JapaneseCodecs-1.4.11
$ python setup.py install
0969デフォルトの名無しさん2006/11/12(日) 03:57:03
>>967
def main():
  print 1
  try:
    bar()
  except:
    print 2
  print 3
if __name__ == "__main__":
  main()
  print 4
みたいに try: except: をトップレベルに置かないようにするとか
def bar():
  try:
    baz = Foo()
    raise 'Doh'
  finally:
    del baz
みたいに finally: を使えばいいとかそういう話なのかな。
0970デフォルトの名無しさん2006/11/12(日) 04:20:06
参考までに。

"del x" は直接 x.__del__() を呼び出しません。
  "del x"は x への参照カウント (reference count) を 1 つ減らします。
  x.__del__()は x への参照カウントがゼロになった際にのみ呼び出されます。

オブジェクトへの参照カウントがゼロになるのを妨げる可能性のあるよくある状況には、以下のようなものがあります。
  1.複数のオブジェクト間における循環参照 (二重リンクリストや、親と子へのポインタを持つツリーデータ構造)。
  2.例外を捕捉した関数におけるスタックフレーム上にあるオブジェクトへの参照 (sys.exc_traceback に記憶されているトレースバックが、スタックフレームを生き延びさせます)。
  3.対話モードでハンドルされなかった例外を送出したスタックフレーム上にあるオブジェクトへの参照 (sys.last_traceback に記憶されているトレースバックが、スタックフレームを生き延びさせます)。

1の状況については、明示的に循環参照を壊すしか解決策はありません。
2・3の状況は、None を sys.exc_traceback や sys.last_traceback に入れることで解決できます。
0971デフォルトの名無しさん2006/11/12(日) 04:36:23
ローカル変数の解放を、参照カウントによるGCで行われるようにしたいけど、例外を投げると
例外のスタックフレームの中で参照されちゃうから、参照カウントが0にならなくて
スコープを抜けても解放されないっていう話みたいだね。いちいち例外情報を消すのがめんどい、と。

例外が処理されたら、例外情報が自動的にクリアされるようにできればいいんだろうけど、
できるんだろうか。処理されない例外をフックする事は可能みたいだけど。
0972デフォルトの名無しさん2006/11/12(日) 05:53:44
どうみてもGuidoの責任です。
0973デフォルトの名無しさん2006/11/12(日) 06:53:04
パイソンで書かれた有名なソフト教えて
GIMPのフィルタくらいしか知らん
0974デフォルトの名無しさん2006/11/12(日) 07:06:33
Bittorrent
0975デフォルトの名無しさん2006/11/12(日) 07:14:39
>>973
http://ja.wikipedia.org/wiki/Python
の「Pythonによって実装されているフリー/オープンソースソフトウェア」あたりを見るといいよ
0976デフォルトの名無しさん2006/11/12(日) 09:05:34
>>959さん
Docutils試してみます
rest2webなんてのもあったりするんですね
いろいろ探してみます

ありがとうございました
0977デフォルトの名無しさん2006/11/12(日) 10:39:41
問題があれば理にかなった解決策を見つけて直す。
これまでもそうだったしこれからもそうだ。
0978デフォルトの名無しさん2006/11/12(日) 15:57:56
>>974-975
おぉ!あるんだなやっぱり
ありがとぉ
0979デフォルトの名無しさん2006/11/12(日) 16:48:24
pythonの調べもの(関数の機能や引数など)は普段Webからやるのですが、ローカルでかつコマンドラインで
調べる方法も欲しいなあということで探したらpydocを見つけました。

で、質問があるのです。
例えば関数renameの機能や引数が知りたいとします。でもosというモジュールの名前も存在も知らないとします。
この時、コマンドラインのpydocから、os.renameという情報まで辿りつくことはできるのでしょうか?
pydoc rename や pydoc -k rename のどちらもダメのようですし。。。

こういう検索をしたい場合、直接ドキュメントにgrepするしかないのでしょうか?
0980デフォルトの名無しさん2006/11/12(日) 22:55:23
新ヌレ

http://pc8.2ch.net/test/read.cgi/tech/1163339504/
0981デフォルトの名無しさん2006/11/13(月) 12:26:31
なんと予想に反してリスト内包表記がいちばん速かった!
http://tabesugi.net/memo/2006/b2.html#121342
0982デフォルトの名無しさん2006/11/13(月) 12:42:36
>>981
チュートリアル読めばわかることをいちいち書くな。
0983デフォルトの名無しさん2006/11/13(月) 12:58:03
どこを読めば書いてあるんだ?つか、お勉強スレなんだからいいじゃねえか。
どこかに書いてあることは書けないなんつってたら、荒らししか住めないスレ
になっちまうぞ。
0984デフォルトの名無しさん2006/11/13(月) 13:11:51
もうなってる。
0985デフォルトの名無しさん2006/11/13(月) 13:47:16
マジレスすると、Python2.5では1,2,3は大差なかった。順位も試すたびに
変わるし、あんまり気にする必要ないんじゃないかと思われ。
import time
count = 10000
tests = []
def test():
    s = ''
    for i in range(count):
          s += str(i)
tests.append(test)
def test():
    s = ''
    for i in xrange(count):
        s += str(i)
tests.append(test)
def test():
    s = ''.join([ str(i) for i in range(count) ])
tests.append(test)
def test():
    s = ''.join([ str(i) for i in xrange(count) ])
tests.append(test)
totals = [0.0] * len(tests)
for n in xrange(10):
    for i, test in enumerate(tests):
        t1 = time.time()
        test()
        t2 = time.time()
        totals[i] += (t2 - t1) * 1000 # msec
for total in totals:
    print total / 10
0986デフォルトの名無しさん2006/11/13(月) 13:59:22
って、Windowsのtime.time()の解像度が低いせいか?orz
0987デフォルトの名無しさん2006/11/13(月) 14:21:55
QueryPerformanceCounterを使うwintime.timeをでっちあげて計ってみた。

#count=1000
4.72554564476
4.67648841441
3.90035584569
3.69968898594
4.24475744367
4.1335426271

#count=10000
54.5079901814
50.9173091501
51.2835010886
47.8802196681
55.1138479263
50.6915263832

内包表現が速いってのは本当っぽい。しかしxrangeが遅いというのは
少なくともPython2.5では真実ではない。
0988デフォルトの名無しさん2006/11/13(月) 16:46:47
>986
流れが良く分かってないけどこんなのがあるね:
http://doc.astro-wise.org/timeit.html
| The difference in default timer function is because on Windows,
| clock() has microsecond granularity but time()'s granularity is 1/60th
| of a second; on Unix, clock() has 1/100th of a second granularity and
| time() is much more precise.
0989デフォルトの名無しさん2006/11/13(月) 18:27:42
おお、調べてみます。
0990デフォルトの名無しさん2006/11/13(月) 20:31:52
1000get…には遠いか
0991デフォルトの名無しさん2006/11/13(月) 22:32:24
あと10レスだからさして遠くない
0992デフォルトの名無しさん2006/11/13(月) 23:04:23
ここで新スレに移動
0993デフォルトの名無しさん2006/11/13(月) 23:10:26
Python初心者はこのスレと一緒に埋め立て。
0994デフォルトの名無しさん2006/11/13(月) 23:11:43
>>982
tabesugi warosu(wwwwwwww
0995デフォルトの名無しさん2006/11/13(月) 23:13:53
ウメ
0996デフォルトの名無しさん2006/11/13(月) 23:16:49
Zope関係者の外基地も一緒に埋めようぜ。
0997デフォルトの名無しさん2006/11/13(月) 23:58:21
誘導埋め埋め

Pythonのお勉強 Part15
http://pc8.2ch.net/test/read.cgi/tech/1163339504/
0998デフォルトの名無しさん2006/11/14(火) 00:02:19
998
0999デフォルトの名無しさん2006/11/14(火) 00:04:26
py1000
1000デフォルトの名無しさん2006/11/14(火) 00:05:29
1000だったらPython初心者はもう来ない。
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。