1 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 01:27:53 ] Python オフィシャルサイト www.python.org/ 日本Pythonユーザ会 www.python.jp/Zope/ FrontPage - Pythonのお勉強 python.rdy.jp/ 前スレ pc11.2ch.net/test/read.cgi/tech/1201073019/l50 ◆関連スレッド Microsoft IronPython 1.0 pc11.2ch.net/test/read.cgi/tech/1157686822/ Python の宿題ここで答えます Part 1 pc11.2ch.net/test/read.cgi/tech/1153585095/ 2ch検索: [python] find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python ◆関連リンク Python 日本語ドキュメント - Pythonistaのお友達 www.python.jp/doc/release/ Pythonのバイブル的書籍 www.amazon.co.jp/dp/4797341815 その前編 www.amazon.co.jp/dp/4797341815
800 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:14:31 ] x%y==0 は、x%y<1の方が短い あと、(i/10==3)or(i%10==3)だったら'3'in`i`が短い
801 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:20:56 ] for i in range(1,101):print(i%3<1or'3'in`i`)*'Aho'or i
802 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 14:23:20 ] for i in range(100):print(i%3/2or'3'in`-~i`)*'Aho'or-~i
803 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 15:10:14 ] ('3'in`-~i`) == ('3'in`~i`)
804 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:02:03 ] くだらね
805 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:06:33 ] strと``ってどう違うの? 測ると``の方がだいぶ速いみたいだけど。
806 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:27:25 ] UNARY_CONVERT と CALL_FUNCTION
807 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:32:14 ] strじゃなくてreprだな
808 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 16:57:31 ] str は、そのオブジェクトを表す適当な文字列 repr は、そのオブジェクトを表すpython 式 >>> `'a'` "'a'" >>> str('a') 'a' >>> `2**32` '4294967296L' >>> str(2**32) '4294967296'
809 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 18:48:30 ] >>> [u'ほげ',u'ふが'] [u'\u307b\u3052', u'\u3075\u304c'] >>> `[u'ほげ',u'ふが']` "[u'\\u307b\\u3052', u'\\u3075\\u304c']" >>> `[u'ほげ',u'ふが']`.decode('unicode-escape') u"[u'\u307b\u3052', u'\u3075\u304c']" >>> print `[u'ほげ',u'ふが']`.decode('unicode-escape') [u'ほげ', u'ふが'] 各行の動作の違いを教えてください
810 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:19:51 ] >>807 >>808 なる、reprと同じだったね。 にしても不思議、何度測ってもrep()より``のが速い。
811 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 19:54:57 ] >>810 速度は>>806 が書いてあるように `` が UNARY_CONVERT のバイトコードだけになるから
812 名前:デフォルトの名無しさん [2008/03/20(木) 20:23:06 ] IDLEって完全にPython自身で書かれているのか・・・ ってことは自分のプログラムの途中から IDLE を起動するなんてこともできるのか?
813 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 20:57:48 ] import wx app = wx.PySimpleApp(0) frame = wx.Frame(None, -1, "Hello wxPython World!") app.SetTopWindow(frame) frame.Show(True) app.MainLoop() > AttributeError: 'module' object has no attribute 'PySimpleApp' 環境ubuntu7.10。wxPythonは入れたが上のエラーが出る。なぜ?
814 名前:デフォルトの名無しさん mailto:sage [2008/03/20(木) 21:02:57 ] 他にwx.pyがあるんじゃないか?そのスクリプト自体がwx.pyとか
815 名前:813 mailto:sage [2008/03/20(木) 21:05:27 ] うわ本当だ。。。 その通りです。ありがとう。>>814
816 名前:デフォルトの名無しさん mailto:sage [2008/03/21(金) 01:58:54 ] >>811 へー、バイトコードなんて調べた事無かったから>>806 は意味不明でしたw ようするに最終的にreprを呼ぶコードが出来るんだけど、 ``から出来たコードの方が速く処理が終わるのかな。
817 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:10:27 ] wxWidgets にはさ、GUI を XML で記述するってのがあるじゃん。あれと同じ理屈で Tk を YAML で記述するってのは無いかね。。。。yaml がなければせめて XML で。最初は自力で簡単なコーディングしてて gui_yaml = """ frame1(Frame): text: "Hello tk!" button1(Button): text: Exit command: quit """ て感じの yaml 形式テキストをつくって import yaml dict_ = yaml.load(gui_yaml) すると、 {"frame1(Frame)": { "text": "Hello tk!", "button1(Button)": { "text": "Exit", "command": "quit" }}} ていう辞書になるので、これを適当に解析して name(base_class) という項目を見つけたら指定されたクラスインスタンスを生成して、 command って項目があったら値に対応するメソッドを関連づけて… みたいな感じで Tk GUI を構築しようとしたんだけど、辞書だと順番が保存されないんで、コントロールを生成する順番に依存する処理の場合に死ぬる事に気づいた。 packするとき、どの順番で pack する?とか。grid 使えば順番非依存になるのかも。 というわけで自分でつくるのあきらめたので、できあいのやつ教えてください。
818 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:19:17 ] もしマトモに yaml -> Tk ビルダ作ったら、みんな使ってくれるかい?
819 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:24:56 ] なんで今更Tkにこだわるのさ
820 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:35:39 ] だって標準ライブラリにくみこまれてるじゃん
821 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 01:46:29 ] 辞書にorder項目を追加するだけじゃね?
822 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 02:13:48 ] 順番を保存するならシーケンスにするしかないよね。 てか辞書じゃ重複できないから、その例ちと変な気が。 Tkだととても軽いというのなら意味は有ると思う。
823 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 02:56:18 ] import yaml # PyYAML from pyyaml.org/wiki/PyYAML import Tkinter import re def build(parent, dic, commands): widget = None for key, val in dic.items(): o = re.match(r"(?P<name>\w+)\((?P<base>\w+)\)", key) if o: name, base = o.group("name", "base") klass = getattr(Tkinter, base) widget = klass(parent) #widget.pack() if parent: setattr(parent, name, widget) if isinstance(val, dict): build(widget, val, commands) elif key == "command": parent["command"] = commands[val] elif key == "pack": parent.pack(**val) if isinstance(val, dict) else parent.pack() elif key == "grid": parent.grid(**val) if isinstance(val, dict) else parent.grid() else: parent[key] = val return widget
824 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 02:59:55 ] # テストコード if __name__ == "__main__": gui_dict = yaml.load(""" frame(Frame): button1(Button): grid: {column: 1, row: 2} text: OK button2(Button): grid: {column: 2, row: 2} text: Cancel ent1(Entry): grid: {column: 1, row: 1} ent2(Entry): grid: {column: 2, row: 1} memo1(Text): grid: """) commands = {} app = build(None, gui_dict, commands) app.mainloop()
825 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:03:13 ] 823-824をそのまま貼付けて実行してください。 Entry の textvariable の扱いをどうすればよいかがさっぱり思いつかん。 一貫性を持たせるという意味で "text" でアクセスできればいいんだけど。
826 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:35:59 ] 標準にこだわってるくせに pickle使わずにYAML使う愚
827 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:52:49 ] だって xml より yaml のほうが編集しやすいじゃん。 まあ、たしかに yaml 表現が python の辞書リテラルとほとんど同じだから、 まんま python 式で書いてもいいんじゃ?と思ったのは事実。 だけど文字列を "" で囲まなくて良いのは地味に楽。
828 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 03:55:20 ] class TestClass(object): def __init__(self, i_name): _name = i_name def __eq__(self, i_other): if not isinstance(i_other, TestClass): return False return self._name == i_other._name a_key = TestClass('test') a_dic = {} a_dic[a_key] = 0 --------------------------------------------------- 上のソースコードをPython 2.5.2で実行すると問題ないけど、 Python 2.6a1で実行すると、最後の行でエラーがでたよ。 TypeError: unhashable type: 'TestClass' Python 2.6以降だと、object.__hash__()は実装されてないものなん?
829 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 04:06:37 ] >>827 それならさ、 wxPythonのXRCedが吐き出すXMLをYAML化してよ
830 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 04:11:50 ] >>823 GJ!! インデント崩れてない?
831 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 04:46:11 ] # インデント修正+コメント加筆 def build(parent, dic, commands): widget = None for key, val in dic.items(): o = re.match(r"(?P<name>\w+)\((?P<base>\w+)\)", key) if o: # name(base_class_name) にマッチした場合は新規にウィジェット生成する name, base = o.group("name", "base") # 名前とクラス名を取り出す widget = getattr(Tkinter, base)(parent) # ウィジェット生成 if parent: setattr(parent, name, widget) # 親の属性としてウィジェットを追加 if isinstance(val, dict): build(widget, val, commands) # ウィジェットの設定 elif key == "command": parent["command"] = commands[val] # 呼び出し可能なオブジェクトをコマンドに指定 elif key == "pack": parent.pack(**val) if isinstance(val, dict) else parent.pack() elif key == "grid": parent.grid(**val) if isinstance(val, dict) else parent.grid() else: parent[key] = val return widget # 最後に生成したウィジェットを返す
832 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 04:50:23 ] # テストコード gui_dict = yaml.load(""" frame(Frame): button1(Button): grid: {column: 1, row: 2} text: OK button2(Button): grid: {column: 2, row: 2} text: Cancel ent1(Entry): grid: {column: 1, row: 1} ent2(Entry): grid: {column: 2, row: 1} memo1(Text): grid: """) commands = {} app = build(None, gui_dict, commands) app.mainloop()
833 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 20:58:33 ] このまま進歩してって、数日したらちょっとしたフレームワークが出来上がってそうだ。
834 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:40:58 ] ____ / \ / ─ ─ \ / (●) (●) \ ない ない | (__人__) | \ ` ⌒´ ,/ r、 r、/ ヘ ヽヾ 三 |:l1 ヽ \>ヽ/ |` } | | ヘ lノ `'ソ | | /´ / |. | \. ィ | | | | |
835 名前:デフォルトの名無しさん mailto:sage [2008/03/22(土) 23:42:14 ] 思いつきだけで始めたことはたいてい早晩ポシャる 失敗するのはいいのだが、問題なのは、 一度や二度の失敗で学ばない人間がいかに多いかということだ
836 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:10:21 ] Pythonを選んだこと自体が失敗だからなぁ
837 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 00:13:51 ] 歴史から学べるのはただ一つ、 人は歴史から学ばないということだけ だとばっちゃが言ってた
838 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 01:22:16 ] つまり韓国に関わっていたら日本は不幸になるってことですね! さすがばっちゃ!頭いいや!
839 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 01:47:02 ] >>835 一度や二度の失敗で投げてたら何も作れんぞ。 大事なのは、捨てて作り直す勇気だ。
840 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:04:52 ] 自作してる時点でTkの負けだと思いました>< xml使ってないけど。
841 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:22:33 ] 出来あがった物が思いの外ショボいと モチベーションが続かないんだよなぁ
842 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:33:50 ] >>837 φ(..。 )メモシテオコウ
843 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 03:40:18 ] こういうのは衝動が肝心だと思うんだ。 ガーッと書いて結局没になる、そういう自己満足って大事よ。 あんまりはまるとPC恐怖症になるけど。
844 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 07:13:06 ] 何度やっても同じだよ。 そもそもセンスがないんだから。一生ドカタ暮らし。
845 名前:デフォルトの名無しさん [2008/03/23(日) 09:23:21 ] 一生ドカタできるならまだいいさ。 俺なんかすら干されそうだ。 マァ無能だから仕方ない。 結構なんてするんじゃなかった。 自殺すらできない。保険増額しておこう。
846 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:28:05 ] なんだこの流れ
847 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 11:39:22 ] 流れなのかこれは。
848 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 12:50:59 ] 春は色々湧く季節
849 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:28:31 ] PythonにRubyのPathnameみたいなクラスってないですか? os.path.hoge(path); os.path.huga(path)が面倒なので p = Path(path)などとしておいて p.hoge(); p.huga()とできるような感じのものでいいんですが… 自分でつくるしかないですかね?
850 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:37:35 ] よく意味が分からんがimport os.path as pって意味ではなくて? 別にimport os.pathしてからp = os.pathでもいいけど。
851 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:47:44 ] すまん。Rubyしらんのに適当いうもんじゃなかった
852 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 13:57:32 ] >>849 標準ではないけど ttp://www.jorendorff.com/articles/python/path/ とか
853 名前:849 mailto:sage [2008/03/23(日) 14:19:38 ] >>850 >>852 いろいろ検索しても見つからなかったのでないのかと思っていましたが あるんですね。探し方が悪かっただけで。ありがとうございます!
854 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 14:27:19 ] >>853 今後もPythonと付き合っていくなら可能な限り標準モジュールを利用した方がいいよ
855 名前:850,851 mailto:sage [2008/03/23(日) 14:46:12 ] >>853 いや、俺のは違うから。スマン。 RubyのPathnameオブジェクトってのを知らなかったんで 勘違いしたんだよ。
856 名前:849 mailto:sage [2008/03/23(日) 15:07:30 ] >>854 そういうものなんですかね? os.pathは使うとき逐一引数にパス名指定しないといけないので面倒なんですよね… >>852 さんに紹介していただいたようなクラスが標準に入ればいいのですが >>855 ああ、すいません。書き方が悪かったみたいです >>855 さんの回答は今回はちょっと希望に沿うものではなかったのですが 質問したときは回答していただいた方全員にお礼を言いたいと思っているので…
857 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 18:13:25 ] 「できるだけ標準モジュールを使え」はGuideの言葉だっけ?
858 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 19:29:53 ] >>849 os.stat()を使えば解決しそうだけど
859 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 20:17:05 ] lambdaで逃げるって手も...ないか。
860 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 21:26:23 ] Guideって誰? それどんな道案内?
861 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:15:43 ] >>860 かわいそうなPython使いを ジョセフ様に認められた清く正しい言語Rubyへの 改宗を促すGuideです。 Pythonを作られたGuidoさんとは別です。
862 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 22:20:26 ] カルト言語逝ってよし。
863 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 11:42:31 ] ruby使いは正確悪いことで有名
864 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 13:56:51 ] お前の性格の悪さも分かった
865 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 14:33:40 ] >>863 たまには変換候補のことも思い出してあげてください。
866 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 14:37:14 ] pythonで数値計算はnumpyだけど数式処理は何かあるの?
867 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 17:54:39 ] しらない
868 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:00:16 ] 他人を敬えない人は、他人から敬われることはありません。 日本語が不自由ならなおさら。 良くて一生ドカタ。 たいていはいい年になってから路頭に迷う。 本当にありがとうございました。
869 名前:デフォルトの名無しさん mailto:sage [2008/03/24(月) 19:10:30 ] 経験者の話は説得力がありますね
870 名前:デフォルトの名無しさん [2008/03/24(月) 23:36:43 ] なんといつのまにか wxVCLなるものがあるみたいじゃないか。VCLの使い勝手が忘れられない俺がまちのぞんだもの。 だれかpythonバインディング作って
871 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:20:38 ] C++スレにも書いたけど、こっちにもネタ投下してみる。 なるべく短いプログラム書いてみようぜ。 基本問題: 例えば N = 8 としたときに 「この文章には0が1個、1が5個、2が3個、3が2個、 4が1個、5が2個、6が1個、7が1個含まれています」 という文章が生成されるとして、9以下の任意の自然数Nについて もこのような文章を生成するプログラムを作れ。 解がない場合は「解なし」とする。 発展問題: Nが10以上の時、解はあるだろうか?
872 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:28:43 ] 一応自分の答え(うろ覚え)さらしとく X = 8 S = ["" for i in range(X)] found = False def count(num): ret = 0 for i in S: ret += i.count(str(num)) return ret def check(): for i in range(X): if count(i)+1 != int(s[i]): return found = True print "数字の数は", [str(i)+"が"+str(s[i])+"個" for i in range(X)] def find(depth): if depth < 0: check() else: for i in range(X): s[depth] = i find(depth - 1) if not found: print "解なし" print "終了" find(X-1)
873 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:47:48 ] ごめん、問題の意味がわからない
874 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:53:15 ] 短くしようとしたら総当りになると思う。 それよりもスマートな解き方を探すほうが面白そうだな
875 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 02:58:37 ] >発展問題: >Nが10以上の時、解はあるだろうか? 10がn個あります、と言った時の意味がわからない
876 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:01:55 ] どっかの課題丸投げ乙
877 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:07:32 ] 変数Nは「」内に影響しないため、Nがどのような値でも 「この文章には0が1個、1が5個、2が3個、3が2個、 4が1個、5が2個、6が1個、7が1個含まれています」 という文章が生成されます。
878 名前:871 mailto:sage [2008/03/25(火) 03:19:09 ] 丸投げじゃないよ。今日仕事中に思いついた問題。 ちなみにNが4のときの解。ようするに N 以上の数を使わない。 「0が1個、1が2個、2が3個、3が2個」 Nが10のときは "10" という部分文字列がいくつ含まれるかって解釈にしようと思う。
879 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 03:57:45 ] 0-2 1-8 2-3 3-3 4-1 5-1 6-1 7-1 8-2 9-1 10-1
880 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 09:57:56 ] ドウカクカクカク。
881 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:34:00 ] ブラック民パイ読んで、練習でHP作ってるんだけどさあ・・・・HTMLのテンプレートを簡単につくるソフトでいいのってないの? ホームページビルダー(バージョンふるいのしか持ってない)で作って、置き換え文字を書き加えるとかじゃ・・・・ちょっと使いづらいぜ。
882 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 10:43:31 ] >>881 HTMLかくんだったら、テキストエディタでおk。 入力補助がついてるのもあるし、なんだったらメモ帳やワードパッドでもいける。
883 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:31:43 ] >>871 が基地外にしか見えない
884 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:41:05 ] >881 Nvu nvudev.com/
885 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 11:42:58 ] >>883 >>871 が見えるおまえは基地外認定
886 名前:866 mailto:sage [2008/03/25(火) 12:03:30 ] >>866-867 ないのならmaximaのあるcommon lispに乗り換えを決意した
887 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 13:45:09 ] お昼に見てからやっと >>871 の意味が分かったわ ちょっと仕事の合間に考えて見るか
888 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 19:05:30 ] >>871 をN<=10(二桁にならない)までで高速化してみた codepad.org/m5o71GS1
889 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 20:54:01 ] C++は老害言語。
890 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 22:00:41 ] >>884 Nvuは開発止まってるから後継ソフトにしようね KompoZer: kompozer.net/
891 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:21:00 ] 回転座標求めるのに def rot(x, y, radian): c = math.cos(radian) s = math.sin(radian) return x*c - y*s, x*s + y*c と def rot(x, y, radian): return math.hypot(x, y) * cmath.exp(radian*1j) の速度を比べてみると、明らかに複素数使った方が速い。。。が X, Y成分を取り出す処理を入れると結局始めから三角関数使った方が速い。なんかくやしい。
892 名前:デフォルトの名無しさん mailto:sage [2008/03/25(火) 23:48:33 ] x,yはc.real と c.imag で取り出してる?
893 名前:891 mailto:sage [2008/03/26(水) 00:16:01 ] >>892 ttp://codepad.org/e53Ole56 あれ? デスクトップでやった時と結果が違う。。。。
894 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:32:48 ] rpy.sourceforge.net/ Rをpythonから呼べる 便利そうだがnumpyで直接計算するのと比べてどうなんだ
895 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:38:08 ] modular.math.washington.edu/sage/ pythonの数式処理っぽいのあった
896 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 03:44:09 ] python -> sage -> maxima -> common lisp でcommon lispをpythonから呼べるね もっと単純な方法ありそうな気もするけど
897 名前:デフォルトの名無しさん [2008/03/26(水) 10:45:12 ] py2exe 使うと使っている標準モジュールが自動的に 同梱されますが、これも丸ごと配布してしまっていいん でしょうか?というか、py2exe で実行ファイル形式にして 配布するときってライセンス的にどんな制約があるんでしょう? 自分が作ったプログラムも含めてPSFに従わないとだめ?
898 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 13:25:01 ] PSFはGPLじゃないのでちゃんとPythonの著作者表示があれば自由だったはず
899 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 14:22:28 ] PSFはライセンスじゃない。 それはそれとして、っ ttp://www.python.jp/pipermail/python-ml-jp/2007-May/004044.html
900 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 14:31:13 ] >>894 ・統計屋の中で流行っている統計手法はいち早くRで誰か実装するので、 自分で書き直す手間は省ける。 ・Rになれている人に使いやすい。 ・グラフなんかをプロットするとよく落ちる。 ってところかな。
901 名前:デフォルトの名無しさん [2008/03/26(水) 15:45:42 ] すまんが、cgiのGETとPOSTって両方一度にはつかえないの???
902 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 15:51:19 ] 仕様書嫁
903 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 16:04:25 ] 実装依存で使える場合もあるかもしれないけど、 どこでも動く保証はないっていう感じだったきがする<GET、POST同時 まあ、普通にやめといた方がいいと思う
904 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 19:07:01 ] >>901 os.environ['QUERY_STRING']に入ってない?
905 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:25:33 ] GET,POSTはHTTPのメソッドの名前。当然どっちかしか使えん。 HTTPの仕様上はPOSTで「?」付URLを呼び出せる。 >>904 の言う通り cgi.parse_qs(os.environ['QUERY_STRING']) でよかったとオモ POSTされたデータは cgi.parse(sys.stdin) か cgi.FieldStorage()
906 名前:デフォルトの名無しさん [2008/03/26(水) 23:27:08 ] ttp://www.openplans.org/projects/plone-summer-of-code-2008/project-ideas ふるって応募を!
907 名前:デフォルトの名無しさん mailto:sage [2008/03/26(水) 23:31:48 ] POSTのときにQUERY_STRINGとれない環境もある
908 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:08:23 ] panel = wx.Panel(frm,-1) こんなんがあって、panelをデストラクタするにはどうすれば良いんでしょうか。 ある状況でパネルを削除したいんですが。
909 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:24:14 ] panel.Destroy() del panel じゃね
910 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 08:27:21 ] おお!できました。 ありがとうございます。
911 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 18:49:43 ] 297 :デフォルトの名無しさん:2007/12/23(日) 02:11:55 >>294 =269 か? メソッドオーバーロードはrubyではできない。こんな感じで自分で処理しなさい def meth(arg) if arg.kind_of?(String) puts '文字列' else case arg when Array then puts '配列' else puts 'その他' end end end それとrubyの配列(Array)に次元なんて無い。配列が入れ子になってるだけ。 python だと、どう処理を描けば良いですか?
912 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 18:56:45 ] Pythonでも同じだよ 引数の型とか数を調べて分岐するだけ というかrubyスレの話題を持ってこられると色々勘ぐりたくなるんだが
913 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 19:27:49 ] >>912 メソッドオーバーロード python www.google.co.jp/search?q=%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%AA%E3%83%BC%E3%83%90%E3%83%BC%E3%83%AD%E3%83%BC%E3%83%89%E3%80%80python&hl=ja&lr=lang_ja&start=20&sa=N たまたまググッたら、それらしいコードが見つかったので 張ってみますた。深い意味はありませんです。。。 def mes(arg): if isinstance(arg, str): print '文字列' elif isinstance(arg, list): print '配列' else: print 'その他' とか。引数に文字列渡して if arg == '文字列': elif arg == 'リスト': else: みたいにするのとか。これくらいしか思い浮かばない罠。ご飯食べてくる
914 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 20:30:09 ] とりあえず思いついた適当なコード import sys class OverloadMethod(object): functions = [] def __call__(self, *args, **kwargs): for function in self.functions: if len(args) == function.func_code.co_argcount: return function(*args) raise NotImplementedError def overload(function): obj = sys._getframe(0).f_globals.get(function.__name__) if obj is None: obj = OverloadMethod() obj.functions.append(function) return obj if __name__ == '__main__': @overload def foo(a): print a @overload def foo(a, b): print a + b foo(1) foo(1, 2)
915 名前:デフォルトの名無しさん mailto:sage [2008/03/27(木) 20:55:23 ] Guido謹製 www.artima.com/weblogs/viewpost.jsp?thread=101605
916 名前:914 mailto:sage [2008/03/27(木) 21:02:19 ] スゲーGuidoパパとほとんど一緒じゃん
917 名前:913 mailto:sage [2008/03/27(木) 21:16:33 ] >>914 def overload(function): obj = sys._getframe(0).f_globals.get(function.__name__) if obj is None: obj = OverloadMethod() # コンストラクタみたい obj.functions.append(function) # 関数をストックしてく return obj >>> foo(1) # ストックした関数をポップする >>> foo(1,2) >>> foo(1,2,3) <class exceptions.NotImplementedError at 0x000000000000002C> sys._getframe(0).f_globals のところを globals() にしたら ironpython でも動作確認取れますた。 dir()で表示されるけど, まだ実装されてないのね…_getframe ValueError: _getframe is not implemented annotation で潜らしてポップするか… 勉強になりますた。dくす♪
918 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 02:15:51 ] >>913 キーワード引数
919 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:54:18 ] www.linux-foundation.jp/modules/tinyd3/index.php?id=20 何か意図的に抜いてるような…
920 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:23:04 ] Pythonだけに見事にハブられてますね
921 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 09:34:12 ] うわぁ・・・^^;
922 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 12:41:32 ] エーとおもたがperlも入ってなくね? どういう基準かよくわからんな
923 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 12:43:15 ] Perl/PHP/Rubyは二重丸じゃないか
924 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 12:55:46 ] Pythonの擬似スレッドって、いずれちゃんとしたスレッドになる予定とかってないんですか?
925 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 13:03:26 ] GILのことなら多分とれないよ
926 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 14:53:41 ] 以前にここに貼ってあったpython チートシートのリンクがみつからない
927 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 16:04:50 ] www.google.co.jp/search?&q=python+cheat+sheet www.google.co.jp/search?&q=python+cheat+pdf
928 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 17:01:20 ] バイナリデータをファイルに書きたく思っています。 例えば4バイト整数10ならば、f.write('\x00\x00\x00\x0a') というように。 上記を、例えば f.write(hoge(10, 4)) で実現できるような 既存の関数hogeのようなものがあれば、ご教示頂けないでしょうか? IEEE浮動小数点についても同様なものがあれば教えて頂きたいです。
929 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 17:02:41 ] www.python.jp/doc/release/lib/module-struct.html
930 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 05:46:36 ] pythonのワンライナーは超絶美的
931 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 08:24:23 ] urllib2のmultipart/form-dataサポートマダー
932 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:05:49 ] >>931 ドキュメントにツカエネーヨって書いてあるし今更機能仕様を変える気もないんじゃね? これはもう自分でurllib3を作るしか
933 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 10:08:34 ] urllib2ってメモリリークするよね?
934 名前:デフォルトの名無しさん mailto:sage [2008/03/29(土) 15:02:28 ] python で 宣言できる関数の上限値とかどれくらいなんだろうか? 1万-10万… 10万くらいなら動きそう? メモリ上に保持できる辞書としての 要素数の限界値? (よくわからん)
935 名前:928 mailto:sage [2008/03/29(土) 15:12:30 ] >>929 おー、これですこういうのです。超速レスありがとうございました!
936 名前:デフォルトの名無しさん [2008/03/29(土) 15:43:27 ] >>934 import sys def mksrc(n): print """ def %s(): return %d """ % ('func%d' % n, n) if len(sys.argv) < 2 or not sys.argv[1].isdigit(): print 'usage: hoge.py N' else: for i in range(int(sys.argv[1])): mksrc(i) for i in range(int(sys.argv[1])): print 'print func%d()' % i $ hoge.py 100001 > fuga.py $ fuga.py とりあえず10万は楽勝みたいだ あとは任せた
937 名前:デフォルトの名無しさん [2008/03/29(土) 16:00:39 ] 100万は死んだ ファイルサイズにワロス
938 名前:デフォルトの名無しさん [2008/03/29(土) 16:03:39 ] 100万通過 >>937 OSとかメモリ容量とかによるんで内科医
939 名前:デフォルトの名無しさん [2008/03/29(土) 16:18:24 ] おまいら阿呆だな まで読んだ