1 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:23:19 ] Pythonオフィシャルサイト www.python.org/ 日本Pythonユーザ会 www.python.jp/Zope/ まとめWiki python.rdy.jp/ 関連スレ find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python 前スレ pc12.2ch.net/test/read.cgi/tech/1240678081/
477 名前:デフォルトの名無しさん mailto:sage [2009/08/18(火) 23:42:02 ] シリーズ3作目はフラグ
478 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:10:02 ] MySQL の c ライブラリを直接呼べ
479 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 00:28:14 ] ctypes大作戦
480 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 08:31:36 ] ctypesっていいよね。
481 名前:デフォルトの名無しさん [2009/08/19(水) 18:20:43 ] WebARENAのsuitexが「Python の最新バージョンに対応w」らしいのですが 実際にどのバージョンが入っているかご存知の方はいらっしゃいますか?
482 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 18:28:33 ] 文字通り「Python の最新バージョンに対応w」なら 3.0 なんて有り得ん罠 良くて 2.4 と予想
483 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:20:42 ] 3.1.1
484 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 19:21:14 ] >>482 言ってる事おかしくね?
485 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:16:30 ] >>480 #include <ctypes.h> こうですか?わかりません><
486 名前:デフォルトの名無しさん mailto:sage [2009/08/19(水) 22:27:30 ] 3.x系列への移行はあんまり上手くいってないのか
487 名前:472 mailto:sage [2009/08/20(木) 05:43:09 ] >>474 どうもありがとう。ようやくできた。。
488 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 12:10:46 ] 最新版にアップしてくれるのはありがたいんだけど こんな風にころころ変えられるのも困るかも ttp://php-sql-gdgd.jugem.jp/?eid=66 ttp://php-sql-gdgd.jugem.jp/?eid=67
489 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 12:31:43 ] >>488 これで3.0系にアップデートされたら阿鼻叫喚になるなw
490 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 13:01:44 ] >>481 ご存知の方はいらっしゃいますか?
491 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:08:58 ] 「Python 3.1.1」リリース pc11.2ch.net/test/read.cgi/pcnews/1250773470/
492 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:25:42 ] [ "a" for x in range (10)] と [ "a" ] * 10 は下の方が早い?
493 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:26:29 ] 自分でベンチマークすればいいだろうが
494 名前:デフォルトの名無しさん mailto:sage [2009/08/20(木) 22:29:33 ] 下の方が10倍以上速かった
495 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 02:24:43 ] []の中がImmutableだったら*のほうがいいってことかな
496 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:45:47 ] [ chr(ord('a') + x) for x in range (10) ] を [ "a" ] * 10 みたいな書き方できますか?
497 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 08:33:54 ] ttp://www.pyside.org/ pyqtは使わないほうがいいのか?
498 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 09:54:31 ] pc12.2ch.net/test/read.cgi/tech/1239996587/
499 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 11:07:03 ] ジェネレータの中でエラーが発生すると、 エラーメッセージ中のスタックトレースが ジェネレータ呼び出しまでの部分しか出力されません。 ジェネレータの内部以降のスタックトレースも 出力されるようにするにはどうすればいいのでしょうか。 処理系はIronPythonです。
500 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 13:19:35 ] >>492 下は1つを参照してるんじゃないかな?
501 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 13:23:51 ] >>500 文字列はimmutableだから、ひとつのオブジェクトへの参照のリストになって問題なし。 実際、上のも (CPythonの実装では) 全部同一オブジェクトを参照するよ。 リストのリストを作りたいときは、 [[] for x in xrange(10)] の方が良いね。
502 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 22:16:40 ] >>499 ジェネレータの内部で try except print traceback
503 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 12:58:44 ] 人生の敗北者はもうPython使っちゃだめですか?
504 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 15:12:30 ] >>502 どもども。 手元で追試してみたら、499で書いた制限がCPythonでもIronPythonでも発生しない。 (それぞれ標準コンソールでテスト) 実はPythonインタプリタはC#プログラムから自前で呼び出してるんだが、 そこの初期化なりトラップ法なりが間違っているような気がしてきた。
505 名前:デフォルトの名無しさん [2009/08/22(土) 17:02:41 ] モジュールの先頭に """あれこれ""" とか クラスの先頭に """のれそれ""" 書いてドキュメントとしています. pydoc にかけるとそれらはただ単なる文字列として表示されるだけ なんですが,なんかこう,定められたフォーマットとかあるんでしょうか? それとは別にどっかで見たので __author__ とか __licence__ とか 設定してみたんですが,pydoc はそういうのはガン無視らしいです. いままで覚書をコメント文で書いていたんですが, ドキュメントのこともそろそろちゃんと考えないと 自分的に破たんする(先月の自分は自分じゃない)とおもって Python使いの方はどうやってるのかと.
506 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 17:11:24 ] >>505 EpydocとかPydoctorとか調べてみて。
507 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 17:39:33 ] 公開する気がないんならautherとかlicenceとかいらんような気もするけど このあたりを参考にして書けばいいんじゃないの? www.python.jp/doc/contrib/peps/pep-0257.txt
508 名前:365 mailto:sage [2009/08/22(土) 19:09:34 ] っ
509 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 20:43:56 ] なんでpythonってlist.rindex()ないの?
510 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 21:18:16 ] 需要が無いんだろ。 rangeのようにパラメータの与え方で 逆に動くかとも思って試したが出来なかった。 ソース(Ver2.6,Ver3.1)を見るとこうなってる。 for (i = start; i < stop && i < Py_SIZE(self); i++) { start>stopでデクリメントされればな〜とでも MLに投げればそのうち実装されるんじゃねw
511 名前:デフォルトの名無しさん [2009/08/22(土) 21:48:01 ] 一連の処理の開始から,要所要所までにかかる時間を できれば高精度で(1/100秒くらいで)計測したいと思っています. datetime を使って現在時刻を取得するのではとても精度が 悪いのですが,Pythonの中だけで完結できる方法としては ほかにどのような方法があるでしょうか? timeit は上のような用途には適してないと思います. ある関数内での処理時間を計測するには使えると思いますが, 複数のチェックポイントで次々とというのには不向きかと
512 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 21:55:11 ] どうしてdatetimeが出てきたのかよくわからないのだけれども time.time()かtime.clock()じゃ不十分なのかな
513 名前:デフォルトの名無しさん [2009/08/22(土) 22:17:56 ] いやぁ,単純に datetime.datetime.now() で得たオブジェクトなら そのまま print しても見やすくフォーマットしてくれるなぁ,と. で,datetime.datetime.now() でも十分な精度でした. テストした環境がVMで,しかもその上で動かしてるLinuxカーネルの タイマ割り込みの周期が1000回/秒だったせいで時計がずれまくってた だけだった. つーわけで俺のかんちguyでした
514 名前:デフォルトの名無しさん [2009/08/22(土) 22:33:33 ] 作ったスクリプトが遅いなぁと上の方法で計測してみたところ, Pythonであれこれimportしているせいか 全ての import が終わるまで10秒くらいかかってます. で,そのあとの処理はさくさくと. bogomips が500を切るNASでやってるのが悪いのですが, import を早く済ませるテクニックとかあるんでしょうか. そりゃ絶対的に必要な時間はしかたないですが・・・ ちゃんと pyc もできてるし,打つ手はないかなぁ
515 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 23:07:16 ] importのコストのうち、pycで削減できるのはコンパイル時間のみ。 10秒もかかるってことは、どれかのモジュールのグローバルに重い処理があるんじゃない?
516 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 00:46:19 ] >>514 ある
517 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 02:47:03 ] >>514 テストした環境がVM?
518 名前:デフォルトの名無しさん mailto:sage [2009/08/23(日) 11:09:27 ] (´・ω・`) God knows
519 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 02:12:48 ] 質問です。 8時間悩んだバグが単なる変数の再初期化のし忘れでした。 このやりきれない気持ちをどうすればよいですか。
520 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 02:26:18 ] >>519 自動テストを書く。
521 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 02:52:14 ] 再初期化をする必要がないスコープで書く方法を学ぶ
522 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 06:20:03 ] ∧∧ (´・ω・) おやすみ・・・ _| ⊃/(___ / └-(____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
523 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 08:54:40 ] ∧∧ (´・ω・) おはヨーグルト! _| ⊃/(___ / └-(____/  ̄ ̄ ̄ ̄ ̄ ̄ ̄
524 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 09:28:29 ] >>519 変数名の使い回しなんて最悪だ
525 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 10:30:42 ] おまえら発火損逝った?
526 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 11:27:27 ] はっかそんいった?
527 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 14:20:39 ] 同じモジュールでも、複数のファイルからimportするとその分だけメモリ消費しますか? from hoge import *だとそのファイルの物になって、複数ファイルでfromするとメモリ消費しますか?
528 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 14:29:54 ] >>527 消費しない。 あるモジュールがはじめてimportされるとき、モジュールオブジェクトが作られて、 sys.modulesに保存される。 #a.py print 'hello, I'm a' #b.py print "hello" import a a.foo = 'bar' import c #c.py import a print 'hello, I'm c' print a.foo $python b.py してみて。 次に、 c の import a を、 import sys; a = sys.modules['a'] で置き換えてみて。
529 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 16:32:27 ] 白化村征かなかったのか。駄目だなあ。
530 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 18:11:11 ] 予想してみたけど分りません(>_<) 薄荷無羊駝(シソ科ハッカ属)、咲かなかったのか。 白化村(色素が抜けて全身真っ白の人しかいない伝説の村)、まさか無かったのか。
531 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 18:25:14 ] ハッカービレッジとかそんなのか?知らんけど
532 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 22:23:57 ] GAEあほだろ
533 名前:デフォルトの名無しさん mailto:sage [2009/08/24(月) 22:46:28 ] 3.1.1で大分マシになったようだが、まだまだ遅いな。 www.gtsystem.eu/blog/2009/08/improved-performance-of-python-31/
534 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 08:52:01 ] >>526 ttp://image.blog.livedoor.jp/insidears/imgs/7/a/7a713e87-s.jpg こんな風だった
535 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 11:20:32 ] >>534 アンチ自民キモイな。
536 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:16:56 ] つまらない質問で悪いんだが、 タプル同士をベクトルみたいに足し算するのはどうやるの? ab = (1, 2) ac = (3, 4) abc = (ab[0]+ac[0], ab[1]+ac[1])
537 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:25:34 ] map(sum,zip(ab,ac))
538 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:51:31 ] numpy
539 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:53:23 ] タプルはベクトルでも行列でもねーぞ
540 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:53:48 ] ab = 1 + 2j ac = 3 + 4j abc = ab + ac
541 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:57:38 ] >>540
542 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:59:04 ] つまらない質問で悪いんだが、 タプルを複素数にするのはどうやるの?
543 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 15:59:25 ] >>536 tuple(ai + bi for ai, bi in zip(a, b)) おまけ:2ノルム math.sqrt(sum(ai * bi for ai, bi in zip(a, b)))
544 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:03:02 ] >>542 tup = (1, 2) complex(*tup)
545 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:12:47 ] >>542 complex(*ab)+complex(*ac)
546 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:13:35 ] >>544 thx! つまらない質問で悪いんだが、 複素数をタプルにするのはどうやるの?
547 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:16:44 ] >>546 ((complex(*ab)+complex(*ac)).real, (complex(*ab)+complex(*ac)).imag)
548 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 16:56:39 ] とりあえず吉川と布袋に囲まれたら泣いて謝ると思う
549 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 17:32:01 ] なんのこっちゃわからんが、みんなすごいね
550 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 21:57:23 ] ぬのぶくろは弱いぞ
551 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 05:00:02 ] ヘタれ布袋
552 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 15:14:20 ] パイヤング
553 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 17:20:30 ] matplotlibのbounding box調節関数のサンプルが見つからない
554 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:08:06 ] 文字列 % 辞書 はなんの為に使うんでしょうか? def gettext_noop(string, **kwargs): retval = string if kwargs: retval %= kwargs return retval
555 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:54:29 ] www.python.jp/doc/release/lib/typesseq-strings.html
556 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 18:55:56 ] sprintfみたいなもんや
557 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 20:02:25 ] マンモスありがとうございます
558 名前:デフォルトの名無しさん [2009/08/26(水) 20:24:36 ] "abc%sdef" % "hoge" みたいなフォーマット文字列の書き方とはもうサヨナラ? 悲しすぎる.
559 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 20:57:35 ] "abc{}def".format("hoge")のほうが読みやすい %sdefとかだと文字とフォーマット表記が混じって読みにくい
560 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 21:06:58 ] 長いこと%sやら%dな変換指定子に慣れてるから 他の書式にされると覚えにくくて困る ええC#のことです
561 名前:デフォルトの名無しさん mailto:sage [2009/08/26(水) 23:53:37 ] 正規表現も読みにくいな
562 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 01:08:25 ] LINK = "<%(tag)s %(attr)s>%(name)s</%(tag)s>" dict_ = {} dict_["tag"] = "a" dict_["attr"] = 'href="localhost:8080/ "' dict_["name"] = "hack you" LINK % dict_ MENU = "<menu>\n%(item)s</menu>" ITEM = "<li>%(content)s</li>\n" print MENU % {"item" :"".join([ITEM % {"content": LINK % dict_}]*10)}
563 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 01:55:17 ] LINK = "<{tag} {attr}>{name}</{tag}>".format(tag = "a", attr = 'href="localhost:8080/ "', name = "hack you") ITEM = ("<li>{content}</li>\n"*10).format(content = LINK) MENU = "<menu>\n{item}</menu>".format(item = ITEM) print(MENU)
564 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 01:57:03 ] インデントずれた LINK = "<{tag} {attr}>{name}</{tag}>".format(tag = "a", attr = 'href="localhost:8080/ "', name = "hack you") ITEM = ("<li>{content}</li>\n"*10).format(content = LINK) MENU = "<menu>\n{item}</menu>".format(item = ITEM) print(MENU)
565 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 05:37:11 ] LINK = "<{tag} {attr}>{name}</{tag}>".format( {tag: "a", attr: 'href="localhost:8080/ "', name: "hack you"})
566 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 06:19:49 ] ぶっちゃけ、変数展開型言語も色んなテンプレも別に見やすいわけじゃないんだよな。 なんか良い方法あればいいんだけど。
567 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 16:09:07 ] sqlite3でテーブルが作成されてなかったり、 データベースファイルがないのを検出する方法ってありますか?
568 名前:デフォルトの名無しさん mailto:sage [2009/08/27(木) 18:25:50 ] >>567 > sqlite3でテーブルが作成されてなかったり、 SELECT * FROM sqlite_master; > データベースファイルがないのを検出する方法ってありますか? os.path.exists
569 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 01:00:08 ] 10 Ways To Let People Know You're A Bad Python Programmer ttp://artificialcode.blogspot.com/2009/08/10-ways-to-let-people-know-your-bad.html
570 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 02:06:58 ] 1. Write "God" functions hundred lines of code 2. Never return anything in a function, especially not some type of value that could demonstrate your function succeeded or failed. 3. Never write a test...EVER. 4. Call Perl from Python 5. Screw Control Flow import os if os.path.exists("/tmp"): def myfunc(): x = 4 return x class Foo(object): y = 1 f = Foo() print f.y + myfunc() 6. Abuse conditional logic to the point that you double or even triple an "unmaintainable" Cyclomatic Complexity Score of 50. 7. Use sleep statements like Holy Water. 8. Initiate the same logic more then once, "just to be sure". count = 0 for i in range(5): if os.path.exists("/tmp"): print "bingo" def foo(): print "stuff" if os.path.exists("/tmp"): import sys sys.exit(1) 9. Write Library Code that does a sys.exit(0) on an exception. 10. Reimplement the Python Standard Library in every piece of code you write. Summary If you can do just a couple of these things in every piece of code you write, you are well on your way to writing bad python code! Stay tuned for part II.
571 名前:デフォルトの名無しさん [2009/08/29(土) 05:31:37 ] PyDev 便利に使っているけど、やっぱり餅は餅屋というか、 Eclipse で Java している時のような至れり尽くせり感がないなぁ・・ もっと、こう、至れり尽くせりなPython用IDEって何があるんでしょうか。
572 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 05:35:24 ] eric4
573 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 07:47:42 ] emacs
574 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 08:41:35 ] emacs+rope
575 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 09:16:35 ] emacs+rope+auto-complete+anything
576 名前:デフォルトの名無しさん mailto:sage [2009/08/29(土) 10:30:38 ] おまえらがEclipseをろくに使ったことがないということはよくわかった
577 名前:デフォルトの名無しさん [2009/08/29(土) 10:39:21 ] ううむ・・ericも含めて、それだったら PyDev でいいや・・・