4 :
デフォルトの名無しさん :04/12/28 09:25:32
重複スレ
6 :
デフォルトの名無しさん :04/12/28 14:57:11
= = = = = = = = = = = = = 再 開 = = = = = = = = = = = = =
sys.exit(1)
9 :
デフォルトの名無しさん :04/12/29 01:14:55
素朴な質問。 >6のようなPythonにコンプレックスを持っている人が目立つのはどうして?
10 :
535 :04/12/29 01:16:56
ニシキヘビとPHPはどっちがかっちょいいのですか?
11 :
デフォルトの名無しさん :04/12/29 01:30:55
実際のところ、Python ってどうよ? Ruby より良いのか?
>12 言語ってどうやって比較するのさ
軽さ 速さ 正確さ 視覚性 多様性
>13 正直に言えば便利ならそれで良い 何十何百とあるプログラミング言語を利用して結局Pythonにおちついただけ
>14 それって比較になるの? ならないからこれだけプログラミング言語があるのでは? 人間がそもそも多様なのだし、目的も多様なのだから目的に合せて利用しわければ良い 目的にそって利用できる「人」が優秀かどうかにつきる 言語はどうでもよい
>>15 > 何十何百とあるプログラミング言語
のうち実際に試したのはいくつなのやら。
>>16 どうでもいいなら、みんな違う言語を使ってるよね。
ahoge
ahoge
ahoge
Phython
>18 だからみんな目的にそってちがう言語つかってるよね? ふつうのプログラマって数種類のプログラミング言語使いこなせないと仕事にならん >17 職務経歴書では41個 レガシーシステムだと言語がいろいろまざっているシステム(GUIにVBとDelphiとAppleScriptが同居とか)があり一企業で多数の言語でシステムが動作している物もあるから大変 全部さわらないと移行作業できない バカヤローヽ(`Д´)ノ なんでオレがやらんといかんのだ。今日も年末なのに午後から7つの別の言語でかかれたシステムの所に行く。害虫のやつらVBしかできんとかばっかだし( つД`) ぐちだバカヤローヽ(`Д´)ノ
なんで13が15に答えるんだ?自演か?
>25 ちょうどグチが書きたかったときに見えた 今は反省している 仕事逝ってきます orz
27 :
デフォルトの名無しさん :05/01/02 01:32:59
PythonでNTFSのACLをいぢくる方法を教えてください。
28 :
デフォルトの名無しさん :05/01/02 14:22:22
wxPythonとREALbasic、どちらのほうが動作が軽いですか?
REALbasicってつおいの?
31 :
デフォルトの名無しさん :05/03/20 19:05:19
多重ループから抜けるときって、 例外使うか、関数にするしかないの? 例外使う場合のコストってどんなもんなの?
たしか、breakも内部的に例外使ってるので等価。
33 :
デフォルトの名無しさん :05/03/20 23:41:03
>>32 thx
他の言語を経験してると微妙に気持ち悪いかも
> たしか、breakも内部的に例外使ってるので等価。 初耳だ・・・
>>33 他の言語ってC++とJavaくらい?
もっといろいろ他の言語を経験してると
例外処理とエラーは使いわけるので全然気持ち悪くない。
内部的に例外使ってるってイテレータと勘違いしてない?
ループからの脱出は1回きりなんだから コストは問題になるまいよ。
んなこたーない。それが最外ループとは限るまい。
39 :
デフォルトの名無しさん :2005/03/28(月) 22:08:46
あっちの7のスレは、ずっと人おお杉でない?
先週、鯖移転があった。ブラウザのリンクが前のままなんでない?
こっちはpythonのネタスレ扱いなんでない?
そうですがなんでない?
ポイントは4月1日の記事だということだ。
numpyのことかな。 psyco使ってもCには勝てないと思うし。
IronPython
>>43 恐らくベンチマーク的なパフォーマンスのことじゃなく
ライブラリとかアプリ全体とかそういうレベルの比較なんじゃないかなー。
いずれにせよ著者の経験に基づく主張だと思われ。
俺が敢えて書くなら「PythonがCより速いことは決して無い」と書くだろう。
48 :
デフォルトの名無しさん :2005/04/04(月) 00:39:32
あのー、 初心者です。 ちょっとずうずうしが聞いちゃおう 外人さんの作ったこういうプログラムなんです。 # Since the text areas in superkaramba 0.32 don't autowrap, I have to def wrap(source, nrCols, nrLines): out = '' source = string.replace(source, '\n', '') for i in range(0, nrLines): out = out + string.strip(source[(i*nrCols):((i+1)*nrCols)]) + '\n' return out ユニコードの場合、途中で文字をぶった切ってしまいます。 誰かアドバイスをお願いしまつ。
釣りではありません。
source = string.replace(unicode(source, "utf-8"), '\n', '')
2.4てWin拡張でないんですかね。 PythonをエクセルVBA替わりに使う事が多いんで、今だに2.3でがんばってます。
>>52 おや、これわ。
ひょっとしてwin32all。。。
すんまへん。
http://www.python.jp/Zope/download/win32all ここしか見てまへんでした。
What happened to the build numbers?
All new builds of the pywin32 (win32all) extensions are now released from SourceForge. The release mechanism has changed a little. The new features are:
The new distributions are all built using distutils - the WISE installer is no longer used.
The build numbering has changed. Any single build will be available for all supported versions. For example, build 200 is available for both Python 2.2 and Python 2.3 (whereas previously, one build number was used for Python 2.2, and other for 2.3)
To mark this change, the build numbers have jumped to 200, and will increment from there.
orz
PyJUGは実質停止してる気がする2.4.1リリースのニュースも流れてない 開発してる本家見たほうが正確かも
55 :
43 :2005/04/04(月) 22:19:29
>>44 あははは、
>>47 コーディングのパフォーマンスみたいな意味かな、
Cに比べれば、一行で行う事の出来る作業が多い。みたいな。
lispが、一部、C++のベンチマークを上回っていることを少し前に知ったので、
post lisp 的な事を言われていたpythonのパフォーマンスも高いのかと、
linuxjounalの文章から期待したのですが、、、。
>>45 ,46
jythonといい、pythonて、実装が多数あるんですね。
そういう意味では、言語として(syntaxとか)好まれてるんですね。
Python は中庸を取ったのが良かったんでしょう。 とんがってもいないけど、独りよがりでもない。
57 :
デフォルトの名無しさん :2005/04/05(火) 00:20:54
おっぱいそん
「パフォーマンスはCに匹敵するか、…」に関連するレポート Nine Language Performance Round-up: Benchmarking Math & File I/O Christopher W. Cowell-Shah (2004) www.osnews.com/story.php?news_id=5602&page=3 「I/O」のテスト項目において、VC++とPython+Psyco1.1.1が同値の10.5秒。 CPython 2.3.2(Psyco無し)の結果は11.9秒。 「I/O」のテストとは、"Write one million 80-character lines to a text file, then read the lines back into memory." ソースコード: www.cowell-shah.com/research/benchmark/code
Pychinkoに対抗してOxPyBoinとか作ろうと思ったんだけど どんな内容がいいかな?
対抗するならPyMankoにしてくれ
禿同
下品ですYo
PyPAN
PyZuly
PyPcut
66 :
デフォルトの名無しさん :2005/04/10(日) 00:08:18
次々とお勉強の成果をご披露されている所恐縮ですが・・
>>58 TOTAL
Visual C++ 48.8
Visual C# 65.3
gcc C 73.0
Visual Basic 85.9
Visual J# 90.4
Java 1.3.1 97.6
Java 1.4.2 103.1
Python/Psyco 769.1
Python 1679.0
遅すぎ
>>43 の記事は4/1とはいえ悪質すぎる
>>66 おい、関数型の他の言語と比べるのが筋ってもんじゃないですかい?
pythonは関数型なのか? 比べるならperlとかのスクリプトじゃないのか?
Javaが速いってことはJythonも速いのか?
この手の単純な計算やI/Oは金をかけている処理系は速い。 しかし、実際の複雑な処理は当然だが、インタープリタよりコンパイルする方が速い。 実際の使用感は、 Visual C++ > gcc >>> C#, Java, Visual Basic > Python と言ったところか。。
>>67 しかしschemeやMLと比べるよりは、
perlやawkと比べるべきかと
VM系はプロセスや資源の生成・解放のコストを省略できるメリットがあるな。 いずれにせよコードを書く手間とパフォーマンスはトレードオフだろ。 Pythonのコードがネイティブコンパイラの速度で動いたら誰もC++なんか使わん。
>>72 はい?なんていいましたか?もう一度お願いします。
>>72 >VM系はプロセスや資源の生成・解放のコストを省略できるメリットがあるな。
VMをなんだと思ってるのか知らんが、これは72のただの思い込みなのでダウト
>いずれにせよコードを書く手間とパフォーマンスはトレードオフだろ。
MLとかの例外はいくつもあるのでダウト
75 :
72 :2005/04/10(日) 17:47:32
なんで思い込みなんだ。 perlなりC++なりで書いたCGIと、Java Servletの実行時に必要な処理を比較してくれよ。 プロセス作って初期化してDB接続して…なんてのを省略できるのは VMの大きなメリットだろ?
( ゚д゚)ポカーン
77 :
デフォルトの名無しさん :2005/04/10(日) 18:22:10
今さらPythonの遅さをあげつらうヤシは負け組
>>75 それはアプリケーションサーバのおかげであって
VM のおかげではないでしょ。
どっこい、72はネタと思ってない
ところで74はMLを「書きやすい」と思ってるのか気になる
pythonコード内の速度的律速の個所をCなりニーモニックなりで書けばいいじゃん
最後には全て C に置き換わりそうだね。
つまりPythonはC(C++)のユーザインターフェースなんだよ。 言語自体のUIってことね。
お前らは本当にPythonユーザなのかと
もちろん違うでござる ニンニン
やっぱりママに決めだっこ♪
幸せになりたい
梅干食べたい
すでにC++では書けない身体に
なぜにWHY?
pythonでGUIできますか
96 :
デフォルトの名無しさん :2005/04/15(金) 11:06:42
age
FirefoxにPythonつっこんで、 AjaxをPythonで書けるようにならんかなあ。
ZopeはPythonで書いてあるだけで、Python的でないので嫌 ていうか、サーバでZope使ったってクライアント側はJavaScriptだし。
100 :
デフォルトの名無しさん :2005/04/15(金) 20:35:09
クライアント・サイドのスクリプト言語として Pythonが使えたらホントにうれしいですな。 いまのところJavaScript、Java Applet、Flashくらいしか 選択の余地がないもの。
>>97 Ajaxの存在意義に思いっきり背を向けた話だな。
102 :
100 :2005/04/15(金) 20:37:45
JythonでAppletってのも有りか。
apax じゃないの?
EpiphanyはPyphany入れるとPythonでExtension書けるよ。 ってそういう話じゃないか。
つぅかfirefoxのextensionをpythonで書けたとして何を書くの?
Cでゲーム書けたとして何を書くの?
>>106 bittorrentのフロントエンドプラグイン
Quixote-2.0 リリース
何それ?クイックソート?
何お前?Google知らねーの?
>112 お前のぐぐっているGoogleは知能的欠陥の一種だ。鎮める方法はお前が知っている。お前に任せた。
エロゲオタが約一名混じってるぞ
>>114 どこどこ? あ、114さん自身か。なるほど。
正解は113と114の二名
118 :
デフォルトの名無しさん :2005/04/21(木) 13:25:59
文字列を変数として使用する方法はありますか? やりたいことは >>onani = "str[1:3]" >>str = "hello" >>print onani "el" でも実際には"str[1:3]"が返ってきます。 このonaniに代入された文字列を後から変数として使用することは可能でしょうか?
連想配列
print eval(onani)
121 :
118 :2005/04/21(木) 13:47:30
>>119 ごめんなさい。検索してみたけど、使い方が良くわからない。
よければ使用例を書いて頂いてもいいですか?
あともっと細かく説明すると
"onani"に代入する文字列はスクリプト実行時の引数で、
"str"に代入する文字列は外部テキストからです。
import sys
onani = sys.argv[1] #str[6:]+str[:6]
str = open("a.txt").readline() #"hello world"
print onani
とすると結果が"world hello"
みたいな感じで。
122 :
118 :2005/04/21(木) 13:48:53
>>120 うぉおおおおおおおおお!!
簡単に出来た!!
ありがとうございます!!
123 :
デフォルトの名無しさん :2005/04/21(木) 17:11:20
>>118 evalで間に合ってるようだけど、目的に応じて使い分けるなら...
ビルトイン関数の vars, locals や globals が変数の辞書を返す。
オブジェクトのメンバ変数であれば getattr 等。
>>> foo = 10
>>> locals()["foo"]
10
124 :
118 :2005/04/21(木) 17:44:40
>>118 ありがとうございます。いろいろ勉強してみます。
ところで話しわかるんですけど、
100%pythonで作られた高機能なアプリってないですか?(Windows)
メディアプレーヤーとか画像ビューアは見つかったんですが、
デコード等の部分が、Cで書かれてて、純粋なpythonアプリじゃないんですよね。
せっかくwxPythonとかexe形式にするためのツールがあるのにそれを活用してるものがないのが残念。
125 :
118 :2005/04/21(木) 17:45:54
なんどもごめんなさい。間違えました。
>>123 ありがとうございます。いろいろ勉強してみます。
Pythonの名前空間の仕様と動的メモリ管理の仕様が良く判るサイトを紹介して下さい
>>124 > 100%pythonで作られた高機能なアプリってないですか?(Windows)
何気に興味深い問いだな。
118さんは pure python であることにどういう意味(意義)があると考えてる?
Python の標準ライブラリの中にも pure Python のモジュールとCで書かれた
モジュールが混在してる。Cで書いた方が速度的なメリットがあるからだけど
Cで書いてあってもやっぱり Python のプログラムだと個人的には思う。
なぜならCで書くと言っても Python 独自の約束事がたくさんあって、
実質的には Python で書くのと大差ない部分が多いから。C API は Python の
言語機能と対応している部分が多い。実際にやってみると、多かれ少なかれ
「Cで Python プログラミングをやっている」という感じがすると思うよ。
128 :
デフォルトの名無しさん :2005/04/21(木) 19:15:18
129 :
デフォルトの名無しさん :2005/04/21(木) 22:43:42
python2.4.1をpython.orgからfirefoxでダウンロードするとpython3.4.1.msiって表示されるんだけどどういうこと??
pythonのmechanizeでformのリードオンリー属性を外したいんだけど 今は、 b.forms()[0].find_control(コントロール名).readonly = False でやってるんだけど b = mechanize.Browser() b.open(URL) b.select_form(フォーム名) ってやった後に簡単に変える方法はないの? 上のでも十分簡単なんだけど見た目が嫌。
>129 今ダウソしてみたけど2.4.1だったが?
>>131 スマソ。
保存先に2.4.1があったから、3.4.1に変えられたみたい。
もう一個落としたら4.41になった。
おとすたびにバージョンあがっていいなあ
ギリシャ数字 <=> アラビア数字の変換はどうするのが楽?
それはギリシャでなくローマ数字
137 :
デフォルトの名無しさん :2005/04/22(金) 18:22:45
今javaで書くのが面倒な処理をJythonで書いているのだが・・・ 便利だね〜〜。
138 :
デフォルトの名無しさん :2005/04/23(土) 00:38:43
>>135 Pythonだったら変換テーブル作るぐらいしか思いつかない…。
だれかトリッキーな変換できるかや?
PEP-313 Adding Roman Numeral Literals to Python 採択されてないけど。 あと、formatter.py のAbstractFormatterクラスにformat_roman()があるが、これはなんだろう。
みんな、GUIはなに使ってる?? あとビルダ使ってたらそれも教えて下さい。 俺はwxpythonとboa constructorです。 Tkinterの利用を検討中ですが、何かお勧め等ございますか?
>>142 その質問、どちらかと言うとFAQだと思うんだけど
あんまり選択肢がないような・・・。
俺はTkinter。前はUnix限定でPyGTKを使っていた。
ビルダは使ってない。
あとGUIで何作ってる?>ALL
考えてみると自作のGUIアプリって少ないんだよねー。
俺の場合、作るのが面倒だからCUIで済ませちゃう傾向にあるのかも。
漏れはPyQt。
147 :
145 :2005/04/24(日) 02:39:32
ヴァージョンが違うと動かないみたいなので 2.3にダウングレードして何とか動きました。 ありがとうございました。
Solarisのsfwパッケージに入ってるPythonをコンパイルしたコンパイラって何なんだろ。 それがないとモジュールをコンパイルできない(っぽい)んだが。
151 :
142 :2005/04/24(日) 12:02:48
EasyGuiというモジュールを使ってみた。
高機能ではないがすばらしい。
pythonの標準モジュールに追加すべきだと思った。
>>143 本当に簡単なものしか作らない。
おれはマウス派なんで、引数をチェックボックスで渡したりとか。
でもそのうち、もうちょいグラフィカルなものも作ってみたい。
今の所、ファイラーを検討中。
152 :
142 :2005/04/24(日) 13:27:36
ファイラー出来た。 from easygui import * import os,sys,os.path root = "D:/" dir = root def box(dir,files): open_file = choicebox(dir,"Files in",files);return open_file def get_files(dir): files = os.listdir(dir) if dir != root: files.insert(0,"<<") return files while 1: print dir files = get_files(dir) open_file = box(dir,files) if open_file == "<<": dir = "/".join(dir.split("/")[:-2])+"/" continue if os.path.isdir(dir+open_file): print "Dir" dir += open_file+"/" continue else: print "File" os.startfile(dir+open_file) continue else: sys.exit(0)
A try: B finally: C みたいなコードで、AとCが定型でBだけが変化するとき、 rubyだとyield使ってAとCを一つの関数にくくりだすんだけど、Pythonではどうする?
Bを関数オブジェクトにする
2.4以降ならデコレーターを使う。
激しくアホっぽい質問なんですが、 >>python hoge.py で、無事に実行されるんですが、hoge.pycファイルが生成されません。 バイトコードってヤツはどこのディレクトリに生成されるのでしょうか?
>>156 python(引数なし) で実行して
>>> import hoge
をやると hoge.pyc ができるよ.
158 :
156 :2005/04/26(火) 01:44:23
あ、本当だ。157さん、ありがとうございました。
159 :
デフォルトの名無しさん :2005/04/26(火) 02:03:28
2.4以降だが python -m py_compile hoge.py 他には、compileallモジュールとか。 オプションでコンパイルするファイルの条件を細かく指定できる。 関係ないかも知れないが、 バイトコードは .pyc ファイルの 8バイト目以降にmarshal化されて格納されてる。
> バイトコードは .pyc ファイルの 8バイト目以降にmarshal化されて格納されてる。 +1
161 :
156 :2005/04/26(火) 02:29:21
(マーシャル化とか分かりませんがw)159さんもどうもです 「プログラミング初めてなら、pythonとかいいんじゃない? 分からいことあったら、俺教えてやれるし。」 と、友人に言われて始めたんですが、 その友人が「インドネシアでラーメン屋やる」とだけ言い残して音信不通になっとりまして、 ここで教えてもらえて助かりましたです。
尼.co.jp から cookbook 2nd edition 発送メール北
恥パイ2の内容も2.2が中心で、2.4が最新の今となっては物足りなさが否めんなあ。 新スタイルクラスの__new__メソッドすら書いてない。
いまさらなんですが2.5からタブのインデントが禁止になると友達に聞きました・・・ なんかPython嫌いになってきました・・・ Perl6でswitch分をgiven〜whenにすると聞いた時もハア?と思いましたが それに近い気分です・・・。はあ・・・。
>>165 エイプリルネタだよ。
まぁ緩和はされるかもしれないね。
うーむ、にぎわっているな。
169 :
159 :2005/04/26(火) 22:09:28
>>161 僕も似たような事いい残して海外へいってしまった経験ありだったりして。# 耳が痛い
オンラインドキュメントだけでも十分、独習出来るだけのリソースがあるので、
自分がいなくてもなんとかなるだろうと打算してました。
marshalは、コンパイルされたPythonのデータ(codeオブジェクト)を
ファイルに保存したりする為に、バイナリデータへ変換する為のモジュールです。
バイトコードについて細かい事言えば、
>>159 では説明不足/間違ってるので、
>>160 の為に詳細
> import dis, marshal
> pyc = open("hoge.pyc", "rb")
> pyc.seek(8)
> code = marshal.load(pyc) # <-- codeオブジェクト
> code.co_code # <-- これがバイトコード(文字列として格納されているがバイナリーデータ)で
> dis.dis(code) # <-- ここで表示されるのがバイトコードをdisassembleしたコード
> exec code # codeを実行
ついでに、先頭の8バイトはそれぞれ、
マジックナンバー(4byte) と タイムスタンプ(4byte unsigned int)
> import imc, time, struct
> pyc.seek(0, 0)
> pyc.read(4) # コンパイルした環境の img.get_magic() と同じ値。version毎/Unicodeサポートのon/offにより異なる
> time.ctime(struct.unpack("<i", pyc.read(4))[0]) # ソースファイルの最終更新日時
Pythonのソース(文字列)からcodeオブジェクトにコンパイルするには、
ビルトイン関数やcompiler モジュールのcompile関数が使えます。
そんな小難しいことよりも 「python hoge.pyってやったときhoge.pycができなくても心配しなくていいんだよ。そういうもんだから」 でいいんじゃねぇの?
そんなことより 俺「実は160は行方不明になった159の友人だったんだ!」 全員で「な、なんだってーーーっ!!!」 俺「と、とりあえずイニシャルを確認汁!」 160「○.○.ですが・・・」 159「あ、合ってるよーーーーーーーっ!!!」 全員で「な、なんだってーーーっ!!!」 という展開キボンヌ。
172 :
171 :2005/04/26(火) 23:34:54
160と159が逆だった・・・orz 逝ってくる
173 :
171 :2005/04/26(火) 23:37:07
てか160じゃねーし161だし。y=ー( ゚д゚)・∵. ターン
TABインデントの件がエイプリルネタだって、今気が付きますた。
でも、pythonは良くできた言語だと思う。 タブインデントのせいで非常に見やすいし。。 PerlのOOなんて、関数もだけど、あまりに醜くて、見ててイライラする。
177 :
159 :2005/04/27(水) 03:01:12
>>171 状況が似てただけで。インドネシアでもラーメン屋でもないです。残念。
> インデント
タブインデントだと環境によって幅が代わるので、スペース推奨だったはず。
みんなTAB派?
PythonIDE使ってるんでTABインデント
だってインデントを一段左に戻したい時に TABだとBSキー一発でいいけど スペースだとBSキーを何回も押さないといけないでしょ
>>177 > タブインデントだと環境によって幅が代わるので、スペース推奨だったはず。
> みんなTAB派?
君は python-mode.el を知らないのかね?
>>177 > タブインデントだと環境によって幅が代わるので、スペース推奨だったはず。
> みんなTAB派?
スペース1個でインデントするといいよ
182 :
デフォルトの名無しさん :2005/04/27(水) 04:37:56
Spaceインデント推奨って他の言語だったかな。
Pythonのスタイルガイドに書かれてたのは、
TABインデントとSpaceインデントを混ぜるな でした。
>>179 vi だったら << >>, emacs なら C-c C-l/C-r でインデントの制御できます。
IDEでなくとも shift + TAB でdedentするエディタとか使ってない?
>>180 python-mode.el なら自動判別してくれるけど、みんなが使ってるわけではないでしょ。
python用のIDEって何がお勧めですか? komodoとかwingってIDE自体pythonで書かれていて 結構重い。
184 :
デフォルトの名無しさん :2005/04/27(水) 08:40:37
インドネシアでインデントする
185 :
nanashi :2005/04/27(水) 10:45:39
ColdfusionMX7の分散グラフ(Scatter)で、以下のようにデータラベルをつけるにはどうすればよいのでしょうか? <分散グラフイメージ> 英語 100| ●久保 | ●佐々木 50| | ●三瀬 0| ●岩瀬 ------------------- 0 50 100 数学 <グラフの元となるデータ> 氏名 英語 数学 久保 100 80 佐々木 75 30 三瀬 30 60 岩瀬 10 30
komodoってPythonだったんだ・・・Tcl/Tkだと思ってた・・・
TABの話はタブー
189 :
142 :2005/04/27(水) 20:19:13
すいません、質問です。 今、頑張ってpythonでファイラーを作っております。 専門用語がわからないんですが、pythonでWindowsの標準のアイコン (explorerで表示されるフォルダアイコンとかアプリの関連付けアイコン) を取得する方法ってありますか? いろんなpythonアプリを探しましたが、windowsのアイコンを使用しているものは見たことがありません。 可能なんでしょうか?
普通のWindowsアプリケーションのやり方探してWin32から叩きな。 といってもShell APIを呼ぶだけだけど。
191 :
189 :2005/04/27(水) 21:14:24
>>190 ありがとうございます。
なんとかアイコンの情報を取得する方法を(たぶん)見つけたんですが、
int = win32gui.ExtractIconEx("C:\Windows\NOTEPAD.exe", 0 , 1 )
これを実行すると([30411881], [101256283])が返ってきます。
wxpython等で表示するのに、この数字をどう使えばよいのでしょうか?
pythonとは関係のない内容かもしれませんが、もしご存知であれば、助けてください。お願い致します。
>>180 > 君は python-mode.el を知らないのかね?
スペース推奨が最も嫌うタイプだな、君は。
Pythonの標準ライブラリのインデントはTABではなく、スペースで統一されていたはず。
>>192 ソースいぢってるときはTabで
然るべき処に投げるときはreでspaces変換
194 :
デフォルトの名無しさん :2005/04/28(木) 00:20:13
| | インデントインデント!インデントー!をやっていいですか? \____ ___________________________/ /||ミ V / ::::|| /:::::::::::||____ |:::::::::::::::|| || |:::::::::::::::||│ / || |:::::::::::::::|| ̄\ ガチャッ |:::::::::::::::||゚ ∀゚)─ || |:::::::::::::::||_/ || |:::::::::::::::||│ \ || |:::::::::::::::||∧ ∧∩ || |:::::::::::::::|| ゚∀゚)/. || |:::::::::::::::||∧ ∧∩ || |:::::::::::::::|| ゚∀゚)/. || |:::::::::::::::|| 〈. || |:::::::::::::::||,,/\」. || … \:::::::::::|| ̄ ̄ ̄ ̄ ∧_∧ \ ::::|| ___\(・∀・ ) < お前ら、誰ですか? \|| \_/⊂ ⊂_ ) / ̄ ̄ ̄ ̄ ̄ ̄ /|
>191 ExtractIconはSHELL APIじゃなくて普通のAPIだよ。関連づけられてるアイコンだけ取得できたと思う。 返ってきてるのは多分アイコンリソースのハンドル。 ExporerみたいなことやりたいならSHGetFileInfoかな? MSDNいってしっかり仕様見た方がいいぞ。
196 :
189 :2005/04/30(土) 16:36:19
なんども質問をしてすみません。 wxpythonの質問もOKですか? wxpythonのlistctrlにアイコンを表示させる方法がわかりません。 可能であればbmpファイルをアイコンとして表示することを希望しております。 ご存知の方おりますでしょうか?
>>196 wxPythonのデモの中にサンプルソースがあるから
それを見ながら何とかやってくだちい.
デモは,プログラムメニューの
wxPython 2.4 for Python 2.3 -> Run the wxPython Demo から起動.
その中の [Core Windows/Controls] - [wxListCtrl] にサンプルがあるよ
wxFileTypeを作ってGetIconInfoしてwxIconを取得してwxImageListにAddして それをwxListCtrlにAssignImageListしておいてSetItemImage。 デモのMIMETypeManagerとwxListCtrlを参考に。
PythonでIEコンポーネントは使えますか?
>>199 COMが使えるからできるんじゃない。多分。
http://f53.aaa.livedoor.jp/~hatena/up/img/061.zip PC内を検索するスクリプトを書きました。(GUI付き)
検索方法はwalkをパクって、不要な部分を削っただけですが、
インデックスを作成せずにこれ以上に早く検索する方法が思いつきません。
もし何かアイデアがあれば知恵を貸してください。
みなさまからすればレベルの低いものかと思いますが、是非一度使って見て下さい。お願いします。
あと自分は他の言語が扱えない為、pythonでしか作れません。使用してみて頂いて速度的に
他の言語と比較してどのようなものか感想を頂けるとありがたいです。
アクセス権がネーヨと怒られた ●1点
203 :
201 :2005/05/02(月) 02:11:09
>>203 % python PySearch.py ~
Traceback (most recent call last):
File "PySearch.py", line 3, in ?
from os import listdir,startfile
ImportError: cannot import name startfile
捨て決定
>>203 使い方は、[ディレクトリ][空白][検索文字]でいいのかな。
>> os.startfile
Windows 以外の環境を考慮するなら wibbrowser.open
(winでは内部でstartfileが呼ばれるはず)
>> D:/pysearch/logo.jpg
アーカイブに含めて相対pathで指定する。
icon程度ならxpmを圧縮したデータをスクリプト内に埋め込む方法もある。
>> OnTextCtrl1KeyDown のイベント伝搬
searchBoxのstyleにwxTE_PROCESS_ENTER指定して、
wx.EVT_KEY_DOWN, OnTextCtrl1KeyDown の代わりに
wx.EVT_TEXT_ENTERイベントにOnSearchButtonButtonを登録。
>> pathの区切り文字
os.path.dirname, os.path.join, os.path.split を使う
>> searchが busy loop
スレッド内で処理するか、検索ループ内で適度に Sleep や Yield 系の関数呼ぶ。
具体的に言うと、search関数の中の最初のforブロック内にwx.YieldIfNeeded()
>> if str in name.lower():
strを正規表現にコンパイルしてmatchさせる。
>> for x in search(path,str):yield x
ディレクトリの深さに比例して遅くなるので、
再帰ないでyieldするより、callbackにした方が効率良い。
他には psyco モジュールを使ってpsyco.bind(search)とすると、早くなるかも。
ステータスバーにでも速度計って、比較してみてはどうでしょう。
206 :
203 :2005/05/02(月) 18:43:26
画像付け忘れてた…
>>205 ありがとうございます。
これほどチェックして頂けるとは思っていませんでした。感激です。
参考にしてこれから色々弄ってみます。
ちなみに205さんは他の言語も利用されますか?
速度的な感想はどうでしょうか?やはりCとかと比べものになりませんか?
pythonしか使わない人っているの?
>>206 > やはりCとかと比べものになりませんか?
なんだこりゃ?(笑
>>207 中にはいるんだろうが、非常に少ないのではないかな。
>>206 あまり、言語の違いによって差の出る性質のプログラムではないので
こういったユーティリティ的なものは、Pythonで十分だと思う。
試しに、C++/wxWIdgetsとTcl/Tkで似たようなもの作ってみたけど、
GUIの起動時間が若干気になるくらいで、実行速度の差は(時間は計ってないけど体感速度で)それほど気にならなかったよ。
速さにこだわるならインデックス作ればいいじゃん と思うのは俺だけ? そういう話じゃない?
速度が必要な部分だけCで拡張モジュールにすればいい。
とゆーか
>>205 や
>>211 の言うような効率化の努力なしに
速度を評価するのは(以下略
213 :
デフォルトの名無しさん :2005/05/05(木) 12:37:52
この場合(
>>201 のPC内を検索するスクリプト)は、
拡張モジュールにしてもたいして速度改善期待できないよ。
MinGWで拡張モジュールかいている人います?
>>215 3問目でつまづいた。
One small letter, surrounded by EXACTLY three big bodyguards on each
of its sides.
って"[A-Z]{3}[a-z][A-Z]{3}"じゃだめなのれすか?
>>216 "EXACTLY" に注意。
それだと4つ以上並ぶこともあるでしょ。
おお、できた。ありがとん。
僕は6つ目がさっぱり解き方が分からん。 ヒント読んでもさっぱり…。
俺もLEVEL 6で詰まってるよ。 とりあえずForumにでてくる"[verb] the [nouns]"までは分かった。 そっから分かんない・・・orz
Level5の解答ページみたいなのにたどり着いたけど、そこからどうしたらいいのかわからん。
一問目?から意味がさっぱりわからない件について
>>222 一問目っていうのは、LEVEL0? LEVEL1?
Level0です。
226 :
221 :2005/05/06(金) 01:23:04
>>224 基本的に、答えの文字列をURLにしたものが次の問題のページ。
例えば答えが「python」ならば
www.pythonchallenge.com/pc/def/python.html
に次の問題が書いてある。
Level0は中学レベルの計算問題だ
Level5はなんとかできた。Level6をこれからやってみる。
Level0どうにかでけた。 左上の0はLevelの意味で問題とは特に関係なかったのね。 しかし、Level1わからん。
シーザー暗号がわからないのか それともシーザー暗号をPythonで解く方法がわからないのか?
何を答えればいいのか全く分からない。 フォント名?モニタのメーカ名?背景の場所?
同じくLEVEL6がさっぱり分からん・・・
>>226 分かったらヒントおくれ
>>229 >フォント名?モニタのメーカ名?背景の場所?
てことはLEVEL 0?
だったら、そこに書いてある数字。
pow(2,38)で駄目だったんだけど・・・ 漏れには向いてないな・・・落ち
233 :
221 :2005/05/06(金) 01:44:13
>>230 ヒント:ダウンロード
でも、またいきづまった・・・
今日初めてpythonに触った俺でもlv1まで出来た。 でもpythonは関係ない気がする。 これからpython風になっていくのか? 眠いから寝る。
235 :
221 :2005/05/06(金) 02:10:42
>>234 Level5を解くにはPythonが必要。
そこまではperlとか他の言語を使ったり、手作業の力技でもできるかもしれない。
>>220 さんとおそらく同じところで詰まったままだ・・・今日はもう寝る。
coreblogのおっさんはlv7までいったらしいが自己満足だろ結局は。 別に優秀なプロブレムソルバーじゃなくてもいいよ。問題提起側になるから。 分かったことは詰めvi的要素は鴨寄せに効果的だということだ。
Level5の出てきた配列をどうしたらいいかわっかんね
239 :
デフォルトの名無しさん :2005/05/06(金) 08:47:30
面白いね、コレ。 とりあえず、Level6 "C" ではじまるものを集めるとこまで出来た。
lv.3を解いたと思いきや、 解.htmlには解.phpという文字列のみ。罠に嵌ったのかな。
Level6がさっぱりんこ
あ、240はスルーしといてください。罠もなにもって感じ。
L5、何でひとつのフラットなリストじゃないんでしょうねえ? って言われてもさっぱり・・・
おまえらそのサイト管理者からログとられてるぞ。 ニホンジンの思考パターンは・・・・w
LEVEL6むずすぎ
>>243 プログラミングはアートなんだよ
もれは、Level6の最初のメッセージが得られない。
誰かヒント教えて。
Level6やっと集めたけど、そのあとがまたわからないし('A`)
248 :
221 :2005/05/06(金) 13:57:29
今、仕事中なので出来ない。 Level6は、html→zipに変更してダウンロードしたファイルを処理するとメッセージが書いてある。 そのメッセージが「○○を集めろ」なんだが、どこから集めてきたらいいのかがわからない。 ヒントくれ。
Level6デキタ━(゚∀゚)━ !!
Level7むずかしそう。
>>248 モジュールを使いこなすのだ。
1が全然わからん 238がどうかしたの?
Level7は簡単でした。
>>250 読み方が違う。
おまいら頭いいな
5の中途半端に規則性のあるデータ、どうしたらいいのやら。 "banner.p"ってのの意味を考えもしたけど。
パズルを解く能力だけで頭がいいのだとしたら漏れは頭がよくなくていいよw
>>248 のヒントでLevel6解けた!
後は結構簡単で、Lv9挑戦中。コーディング面倒っぽいな・・・
>>253 Pythonモジュール一覧を眺めながら、"peak hell"と唱えてみる。
256 :
デフォルトの名無しさん :2005/05/06(金) 17:31:30
257 :
デフォルトの名無しさん :2005/05/06(金) 18:37:27
今、level6で
>>274 の状態。集めたけどどうするのこれ
257は未来派野郎
259 :
デフォルトの名無しさん :2005/05/06(金) 18:57:48
Level12まで来たけど、Level6が一番難しかった。
Lv.14まで来たけど、Lv.0が一番難しかった。
Lv.11 どーすりゃえーのー?
Level14解き中
>>262 画像ビュアーで拡大すると何か分かるかも
>>263 拡大したり一行おきに間引いたりしてんだけど解に結び付けられない・・・。
265 :
264 :2005/05/06(金) 20:16:18
あ、解けた・・・・(;∀;)
Level1なんですが、文章は一応読めたんですが、string.maketransを何に対して適用したらいいの?
267 :
266 :2005/05/06(金) 21:03:55
わかった。Lv2さっぱりわからんね。
Lv6わからん… これってLv4と関係ある? どのモジュール使えばいいんだー
Level6、暗号みたいなの出てきた。どこを立て読みするんだ?って感じだ。 ある規則で拾い読みするんだろうけど・・・一難さってまた一難、ぶっちゃけ(ry だ・・・
Lv3だれか教えて!
なんかすっかりチャレンジ大会になっちゃってるな。
>>216 の真中の小文字を繋げてみたんだけど、有意な文章になってくれない。
URLにそのままいれてみたんだけどダメだったし。
もっとヒントありますか?
lv5の数値を云々したのがasciiコードとかって事はあるのかな。 シャープの有無とか、よくわかんね。
Lv4やってたら、途中でアクセスできなくなった。
>>277 「そんなページありません」だったら、トラップに引っ掛かってるからひとつ前に戻ってよく見る。
それともネットワーク的な問題で接続できないのか?
バグでコネクション張りっぱなしな上、300回以上回したとか。
バグじゃなくて、数字をprintoutしながら眺めてたら途中で接続できなくなってました。 30分ぐらいトップのページもアクセスできない状況だったんだけど、 さっき急に繋がるようになって、Lv5に進めました。 でも今度も難しそうだ・・・。
Lv6の"the XXXXXXXs"が何を指してるのかさっぱり
だめだ。Lv5わからん。 "peak hell"ってドキュメントのどこにも見つからないんだけど。 chmファイルが見れない状況なんで、htmlダウンロードしてきたんだけど、 これじゃだめなのかなぁ?
>>281 「answer is inside the XXX」ってあるだろ?つまりその中に「the XXXXXXXs」があるんだよ
>>282 それ、探すんじゃなくて「発音しろ」って書いてあるでしょ
で、俺はLevel10で意外に苦戦中。計算は合ってると思うんだが違うみたい。
長さを求めればいいんだよね?
284 :
282 :2005/05/07(土) 02:19:16
>>283 なるほどそういう意味か。でも、その部分は解決してて、
その後のデータがなにを意味するのかわからない。たして95のリストってのはわかったんだけど。
285 :
283 :2005/05/07(土) 02:44:12
>>284 ん〜・・・ほど良いヒントを出すのが難しい・・・
2ちゃんねらーだったら良く見るんじゃないのかなあ・・・。パズルですよ。
で、誰かおれにもヒントください。len(a[5])は何になります?
287 :
283 :2005/05/07(土) 03:14:26
>>285 ,
>>286 どうにか解決しました。
Lv6って・・・。上でもわからんって声があがってるけど、わけわかめね。
288 :
263 :2005/05/07(土) 03:51:49
21:10ごろLevel 16クリアしてまつ
>>287 Level 6は結局のところ「Level 4+Level 5+α」みたいな。
ただ、正式な手順じゃなく力技でも解けそう。
>>286 なるほど。やっとlv5クリアできた。
みんなよく気付くなぁ。
level6が簡単で拍子抜けした。moduleをというhintのおかげだけど。
level 4で無限ループに陥るんだが、なんでだろ。 逝ってきまつ。
292 :
291 :2005/05/07(土) 07:28:45
自己解決。なんだったんだろう
17問目キター!
Lv6.何を集めればいいのかなぁ?あのパッケージの中で完結してるの?
>>294 アーカイブのファイル一覧を見れば、なにやら普通のとはちょっと違う事に気付くと思う。
unixならunzip -lとか。
level5が分からないです。 95のリストってところまでわいけたんですが…。パズル…???
level7で、最後のヒントまでいけたのですが、 文字になりません…。
>>295 zipにあんな機能があったなんて知らなかった・・・。ちょっと汚いな。
で、その後のページの意味がさっぱりで、未だにLv6。
誰か、HINTを。
>>297 レベル7ってグレーのやつか。
ある処理でヒントが出てきたのなら、そのヒントに同じ処理すれば答えが出るよ。
おお〜!
>>298 ありがとう。
解き方分かったからスクリプト書いて答えが出た時は感動しました。
that's a handy little function. isn't it? どういうこっちゃ...
304 :
263 :2005/05/07(土) 20:16:41
>>303 関数名をそのまま打つんじゃなくて、
解読した文の最後にURLをどうしたらいいか書いてある。
Lv1で詰まった。 俺も文を読むところまでは出来たんだけど、そこからが全然。
Lv.6がやっと解けた。というより、ありがとう
>>295 。
Python使いじゃないから厳しかった。
マジでLv.0すら解らん。 いっそのこと答えを教えてくれ。
Lv7なにすりゃいいかさっぱり。
>>308 いっそ、ずるして先進んじゃうとか。今、Lv0で0.htmlなんだから、先っていったら・・・。
電話帳の使い方が分からん。
ふぅ、やっとわかった。
314 :
263 :2005/05/08(日) 04:01:37
>>312 *********モジュールで電話帳につないで
《動詞》('《固有名詞》') で電話番号検索
Pythonならスクリプト書かなくても
コマンドラインモードでOK
>>314 サンキュ。
あともうちょっとなんだよなぁ。番号の下7桁は分かった。
316 :
315 :2005/05/08(日) 04:24:58
やられた。フォーラムを読み直してやっと分かった。
317 :
デフォルトの名無しさん :2005/05/08(日) 05:32:58
>>307 Python以外で挑戦してる人って他にもいるかな?
307は普段pythonをあまり使わない人であって、 今回の問題のうち半数ぐらいはpythonで解いてるのではなかろうか。
319 :
307 :2005/05/08(日) 06:12:32
>>317 >>318 積極的にpython以外を使っているのではなくて、ただpythonを使えないだけ。
今のところ15まで解いて、pythonを使ったのは5、8、13だけ。
ヒントを何度も読んでやっとlv10の解き方が分かったよ……。 さて、実際に自分でコーディングしたものかどうか。
問題固定だからあと1ヶ月ももつかどうか・・・
あ、lv10のコードは簡単だった。 lv11の画像、俺の一^H二昔前の液晶だとすげーチラつくorz こんなの初めて見た。
324 :
307 :2005/05/08(日) 09:20:01
Lv.17で完全に行き詰まった。とっかかりすら分からない。
325 :
263 :2005/05/08(日) 12:13:17
Level 17解けたけど文章の意味が「?」で
キーワード分からん‥‥
>>324 あることをすると《変数名》が分かる
後は過去のLevelをいろいろとリサイクル
で、楽しかったですか?
で、自己満足は満たされましたか?
328 :
デフォルトの名無しさん :2005/05/08(日) 13:03:16
楽しかった、満たさた。
329 :
デフォルトの名無しさん :2005/05/08(日) 13:18:23
level7 最初からわかんない。 decode messageってこのページ内に適応するの? それとももっと後の方で使うhint?
Level 2 がわからん。 出現頻度で調べる?
>329 Lv.7は非標準ライブラリを使わないと解けない。 cygwin版pythonでも解けるのかな? 漏れはWindows版のpythonとライブラリをインストールした。
実践的にPythonのモジュールと関数の使い方が理解できるクイズだ。 おもひろいわ〜。
Level7は使ったことないライブラリだと面倒なので、普通の画像アプリ使ってデータ拾って解いた・・・
334 :
デフォルトの名無しさん :2005/05/08(日) 18:12:43
335 :
デフォルトの名無しさん :2005/05/08(日) 18:17:46
>>331 ,
>>333 うーん。画像フォーマットは一通り扱えるけど、
それ以前に、その画像何処な状態です。
( ゚д゚ ) ポカーン
>>321 >ここから先はRubyだけではできないので,ここで中断.Python勉強しないとだめだなこりゃ(笑
>>334
lv5をpython無しでどのようにやったんだろ。
340 :
デフォルトの名無しさん :2005/05/08(日) 23:14:51
Level 12ではまった。。 ○○を分解して、文字は見えたのだけどそれをどう使うのか。。 ど〜しても解らない。
341 :
デフォルトの名無しさん :2005/05/08(日) 23:54:56
>340 わかった! ちょっとだけFirefox(or Mozilla)と英語力がいるね。
俺もlv12やっと解けた。 なんかずいぶんひっかけられたよ。 画像操作とかいろいろ。
lv13, 7桁は分かったが。。。
s/7/8/
345 :
314 :2005/05/09(月) 03:29:35
>343 lv13はここまでの(とは言ってもlv7以降の)URL表記に似たURLを入力しないと 次に進めない。8桁全部入力する事にこだわらずいろいろ試してみて。 漏れは今はlv16... 砂の嵐。。
346 :
341 :2005/05/09(月) 03:30:34
>345 名前間違えた。 ×314 ○341
level14で、上空から見た台風の目モドキしか得られない。
Level 11わからん。 ある規則で塗りつぶすっていう方針は、あってますか? 「o** e***」 は関係ありますよね?
hintはforumで書け
350 :
263 :2005/05/09(月) 23:25:08
Forumで簡単だと言われているLV8が一向にわからん。 残念でした的なページはいくつか見れたけど…
353 :
351 :2005/05/10(火) 00:53:15
>>352 おかげでできました。
英語の駄洒落が多いのな…。
Pythonでどこまでできますか? winnyみたいなのつくりたいのですが。
なんだかHTTPDのディレクトリにおいて使うみたい? これは、これでおもしろいけど、GUIで使いやすいのがほしい。
>>355 BitTorrentはPythonだよ。
360 :
デフォルトの名無しさん :2005/05/11(水) 08:00:56
pythonスクリプト起動時にcmdを起動させない方法はありますか?
>>360 python.exeの代わりにpythonw.exeを使えばおk
lv15って向うの文化にfamiliarじゃないとキツい?
>>362 そんなことはないと思うけど、googleの助けが必要だと思う。
Lv17がさっぱり。。。方針がまったく思い浮かばない。なにをp***( または e**? )するの?
>>338 自分の場合はbannerっていうのと' 'と'#'でピンと来てpython使わずに解いたのですが、
無理やりかなという感じで釈然としません。
どのへんがpythonなのでしょう?
>>365 ' ' と '#' からなるデータだと気付くためには?
クイズが出てからこのスレ活発になったね
(総レス数)ー(クイズネタ)=(前といっしょ)
pythonって人気ないのかな。 世界的には、perlの次くらいの人気らしいけど。
英語読めないと国内のシェアが全てだからな。
NASAもGoogleもPython。TeXのポジションと同じだ。
Texは本がいっぱい出てるからいいが… pythonは厳しいよ。資料少なすぎ。(日本語の) 我ながらマゾだと思う。
まぁ、プログラミング言語なんて 突き詰めれば「好きなもの使えばいいじゃん」(お仕事だとそうも言ってられないのは確かだが)なんで このスレ住人はPythonを愛して行くってことでいいんジャマイカ。 とはじパイ1版を1/3で放置してる初心者以前が言ってみるテスト。
C/C++実装のプロトタイプとしてPythonほど便利な言語は存在しない。 資料は本家の完璧なドキュメント類の他は必要ない。
8で蜂か
pythonでつくったおもしろそうなソフトがあれば教えてください。
378 :
デフォルトの名無しさん :2005/05/13(金) 11:19:50
bittorrent ソースも公開されてるし
つか、こんなの学生の言語オタしか使ってねーだろ。
どんなの?
381 :
デフォルトの名無しさん :2005/05/13(金) 18:20:08
>>379 博士:何か疑問が生じたときは、とりあえずGoogleさんに聞いてみるといいよ。
太郎:ふーん。
博士:ウェブページの需要と供給はほぼ一致する、と仮定すれば
ページ数と言語使用者数には何らかの相関があると言える。
太郎:(嘘こけw)
博士:ここでは「○○ programming OR プログラミング」で検索してみることにしよう。
以下が○○の内容とオドロキの検索結果だ。
C OR C++、約 44,500,000 件
Basic、約 28,200,000 件
Java、約 26,200,000 件
PHP、約 19,900,000 件
Perl、約 11,300,000 件
Python、約 6,260,000 件
C#、約 3,460,000 件
Fortran、約 1,680,000 件
Pascal、約 1,670,000 件
Ruby、約 1,210,000 件
博士:Pythonは善戦しているね。
太郎:(ぴちょん弱ぇ〜w)
( ´,_ゝ`)
383 :
デフォルトの名無しさん :2005/05/13(金) 20:33:49
ruby嫌いなんだけど。 rubyって存在価値あるの?(反語)
Martin Fowler氏がご立腹なされた様子です
Blenderって、例のLinux上の3D アニメ作成システムか? 本買った。Linux&OOSのアピールにちょっと使った。 でもパイパン使ってるとは知らなんだ
いや、C/C++だけどAPIがPython
結構あるよな、すげぇメジャーなアプリで、 有名だけど使ってる奴が少ない言語が組み込まれてるの。 ・WinCVSとTcl ・GIMPとSCM ・EmacsとLisp ダメだ、自虐になってる orz
× SCM → ○ Scheme
え? Guileじゃなくて、SIOD(Scheme In One Day)から発展したSCMじゃねぇの?
案外知られていない GIMPの処理記述言語・・・ねぇ、サスマン&スティールさんなんとか言ってよ
Linuxインストーラが、すごく不気味な事を言い出すんです 「ニシキヘビが丸呑みできなかった」とか。
>>377 流行りのソフトだとiPodderとか。
>>396 はじめてみるソフトだが流行っているのか?
Basic、約 28,200,000 件 ベーシックっていまだに人気あるのか?? ちょっと裏がありそう。
400 :
デフォルトの名無しさん :2005/05/14(土) 04:19:32
basicなんて一般的な単語だからヒットも多いんでしょ。
>>401 basics Ruby programming とか basic GUI programming with wxPython
とかも山程引っ掛かるよなあ。
basicのヒット数の主要因が399が示唆する通りVBだとすると、
(vb OR "visual basic") programmingで出る6,370,000の方が
妥当な数字だと思うが。
403 :
デフォルトの名無しさん :2005/05/14(土) 08:18:47
本文の中に 「basic skills needed to program Python are...」 とか 「In Python, it is basically a matter of...」 なんて書いてあっても検索に引っかかっちゃうんじゃないの?
404 :
デフォルトの名無しさん :2005/05/14(土) 11:07:04
Java has Smalltalk's OOP system, C++'s syntax, Fortran's numeric calcurating power, and now it has applicative language's expression (i.e. XML or AspectJ).
ここはgoogleの検索件数に厳密さを求めるインターネット
406 :
デフォルトの名無しさん :2005/05/14(土) 17:17:38
it's in the air. 検討もつかない
再度よーく見ろ
Lv9 'connect the dots'できて思い浮かぶ単語を試してみたけどだめだー どなたかhintください
沢山dotsがあるでしょ? それをconnectするのですよ。
>409 ありがと。形にはなったんだけどどう答えたらいいのかわからなくて
412 :
406 :2005/05/15(日) 01:54:27
>>407 穴のあくほど見たんですが、わかりません・・・
だから?
すばらしいことですよね
>>413 配列にアクセスしないようにプログラムを組めばいいから、
配列へのアクセスが遅い問題は実用上解決しているよ。
実際、Pythonでは配列はあまり使われてない。
417 :
デフォルトの名無しさん :2005/05/15(日) 04:30:18
>>413 そこのリンクにある比較サイト(今はnot foundなので,archive.org参照)のコードだけど、
配列のアクセスよりforループのコストの方が大きいので、そのような結果になってる。
ボトルネックになってる部分は、Iterator。
for k in xrange(1000):
for i in xrange(num-1,-1,-1):
y[i] += x[i]
...だけど、while文に書き直すだけで早くなるよ。psycoでの最適化も有効。
C++に較べると遅いのは確かだけど、そこに書かれてる程酷くはない。
Pythonのリストの実装見ればわかるけど、配列の各要素は
連結リストではなく、メモリ上に連続して並んでるので、
アクセス速度は配列サイズに関わらず一定になる。
418 :
デフォルトの名無しさん :2005/05/15(日) 05:08:06
419 :
うんこ :2005/05/15(日) 12:38:08
def log(fn): if callable(fn): def logfn(*args): print "calling %s%s ..." % (fn.__name__, args) r = fn(*args) print "%s%s => %s" % (fn.__name__, args, r) return r return logfn else: raise TypeError, "callable object required, but got %s" % fn fact = log(fact) ; print fact(2)
420 :
うんこ :2005/05/15(日) 12:56:34
def log(fn): if callable(fn): class Log: def __init__(self): self.indent = 0 def __call__(self, *args): white = " " * self.indent print white + "calling %s%s ..." % (fn.__name__, args) self.indent += 1 r = fn(*args) self.indent -= 1 print white + "%s%s => %s" % (fn.__name__, args, r) return r return Log() else: raise TypeError, "callable object required, but got %s" % fn
421 :
デフォルトの名無しさん :2005/05/15(日) 18:35:35
ここでうんこをしてはいけません
422 :
デフォルトの名無しさん :2005/05/16(月) 07:26:02
423 :
デフォルトの名無しさん :2005/05/16(月) 10:16:26
Q13で行き詰っていまつ。ヒント御教授下さい。
>>424 エラーメッセージから、向うが何であるかを推測しよう。
426 :
デフォルトの名無しさん :2005/05/16(月) 20:59:07
>>425 XML-RPC か php くらいしか思いつかん。
>>424 13で詰まり同士ハケーン
黄色くて悪いやつの名前まではわかったみたいなんだが、どうやって電話をかけるのかがサパーリ
>>426 あと一息だ。想像力と和英辞書で乗り切れ。
私はQ6で詰まってます。 pythonでimport zipfile使って "Collect the comments."まで出ましたが、 コメントがサッパリデス。 ヒント下さい。
ZipInfoオブジェクトのヘルプかunzipコマンドのヘルプでも眺めてたら、 zipアーカイブのある機能に気づくかも。
430 :
デフォルトの名無しさん :2005/05/17(火) 06:17:00
>>429 気づいても得た結果をどうしたらいいのか
分からない。ここらへんが俺の限界。
432 :
デフォルトの名無しさん :2005/05/17(火) 15:24:08
433 :
426 :2005/05/17(火) 16:33:36
>> 427 電話番号の使い方がわかんないデスよ(苦笑)。 旅行したことくらいはあるので数字になおすんだろう、まではわかるんだけど。 引き算してみたりもしたけど 404。 >> 430 コマンドラインのunzip ツールを使ってみましょう。
Hint: 8桁全部使う必要はない。
435 :
デフォルトの名無しさん :2005/05/17(火) 17:43:54
forumでもそう読んだのだけど、まだ分からない、、、。
>>431 それぞれの数を数えてみたり、zip(list1, list2)を使うのかな?とか、見当外れ?
438 :
デフォルトの名無しさん :2005/05/17(火) 21:03:50
>>437 特定のベンチマークで?ではないのかな。
何らかのコンセプトに基づいた最適化をしてるわけではないみたい。
拡張性や柔軟性を犠牲にしてるだけのような印象を受ける。互換性もなくなってるし。
手元のコードで試してみたところ、psycoの方が早かった。
full scratch に対する パイソニアン の反対が厳しいね 言ってる事は間違ってないとは思うけど、随分保守的だな
Q6やっと解けた。 zipinfoでコメント集めてQ5のような 文字が出て、取りに行くと it's in the air. look at the letters. と言われその後、やっとこさQ7に行けましたが... 変なpngでまた頓挫。 けれどみんな色んなヒントありがとうございます。 ガンバリマス。
441 :
デフォルトの名無しさん :2005/05/18(水) 00:06:12
python challenge Q26まで増えてる。
lv15で挫折したまま放置中。。。
lv12でハマタ… gfxから画像を二枚取り出せたけど、結局その二つが意味するものが全然ワカラン。
>>433 > 旅行したことくらいはあるので数字になおすんだろう、まではわかるんだけど。
余計なことは考えるな。
>>443 もっと沢山入ってるぞ。
445 :
デフォルトの名無しさん :2005/05/18(水) 08:39:27
>pyvm pyvm was not written to be a replacement for CPythonとREADMEにも書かれてた。 ソースが小さいとの事なので、組み込み分野向けに発展すれば期待できると思う。
class sink: def write(self, s=""): pass import sys ; sys.stdout = sink() print "hage!!!!!!!!!!!!1111111"
447 :
435 :2005/05/18(水) 17:49:23
ところで、私はまだ同じ箇所で、、、(ってあれからやってないのだけど、 ヒント貰っても、何故にこれほどまでに!?ってぐらい何も思いつかないのは、ひとえに私の知識不足だろうなぁ。。。
448 :
デフォルトの名無しさん :2005/05/18(水) 18:21:08
>446 副作用が気持ち悪いって意図かもしれないが、有効な利用方法を考えてみると >>> import sys >>> from StringIO import StringIO >>> sys.stdout = StringIO() >>> print "foo bar ..." >>> log = sys.stdout >>> sys.stdout = sys.__stdout__ >>> print log.getvalue() 同時に、weriteメソッド内でファイルへ出力すればteeみたいな事も出来る。 入力が必要なプログラムの自動化なども。(pipeやexpect使うべきなんだろうけど) >>> sys.stdin = StringIO("hoge\n") >>> raw_input("") 'hoge'
449 :
デフォルトの名無しさん :2005/05/18(水) 19:31:21
皆様コードの静的解析(etagっぽい機能が理想? グラフィカルにクラス一覧とか出たらマンセー)って何使ってますか? Emacsで書いてるんだけど、そろそろクラスの把握に限界がキてるのと、文書化を半自動化したいのだが。
451 :
449 :2005/05/18(水) 20:01:27
現在のところ14000行ぐらいっす。あるシステムのプロトタイプを迷走しながら作った結果なので、不要な処理やら統合すべきクラスやら山盛りだとは思いますが。
452 :
443 :2005/05/18(水) 22:46:16
>>444 ありがとう…無駄なデータかと思ってたよ…
取り出せた〜( ´ー`)
けど、何を意味してるのかやっぱりワカランorz
まだ全部取り出せてないんだろうか…
オフセット内のは全部拾ったつもりなのだが
453 :
430 :2005/05/19(木) 02:36:23
>>431 ,440
ありがとう。お陰でやっと解けた。
py2c++って未だないよね?
L13までの解答スクリプト晒してる奴がいるな。寒。
パズルサイトなのに問題固定なのも問題アリかと。
CGIアプリケーションのテストを自動化するのにいいツールはないかね。 リンク辿ったり、フォームに特定の値書きこんで送信して、応答が期待通りかチェックするような。
webunit
新しくできた-mコマンドライン引数は、パッケージ内のモジュールは指定できないの? ライブラリパス直下にxxxディレクトリがあって、その中にyyy.pyがあるときに、 python -m xxx.yyy とかやりたいのだけれど。
>457 mechanize installがちょいめんどいけど。
461 :
デフォルトの名無しさん :2005/05/22(日) 01:18:11
質問です try: #do something except: print "error" エラーが発生してexceptに飛んだ時にエラーの種類、内容を取得する方法はありますか?
463 :
426 :2005/05/22(日) 16:50:05
ひさびさに >> 444 いじりすぎてただけか。ありが屯。とけたときがっくしした。 14は簡単だったが・・・.357 は、ほぼ 9mm だがどうしたものか
464 :
デフォルトの名無しさん :2005/05/22(日) 17:04:44
COLT PYTHON 357 MAGNUM
import sys try: #do something except: print '%s: %s' % (sys.exc_type, sys.exc_value)
参照渡しの仕方がわかりません・・・どうすればいいんでしょうか・・・ 参照渡しのイメージ映像・・・ def add(*a,b): *a+=b a = 1 add(&a,1) print(a) #a=2
配列に入れてから渡したらうまくいかなかったっけな。 ちょっとアクセスが面倒だけど。
なぜ参照渡しが必要なのか?
>>> class Int: ... def __init__(self,n): self.n = n ... >>> def add(a,b): ... a.n += b ... >>> a = Int(1) >>> add(a,1) None >>> print a.n 2
配列でもうまくいくな… >>> def add(a,b): ... a[0] += b ... >>> a = [1] >>> add(a,1) None >>> print a [2]
今のCygwinのPythonってNumerical Pythonインストールできる? 昔のCygwinだとインストールしようとしたらエラーが出てゴミ取りが大変だったけど。
>>468 色々とCと比較する簡単なコードを書いて、Pythonで何かをするときの
方法を整理して勉強いるだけなので、なぜと言われても困ります。。。
>>469 ありがとうございます。でもちょっとまだ何をやってるのかわかりません・・・
>>470 配列などのオブジェクトにするしかないんですかね・・・。オブジェクトは
ポインタを渡すことになるので、参照渡しになるのは理解できるんですが、
普通の変数のポインタを渡したりはできないんでしょうか・・・。
ありがとうございます。
473 :
デフォルトの名無しさん :2005/05/22(日) 20:35:10
オブジェクトや配列など可変オブジェクトは参照渡しになってるので可能だけど、 整数値,文字列,タプルなどのオブジェクトは不変オブジェクトなので変更できない。 変数が不変オブジェクトを参照する場合は、 a = 1 b = 1 としたとき、a と b は、同じアドレスに作られた値を参照していて。a = 2 と新たな値を代入する場合は、 変数 a が新たな値を参照するようになるだけで、変数 b の参照する値はそのまま。 こういった仕組みになっているので、仮に参照を渡せたとして、aの参照するアドレスの値を書き換えた時、bの値も代わってしまう事になる。 ということで、不変オブジェクト(定数)に対してそのような副作用のある操作は出来ないようになってる。 weakrefなど、参照を作るモジュールもあるが、上の理由からprimitive型に対しては使えない。 クロージャを提案したいとこだけど、Pythonのは 参照は出来るけど(不変オブジェクトの)変更は出来ないなんて制約があるんだよなぁ。 前置き長くなったけど、解決策としてとりあえず思いついたもの。 A) 設計を変更する。 B) aを配列やユーザー定義のオブジェクト等に入れて渡す。 C) frameオブジェクトを参照し、別スコープの変数へ代入。(debug目的以外お勧めしないが)
474 :
デフォルトの名無しさん :2005/05/22(日) 20:50:28
Panda3D - Free 3D Engine
http://www.panda3d.org/ おもしろいもん見つけてきたお
Pythonで本格的なゲームを作れる開発環境
ディズニー開発、ディズニーとカーネギーメロン大学が保守してる
オープンソースで無料で使えるのが(・∀・)イイ!!
もともとディズニーがゲームを作るために作ったものでオプソにありがちな絵に描いた餅じゃない
マニュアル、チュートリアルも英語ながら充実してるしどうよ?
>>471 最近試したけどlibpython2.4が見つからないとかいってインストールできないみたい
libpython作るためにPythonの再構築からする必要があるかも
>>474 ライセンス読むのめんどいから要約してw
>>475 cygwinのdistutilsはちゃんとライブラリ名拡張してくれてるはずだから
きちんと対応していないnumpy側が悪いんじゃねーの?
なんでmathモジュールの中にabsを入れねーの?変なの
ANSI C でも abs は stdlib.h で定義されてるけど。何が変なの?
そうそう。absはintでdoubleならmath.hのfabsにしなければならない。 これではまったことある。
ANSI Cに準拠してんの?じゃあpowは?変なの!
482 :
461 :2005/05/23(月) 12:29:17
>>462 ,465
お礼が遅れました。ごめんなさい。
どちらでも実現出来ました。ありがとうございます。
ドキュメント読みながらさらに理解を深めたいと思います。
483 :
デフォルトの名無しさん :2005/05/23(月) 12:32:51
*.py プログラムって *.exe にコンパイルできるん?
484 :
デフォルトの名無しさん :2005/05/23(月) 12:55:32
今さらだけど、doctest ってありえないぐらい便利だなっっっ!!!
>>484 もうすこし具体的な便利さを語ってほすぃ
486 :
デフォルトの名無しさん :2005/05/23(月) 22:04:12
>>485 たとえば2つの数値を足す関数 add() があるとする罠。
その関数の docstring にインタプリタでの実行例と実行結果を
こんな具合に書いておく。
def add(x, y):
"""Adds two numbers.
Example:
>>> add(1, 2)
3
>>> add(1+3j, 2-2j)
(3+1j)
"""
return x + y
さらにスクリプトの最後に以下のおまじないを追加。
if __name__ == "__main__":
import doctest
doctest.testmod()
するとこのスクリプトを実行するだけで、docstring の中の実行例が
実際に実行されて、docstring の中の実行結果と合っているかどうか
自動的にチェックしてくれるんだYO! マジすごくね?
487 :
デフォルトの名無しさん :2005/05/23(月) 22:05:45
>>483 Winならpy2exe
Macならpy2app
>>476 配布や販売は自由
あとはオプソ関連のこと書いてた
>>488 GPLスタイルなのかBSDスタイルなのかそこが問題だ
osxはだめか。。
>>489 このソフトウェア自身のコードの改変についてはライセンスを
変更できないみたいだけど、
このソフトウェアをライブラリとして利用するソフトウェアについては
なにも言及がないように読める。(読み間違えでなければ)
なので実質は LGPL か?
あと、変更したら90日以内に
[email protected] に
変更したもののソースを送れ、とも書いてあるな。
blendarと連携できたりするのかな?
Blender、MAYA、3dsMAX、MilkShape3DはOK
>>486 うをー、これメッチャ凄いやん
ドキュメント生成とモジュールテストという面倒くさい二大作業が一発でできるなんて…
教えてくれてサンクス
495 :
デフォルトの名無しさん :2005/05/25(水) 07:16:21
画像ファイルからサイズ(縦横ピクセル)、ビットの深さとか 動画ファイルの長さ、ビットレートなど、各種メディアファイルの情報を取得できるようなモジュールはありますか? 用はWindows上のファイル右クリックのプロパティで表示されるような内容を取得できるもの。
496 :
デフォルトの名無しさん :2005/05/25(水) 11:05:27
python て変数/関数名に "-" が入ってはいけないの? もしそうだったらイラネ。
>>496 中置算術演算子が使える言語が、識別子にマイナス記号を使えないのは
当然だと思うがどうよ。
498 :
デフォルトの名無しさん :2005/05/25(水) 12:33:39
Reply-to:
>>497 (俺にとっては)別にー。マイナスする時はスペースを前に加えるようにすればええやん。
(まあ、いつもスペースいれる癖のないやつは痛いだろうがな)
やっぱ lisp 系かな。
キモスwww
>>495 画像なら Python Imaging Library (PIL) が使える。
動画については知らん。
501 :
デフォルトの名無しさん :2005/05/25(水) 13:30:44
残念ながら、Pythonは式中のスペース等詰めて書く傾向がある。 lisp系で - を識別子に使うのは、名前空間に使う場合が多いはずだけど、 Pythonの場合は、クラスやモジュールにまとめる方がわかりやすい。 識別子にprefixで名前空間を与える方法に較べて、カプセル化で名前空間を識別する場合は、 string自体が可搬で、別名の変数に入れてアクセスしたりも出来る、などの利点あり。 ローカルな一時変数の名前に使いたいといったケースには合わないが。 lisp系に乗り換えるとしても、"-"が識別子に使えないからと言う理由はどうかと思うよ。 closure内でローカル変数に代入できないとか、もっと致命的な問題はたくさんあるのに。
つーか、-にこだわる理由がわからん。
>>501 てか、全体的に lisp の方が自由度高くない? (まあこれが諸刃の剣にもなり得るのだけど。)
501 が common lisp とか lisp 系言語を知っていると仮定して、どう思うよ?
それと、どっちがプログラミングしてて楽しい?
俺にとってはこれが一番大事。
>>502 - があった方がプログラムが見やすい。それに - の方が _ より打ちやすい。
はじめて見る煽りが清々しい
>>503 自由度だけにこだわるんなら、それこそアセンブラや機械語だと何でもありだと思うけど。
楽しいか楽しくないかは、その人のバックグランドにも大きく依存するし。
今どきの計算機科学を基礎からきちんと専攻した人間なら、Pythonと比べて特
にLISPを好むはずもないし。
> 俺にとってはこれが一番大事。
たぶん旧式なのか叩き上げなんですね。
> - があった方がプログラムが見やすい。それに - の方が _ より打ちやすい。
なんか非常に低水準な話だなあ。Rubyの教祖みたいだよ、そんなんじゃ。
ここはPythonスレ。 似非Lisperは()の中へお帰り。
>>503 「自由度」が何を意味しているのか分からないけど
Common Lisp と Python でそれぞれ何万行か書いた経験から言って
Python の方がプログラミングしていて楽しいよ。
便利なモジュールがたくさんあって楽ができるという点でも
Python の方に軍配が上がる。
昔話:俺が使っていた Lucid Common Lisp にはロクなモジュールがなくて
RDBMS と Tcl/Tk を各々 Lisp 側から利用するためにモジュールを自作したりして
なかなか大変だった。
でも Lisp も好きだよ。Emacs Lisp は今も常用しているしね。
インタプリタでボトムアップで開発できるところがいい。
Lisp が好きな人は Python も好きになれると思う。
好きになれないとしたら食わず嫌いだと思われ(笑)
>>501 > 残念ながら、Pythonは式中のスペース等詰めて書く傾向がある。
これどういう意味?(素で分からん)
>>501 > lisp系で - を識別子に使うのは、名前空間に使う場合が多いはずだけど、
それはパッケージ機構のないEmacsLispの命名慣習の話じゃないの?
それ以外にもLispでは複数の英単語をつなげるとき普通に "-" を使う。
Cだと my_cool_identifier
Javaだと myCoolIdentifier
Lispだと my-cool-identifier
scheme だと symbol->string とか list->string なんてのもあるな。
512 :
501 :2005/05/25(水) 20:32:51
>>503 >>496 ,
>>498 読み直しても、どういう意図なのかわからないのだけど...、構文の自由度って意味?
識別子については、[a-zA-Z_]しか使えないからと言って別に不自由に感じた事はないなぁ。
自分の場合、Iispでfoo-barと書いてるところは、Pythonでは大抵foo.barと書けるようにクラス設計する。
一時変数などの場合でも、メソッド内に処理書けば、スコープが自明な為、prefix外せる場合が殆んど。
ところで、"_"が打ち難いのであれば、Pythonは向いてないかも知れないよ。
__name__, __init__, __main__, __call__, __iter__, ... とか、pythonではたくさん_使う。
>>509 PEP8 (Style guide) 式や文の中のホワイトスペースの辺り。
算術演算子周りは各自の判断で一貫性を保つのが推奨されてるけど、
引数に式を書く時などは詰められる事が多いです。max(a + b, c - d) => max(a+b, c-d)
http://www.oldriver.org/python/pep-0008j.html
(言語名) て変数/関数名に "-" が入ってはいけないの? もしそうだったらイラネ。
アンダースコアが打ちにくいと感じる人には 括弧も打ちにくいのではないかと、ふとオモタ。
確かに変数名が1文字だったらなるべく詰めて書きたいな> x-y
>>506 >今どきの計算機科学を基礎からきちんと専攻した人間なら、Pythonと比べて特
>にLISPを好むはずもないし。
上で出てたクロージャの件とか
SICP で Scheme に目覚めたとか
コンパイラ方面の人とか(最近は ML かな)
>>506 >今どきの計算機科学を基礎からきちんと専攻した人間なら、Pythonと比べて特
>にLISPを好むはずもないし。
それにしても すごい決め付け
518 :
デフォルトの名無しさん :2005/05/26(木) 00:43:26
PythonのほうがLISPなんかよりずっと優れた言語仕様なのに。 それを認めようとしない低能リスパはきっとまともオブジェクト指向 もできないに違いないWWWWWWWWW
Lisp は "/" もオケ
(define call/cc call-with-current-continuation)
call.with.current.continuation だと意味分かんない
しかし Lisp の話はスレチガイだな
>>512 __main__ とか __call__ とかってちょっと気持ち悪くない?
コードの中で浮いてる気がする
>519 >コードの中で浮いてる気がする 敢えて浮かしてる、ということもあるんじゃなかろうか。 気持ち悪い、ということについてはこりゃ好きずきかな。 俺は'_'どんとこい派? なのでキモイとまでは思わない。
慣れた
522 :
デフォルトの名無しさん :2005/05/26(木) 05:13:39
きもいと思う。
こんなマイナー言語のスレなんか上げんな
524 :
デフォルトの名無しさん :2005/05/26(木) 10:15:09
英語圏ではかなりメジャーなわけだが・・・
>>501 >lisp系で - を識別子に使うのは、名前空間に使う場合が多いはずだけど、
本筋とは関係ないが、名前空間というかモジュールの区切りにはコロンを使う。
FOO モジュールの BAR 関数は FOO:BAR とか FOO::BAR になる。
perlの次にメジャーなんだっけ?
20年くらい前の本を読んでたら、pascalのbegin、endの位置をどうするかって 話題があって、いろいろなコーディングスタイルを検討してたけど、最後にいっそのこと、 インデントを文法に組み込んでbegin,endはなくしたらいいみたいなことが書いてあった。
RUBYのつぎ
インデントを文法に組込むのは決して良いアイディアではないが、endよりはマシ。
ruby は海外の方が活発
日本語で表現されるものが世界の全てなら英語圏での人気など何の意味も持たない
>>533 君は英語が読めないようだね・・・
プログラマーには向いてないね。
英語がダメなら「なでしこ」でも使っていればいいのよ
rubyなんて使ってたら基地外扱いを受け兼ねない・・
ひまわり
ユーザ数で使う言語を決めるなどナンセンス
>>527 インデントを文法に組みこむのは昔の bit の記事にあったような。
20年前といったら Occam が出たか出ないかの頃かな。
ML 以前に二次元文法の言語あったの?
AAに慣れた 2chネラーには むしろ向いてる気がする
インデントやめて普通にC/C++, Java風のスタイルにしてほしい・・・
JavaScriptみたいになったりして
>>541 Haskell はインデントが意味をもつけれども ML は関係ないのでは?
実用言語としては Occam がインデントで構文を表わそうとした最初の言語だと思う。
ホアが関係していること、独特の並列処理構文をそなえていることで一時雑誌記事が
多かった。
>>543 それらは全てシンタックスが汚すぎ。
おまえ、糞っぽいエディターしか使えないだろ?
オライリーのネズミ本で充分じゃネ?
「なでしこ」は、かなり使えるのでは・・? perlが英語を母語にする人に浸透した理由を考えると、 「なでしこ」の将来は明るいような・・
日本語しか使えない奴の将来は暗いので・・
テンプレ 「○○○○」は、かなり使えるのでは・・? △△△△が□□□□を母語にする人に浸透した理由を考えると、 「○○○○」の将来は明るいような・・
>>546 gvimしか使えません。。。すいません・・・
シンタックスに日本語を使うと余計に判りづらくてイライラする。 数えるほどしかない予約語すら覚えられない奴は、頭脳労働は辞めるべきだな。
もし ネタ: マジレス
Unit Testのプログラムコードに日本語が使えると「『動く』仕様書ですYO!」といって納品できる。(といいなぁ)
逆に考えて、仕様書から抽出してユニットテストを構成するようにすれば。
558 :
デフォルトの名無しさん :2005/05/28(土) 00:48:52
オブジェクトへの参照をネットワーク経由で公開したいです 公開者側ソース(192.168.0.2で動かす) class MyClass: def f(self): print "hello world" mine=MyClass() s=objectsocket(..., mine) s.bind(...) s.accept() 利用者側ソース s = objectsocket(...) mine = s.connect(('192.168.0.2', PORT)) mine.f() #公開者側のコンソールにhello worldが表示される こんなかんじなのを可能にしてくれるライブラリはありますか?
559 :
デフォルトの名無しさん :2005/05/28(土) 01:07:06
>>558 標準ライブラリないだとxmlrpcがそれに近いかな。
プロトコルについてはtwistedとかだとS式ベースのとか、他にもある。
562 :
デフォルトの名無しさん :2005/05/28(土) 21:59:38
563 :
558 :2005/05/29(日) 02:12:18
Noneのせいでつまずきましたがxmlrpcできました. ありがとうございました
565 :
ボッキー谷村 ◆XovXppFfGM :2005/05/29(日) 11:10:09
今日から Python をやってみようかと思う。 みんな応援しろ
がんがれボッキー(・∀・)
567 :
ボッキー谷村 ◆XovXppFfGM :2005/05/29(日) 18:50:16
Level20だれかたのむ
569 :
ボッキー谷村 ◆XovXppFfGM :2005/05/30(月) 18:30:59
よお、みんな! ところで、なんで↓ import commands output = commands.getoutput( "ls" ) print map( lambda element : if element.endswith( ".rm" ) : element , output.split( "\n" ) ) がシンタックスエラーになるのかと思ってたら、 lambda_form ::= "lambda" [parameter_list]: expression なのね。 この lambda ってなんか偽物っぽい・・・ 正直、 lambda_form ::= "lambda" [parameter_list]: statement にしてほしかったわ。(でもシンタックスの問題があってできなかったんだろうね。)
570 :
ボッキー谷村 ◆XovXppFfGM :2005/05/30(月) 18:34:37
lambdaが半端だというのは分かるけど、その処理するならこうだな。 filter(lambda elt: elt.endswith(".rm"), output.split("\n")) それか、これ。 [ elt for elt in output.split("\n") if elt.endswith(".rm")]
572 :
ボッキー谷村 ◆XovXppFfGM :2005/05/30(月) 19:36:57
>>571 filter いいね。
でも、なんとか lambda でやってみたかったのよ。
print map( lambda element : element.endswith(".rm") and element or None , output.split( "\n" ) )
これとかは、微妙に結果が違くなるけど、なんとかうまくいけてるっぽいな。
ところで、 `ord' って関数は何の略?
import glob print '\n'.join(glob.glob('*.rm'))
>>572 >print map( lambda element : element.endswith(".rm") and element or None , output.split( "\n" ) )
これは、同じ事を考えた人が結構いると思うけどやっぱり分かりづらい。
>微妙に結果が違くなるけど
mapは要素数が変わらないからね。
>`ord' って関数は何の略?
help(ord)を参照すれば分かる。
どっちかというとニホンザル版に見える。
サルだとすると微妙に土下座してないなw しっぽだけ喧嘩売ってる
>>568 サーバの言うことをよく聞いて,出し惜しみしないよう頼んでみ.
580 :
デフォルトの名無しさん :2005/05/31(火) 00:56:58
ぬるぽ
スレのタイトルを考えると、 AttributeError: 'NoneType' object has no attribute 'ぬるぽ' とかじゃないかと小一時間。
>>579 ヒント読んでやっと中に入れたよー、ありがとう
IronPythonで、ManagedDirectXをいじるという妙な実験をしてるんだが、 どうにもVertexBufferのコンストラクタ部分でエラーになる。 元にしたC#側のソースは大丈夫なんだが(DirectX SDKのチュートリアル) tmp = CustomVertex.TransformedColored() #typeofが使えないので迂回策 t = tmp.GetType() v = VertexBuffer(t, 3, dev, 0, CustomVertex.TransformedColored.Format, Pool.Default) bad args to this methd〜、と コンストラクタえ与える引数が駄目駄目だよというErrorのようなのだが。 …あってると思うんだがなぁ
"%s %s %s" % ('hoge', ['huga', 'moge']) みたいなのをうまく処理する方法はないでしょうか? 一部の引数を展開したいのです。
あれれ、Pythonってシーケンスを引数に展開する記法ないのかな。 とりあえず、%演算子にはtupleを渡せばいいんだから、 >>> a = ['huga', 'moge'] >>> "%s %s %s" % tuple(['hoge'] + a) 'hoge huga moge'
>>> a = 'hoge' >>> b = ['huga', 'moge'] のとき >>> "%s %s %s" % ((a,) + tuple(b)) 'hoge huga moge' または >>> "%s" % a + " %s %s" % tuple(b) 'hoge huga moge'
または >>> b1, b2 = b >>> "%s %s %s" % (a, b1, b2) 'hoge huga moge'
ついでだから、Lisp系でよくあるflatten()をだれか書いて
>>> from Tkinter import _flatten >>> _flatten([([0], [(1,2), 3], 4), [5, (6,)], ((7, [8]),)]) (0, 1, 2, 3, 4, 5, 6, 7, 8)
zopeの質問してもいい? formulatorのリストにDBからとってきた値を入れたいんだけど どうすればいいの? DBは、gadflyです。
ZopeはWebProg板の専用スレで。
Zopeの質問なんかするからスレが止まってしまった。
テンプレに入れとけ世
597 :
デフォルトの名無しさん :2005/06/05(日) 09:58:33
ttp://www.daniweb.com/code/snippet208.html ↑から音声ファイルを再生するスクリプトを発見したんですが、
『AttributeError: WMPlayer.OCX.newMedia』と表示され再生できません。
誰か原因はわかりますか?というか『AttributeError』ってなんですか?
from win32com.client import Dispatch
mp = Dispatch("WMPlayer.OCX")
tune = mp.newMedia("C:/WINDOWS/system32/oobe/images/title.wma") #ここでエラー発生
mp.currentPlaylist.appendItem(tune)
mp.controls.play()
raw_input("Press Enter to stop playing")
mp.controls.stop()
>>597 自分のところだと問題無く再生できたよん。
WindowsMediaPlayerを最新にしてみたらどうかな?
Python側の問題では無い気がする。
599 :
597 :2005/06/05(日) 14:50:30
>>598 WindowsMediaPlayerのバージョンアップをしても駄目。
win32モジュールを最新版にしてエラーは出なくなったが、音が出ない。
また検索してもドキュメント等が見当たらないので、今後の事も考えて違う方法を使用することにします。
道のりは遠い...orz
>>599 他の言語で同じことを試してみれば?
たぶん環境の問題だから同じようにエラーが起きると思う
601 :
599 :2005/06/06(月) 10:13:39
>>600 VBSで出来ちゃいました。
Set mp = CreateObject("WMPlayer.OCX.7")
Set tune = mp.newMedia("H:/radio/Breathe.mp3")
mp.currentPlaylist.appendItem(tune)
mp.controls.play()
WScript.Sleep(tune.getItemInfo("Duration")*1000)
mp.controls.stop()
mp.close()
もうわからん。
602 :
ぴちょんちゃれんぢ :2005/06/08(水) 20:12:41
Q. 以下の□に+−×÷を記入、または□を消して計算式を完成させよ。 1□2□3□4□5□6□7□8□9□10=2741
>602 よくわからんが、Prolog向きのネタなのかな 学生時代一回授業取っただけなので思いだせんが‥‥‥
604 :
デフォルトの名無しさん :2005/06/08(水) 22:57:00
職業適性検査?
605 :
デフォルトの名無しさん :2005/06/09(木) 15:39:08
for operators in range(5**9): x = operators buffer = [] for operand in range(1, 10): x, op = divmod(x, 5) buffer.append(str(operand)) buffer.append({0: "", 1: ".0+", 2: ".0-", 3: ".0*", 4: ".0/"}[op]) buffer.append("10.0") expr = "".join(buffer) if eval(expr) == 2741.0: print expr
606 :
デフォルトの名無しさん :2005/06/09(木) 15:41:23
あ、operators の値を残しておく必要はなかったな。 試行錯誤の跡ってことで。
ジェネレータ版. s = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] def formgen(seq, i): for sep in ['.0+', '.0-', '.0*', '.0/', '']: if i==len(seq)-2: yield seq[i]+sep+seq[i+1]+'.0' else: for tail in formgen(seq, i+1): yield seq[i]+sep+tail print 'Hmm, there are %d possibilities...' %(5**len(s)) for count, formula in enumerate(formgen(s, 0)): if eval(formula)==2741.0: print '%dth iteration, %s=%f' \ %(count, formula.replace('.0', ''), eval(formula))
間違えた... s = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] def formgen(seq, i): for sep in ['.0+', '.0-', '.0*', '.0/', '']: if i==len(seq)-2: yield seq[i]+sep+seq[i+1]+'.0' else: for tail in formgen(seq, i+1): yield seq[i]+sep+tail print 'Hmm, there are %d possibilities...' %(5**len(s)) for count, formula in enumerate(formgen(s, 0)): if eval(formula)==2741.0: print '%dth iteration, %s=%f' \ %(count, formula.replace('.0', ''), eval(formula))
ワタシ脱ぎます!
すいません。リストの中の最頻値ってどう求めればいいでしょうか。
データ量が少なければ手でhistgram作ってるなぁ俺は。 試してないけどこんな感じ? dataList = [1,2,3,3,4,5,6,6,3,2] hist = {} for data in dataList: if not hist.has_key(data): hist[data] = 1 else: hist[data] += 1 def _cmpv(a, b): return cmp(hist[a], hist[b]) k = hist.keys() k.sort(_cmpv) print k[-1] とか? もっといい方法あったら教えてね。
> if not hist.has_key(data): > hist[data] = 1 > else: > hist[data] += 1 hist[data] = hist.get(data, 0) + 1 とすると1行になるが、さらにすっきり重複なしで書く方法はない?
from sets import Set uniq = Set(dataList) print dict( (x, dataList.count(x)) for x in uniq) 遅そう・・
from itertools import groupby dataList=[1,2,3,3,4,5,6,6,3,2] print [ (k,len(list(g))) for k,g in groupby(sorted(dataList)) ]
itertools.groupbyって2.4からか。 Py厨の諸氏はもう2.4に移行してるの?
>>602 に追加で
「カッコも好きなだけ入れていい」を追加
utf-8のファイルを開いて、それをSJISで表示する(printとかstdout.write)にはどうすればできる?
print open("foo.txt", "r").read(-1).decode('utf-8').encode('sjis')
こういうのもあり print codecs.open('bar.txt','r','utf-8').read(-1).encode('sjis')
こういうのもあり sys.stdout = codecs.getwriter("sjis")(sys.__stdout__)
TMTOWTDI
ドメインまであったのかw まぁ、hoge.jpもあるし。(関係ないが)
625 :
デフォルトの名無しさん :2005/06/11(土) 17:56:06
Pythonでさー、一時ファイルを作成するとき悩むんだよねー。 やりたいことはさー、一時ファイルを作成して、それにデータを書き込んで、 正常に書き込み終わったら、(一時ファイルではない) 別の名前に名前変更したいんだけどー、 この要求にベストマッチする関数ってある? NamedTemporaryFile だったら、一時ファイルの名前を取得できるけどー、 オープン中は名前変更ができないじゃん。いったんクローズしてしまうと、 その一時ファイル名は無効になっちゃうしねー tempfile 関数だとできそうだけど、いったんオープンされたハンドルを クローズしないといけないって、なんだか無駄な気がするんだよねー。 ハンドルじゃなくてファイル オブジェクトを返してくれればいいんだけどさ。 なんかいいのないー?
(∩゚д゚)アーアーきこえなーい
tempfile関数ってなんだか知らんが、tempfile.mkstemp()とos.fdopen()
628 :
625 :2005/06/11(土) 22:36:49
>>627 ごめーん、tempfile じゃなくって tempfile.mkstemp のことね。
StringIOでメモリ上に書き込んどいて書き出せば?
moinmoinは、これ以上ユーザ登録させない!といったことは出来るのかしら。
つーか,大きくないファイルならコピーしろよ,と.
リネームで済むのにコピーするのは、かなりださいと思われる。
クマー
>>633 プロトタイピングプロセスだってさ・・・何を今更なネタだなぁ
>>632 同一ファイルシステム内の話じゃないかもしれんよ。
ま、真にダサイのはファイルに書き出した時点で
ファイル名が決まっていない事だがな。
Level21誰かお願いします
641 :
デフォルトの名無しさん :2005/06/13(月) 21:26:07
あるディレクトリ以下のすべてを消去したくて以下のようなものを作りました。 import os,os.path def dele(dir): for i in os.listdir(dir): hoge = os.path.join(dir,i) if os.path.isdir(hoge): try: os.rmdir(hoge) except: dele(hoge) elif os.path.isfile(hoge): os.remove(hoge) これだと2回delを実行しないと目的が果たせないのですが、 一回で済ませるにはどう書けばいいのでしょうか。
つ [shutil.rmtree] 件の現象の原因は、ディレクトリの中身にファイル残っている状態で ディレクトリ消せないからだと思うよ。だから2回で消せるとも限らない (深さによる)
os.system("rm -rf %s" % dir) 破壊力が強いので引数の妥当性チェックには気をつけてくれ。 移植性? シラネ。
>>641 ありがとう。おかげで最後までたどり着いたよ。
>>643 ディレクトリ深く掘ったら確かに2回じゃ消せませんでした。まだまだだなぁ。
それにしてもshutilなんて知りませんでしたよ…orz
ありがとうございました。
>>644 確かにやりたかったのはこれですが…(;´д`)
Apacheのhtpasswdコマンドと同じようなことができるモジュールってありますか? perlのApache::Htpasswdのようなやつです。 python apache htpasswdをキーワードにぐぐってみた結果とPyPI見てみた結果ではそれらしきものが見付けられませんでした。
つ os.system("htpasswd -b %s %s %s" % (passwdfile, username, password))
651 :
648 :2005/06/14(火) 22:53:30
むぅ、そのものずばりなモノはなさそげですね。
>>649 ゲトして中身を軽くさらってみたですが、簡単にパクれるとゆーものではなさそげですた。ターゲットマシンがパワーなさすぎなので、Zopeそのものを使うのは残念ながら却下。
>>650 それだと生パスワードが一瞬プロセステーブルにのるのがちと微妙(それを気にするまえにもっと注意すべきところがあるだろう、という話がないわけではないけど^^;)。
あと、コマンドラインのエスケープで頭ひねる必要があるような気が。popen2でhtpasswdさんとお話ししたほうがいいかも、と思ったり。
俺も以前Pythonでクローンを作ろうとしたことがあった希ガス。 うろ覚えだけどhtpasswdってUnixのcrypt(3)を呼ぶだけの単純な パスワードじゃなかったっけ。Pythonからcrypt(3)を呼ぶためだけに ゴニョゴニョとC拡張モジュールを書いた記憶がある。 ・・・ってこれじゃ単なる思い出話だな。スマソ
653 :
デフォルトの名無しさん :2005/06/15(水) 03:56:24
>>652 cryptだったら標準モジュールにあるけど..
標準モジュールのgetpass, base64, sha, md5, crypt, tempfile, のみでcloneつくれそう。
Python はライブラリがかなり使い安くて効率的。 ":" の使用の仕方は Matlab と違うし、直観的じゃない故に気にくわないけどな。
Pythonのお勧め本って何?
656 :
デフォルトの名無しさん :2005/06/15(水) 09:48:35
>>651 書いてみたよ
plaintextとCRYPTはわかると思うので、SHA1とMD5エンコーディングのみ。
import sha, base64
def sha1_base64_encode(password):
return "{SHA}" + base64.encodestring(sha.new(password).digest()).strip()
MD5のエンコードは、(ここに張り付けるには)ちょっと長くなるので外部ライブラリで、
http://www.twistedmatrix.com/users/z3p/files/pyshadow-0.1.tar.gz # 必要なのはmd5_crypt.pyのみでshadowはコンパイルする必要ない。
# 注意点はMD5_MAGICの部分を
'$apr1$' に変更。
def md5_encode(password, salt):
import md5_crypt
md5_crypt.MD5_MAGIC = '$apr1$'
return md5_crypt.md5_crypt(password, salt[:8])
twistedも pyshadowのmd5_cryptを使ってる。zopeもtwisted使ってるので同じ。
657 :
651 :2005/06/15(水) 11:23:47
>>656 うぉぉ、大感謝。これ見ると、SHA1が一番手間いらず&&環境依存性少なしって感じですかね。(対象はApache2固定)
>655 はじぱい第2版
>>655 初めてのPython 第2版 ← 持っといて損無し
Python Programming on Win 32 ← Windows使いなら
他の本はマニュアルに書いてあることの焼き直しだったり、
訳された時期が古かったりで、内容的にもイマイチな印象。
ぶっちゃけ日本語訳のマニュアルで大体事足りると思う。
初めてのPython はかなりいい本だな。
あの内容だけではクラスが書けんと思うがどうか。
>661 オススメの本を聞いて来るレベルの人には別にいいんじゃねぇの
たとえば比較演算したかったらひとまず__ge__とか忘れて__cmp__実装しろとか、 親クラスのメソッドはSuper(Foo, self).bar()で呼び出せとか、 そういうOOの基礎レベルの事はどこかにまとめて書いてあってよいと思うのだ。 別に恥パイでなくてもよいが。
> 親クラスのメソッドはSuper(Foo, self).bar()で呼び出せとか これ知らない。どゆこと?
class Oya: def bar(self): print "親" class Ko(Oya): def bar(self): print "子" Oya.bar(self) 神経質な人は Oya.bar(self) と書かずに super(Oya, self).bar() のように呼び出す Oya.bar(self) だとどんな実害があるのかは知らんとです
super(Ko, self).bar()じゃないかな。 superを使った方が多重継承のときに良い事がある。 いずれにせよ具体的なクラス名が入るのが冗長でうっとおしいんだが、 関数bar()は自分の定義されているクラスを知らんのだろうか。
うーん、動かない。何か間違ってる? Traceback (most recent call last): File "<pyshell#34>", line 1, in -toplevel- Ko().bar() File "<pyshell#33>", line 4, in bar super(Oya, self).bar() TypeError: super() argument 1 must be type, not classobj
あれ、super(Ko, self).bar()にしても動かない…。
class Oya(object): でないと遺憾。
671 :
デフォルトの名無しさん :2005/06/17(金) 07:24:12
>>665 協調メソッドといったNew style classにおける菱形構造の多重継承を解決するもので、
通常は、MROなどを利用しなければ利点も害もないはずです。
こんな感じでみんなよくわかってないもんで、 new style classのその辺をすぱっとまとめて解説した Effective Pythonみたいな本をきぼんぬ。
本じゃなくてもいいけど、確かにその辺の情報ほしいなぁ〜。日本語で。
「息子が連れてきた彼女とオマンコする。」 みたいな逆継承機能ってないの? おっぱいソンなら実装できそうな気がするんだけどな。
>>674 逆継承と一行目のたとえのつながりがわからん
「父のティムポのインスタンスが息子のティムポ」 だから継承可能
677 :
デフォルトの名無しさん :2005/06/17(金) 23:40:05
すんません最近はじめたものなんですけど インデントにハードtabを使用してはいけない理由がよくわからんのですが・・・ エディタや端末の都合によってtab幅を変えたりできるので個人的にはなんで? という感じなんですが
>678 >エディタや端末の都合によってtab幅を変えたりできるので だからこそ、ハードtab使うと、ソースの見た目が「エディタや端末の都合で」バラバラに変わってしまって 見やすくないからジャマイカ。
680 :
678 :2005/06/18(土) 00:28:49
むう。それはそうなんですが 利点と感じる人間もいれば欠点と感じる人間もいるわけなんですね 特にこだわりがあるわけでもないので礼儀正しくスペースでいきます 将来のバージョンでは「お勧めしない」から「エラーとなる」 とどこかに書いてあったもので気になってたずねてみました ありがとうございました
>>657 あらためてコードを見直してるときに気付きました(鈍い^^;) 確かにこれではMD5推奨ですねぇ。
ところで、BSDライセンスって、自分のコードと同一ファイルに改変を加えながら混ぜ込んだ場合はどうなるんだろう……。
>>678 python歴1週間なんですけど、ハードTABは内部で最大8コのスペースに変換される(ハードTAB幅=8)というのは見たのですが、使うなっていうのはどこに書いてます?
# perl歴10年以上、ruby歴ちょっとだけ、のところからやってきますた。
# とりあえずわかったことは、カッコだろーがbegin〜endだろーがインデントだろーが
# たいして変わらん(Emacsがよきにはからってくれるし:-)、とゆーことでつね。
682 :
678 :2005/06/18(土) 01:53:56
>>681 http://www.python.jp/Zope/ >Guido van Rossum 氏は Python プログラマのさらなる飛躍のため、新たな「型」の導入を決心したようです。
>それはホワイトスペースの使い方を構文レベルで強制することです。次のような案が出ています。
>タブによるインデントは廃止。インデントにはスペースを使う。
ここに書いてありますた
683 :
681 :2005/06/18(土) 01:59:34
>>682 それについては、エントリの日付をよく確認した方がよいかと……(^^;;;
684 :
682 :2005/06/18(土) 02:03:54
ありゃ4/1かー じゃtabでもエラーにはならないみたいすね ただtabはオススメしないと別のサイトにあった記憶が ・・・それも4/1じゃないよな・・・
685 :
681 :2005/06/18(土) 02:19:11
Windowsあたりから来た場合タブ幅が4だったりするので、スペースとタブを混在させると原因が理解できないバグを発現させる可能性があるからじゃないでしょーか。 UNIXから来た場合はタブ幅が8なので、問題なかったりするのですが。
686 :
デフォルトの名無しさん :2005/06/18(土) 05:09:52
>>681 実際に使用するライブラリがあればそっちのライセンスを適用すべきだけど、
参考までに、apr-util(Apache Portable Runtime utility)のmd5 encodeでは、
アルゴリズムはFreeBSDのcryptから借りてきたよ。とだけコメントに書かれてます。
緩いライセンスなので、それほど気にする必要はなかったかな。改変も商用利用も問題ないです。
>>684 PEP8 Style Guide for Python Codeですね。
April oneのは、構文解析時にスタイルを強制するかも、って話で、
そこに書かれてる作法自体は、PEP8スタイルガイドで昔から推奨されてます。
他の言語でも公開するようなソースはtab>whitespace変換しとけみたいなこと言われてないか?
>685 おいおい viでもset tabstop=4とかすりゃ……
組み込み言語としてのPythonってどうですか? 現在WindowsXP + VC++.NET + DirectX + Python2.4で、ゲームを作っています。 ネイティブコードより、Pythonを呼び出してPythonからネイティブコードをCallできる 仕組みを利用しているのですが、Pythonモジュールの呼び出しのオーバヘッドや動作速度が気になります。
690 :
689 :2005/06/19(日) 00:56:13
質問age
組み込みって言われると機器の制御とかそういう方を思い浮かべた俺
693 :
689 :2005/06/19(日) 13:46:11
>>691 組み込み用途としてPythonを採用しているソフトって、メタセコイアぐらいしか知らないんで
他にどういった使われ方をされているか知りたい。
>>693 メタセコよりBlenderの方が色々な使い方をしてるな。
ソースも公開されてるし。
一応、PS2・PCゲーなどで組み込まれた実績あり。
検索すれば出てくる。
ただ、組み込み系はメモリ的にキツいだろうね。
メモリが足りない=ストップだから。
>>693 その方面だと Shade、trueSpace、Blender あたりが有名かな。
いずれも Python による scripting が可能だそーだ。
696 :
689 :2005/06/19(日) 14:24:55
>>694 結構採用実績がありますね…。PS2で組み込まれたのはすごいな。
BlenderもPythonだったのかぁ、知らなかった。使いにくくて辞めたけど…。
気になったのは、メモリの関連。Pythonってメモリ使用量多いですか…?
すごく気になる。
>>695 trueSpaceみたいなゲームフレームワークも採用しているのか。
自分が思いついた事はもう既に誰かが実践しているのね。ちょっと悲しい。
Shadeは使っているんだけど、Pythonスクリプティング可能だったのかー!
知らなかったー…。
10年以上の歴史がある言語だからねえ。
698 :
689 :2005/06/19(日) 14:47:26
>>694 Pythonドキュメントで10.1 Allocating Objects on the Heapの項である
関数以外でPythonがヒープに大きく影響する?
PyMethod_Functionを呼んだ先でヒープ確保とかしているということ?
Pythonのメモリマネジメントってどうなっているのか分からない…。
>>697 10 年は若い方
>>698 前に調べた時は GC は参照カウント + ループ回避だったみたい
700 :
689 :2005/06/19(日) 14:58:16
>>699 CからPythonの関数を呼んだ時に、Pythonが確保するヒープ容量って
どのように制御されているか分かりますか?
Pythonが勝手にメモリを食っていくようだと、かなり厳しいのですけど…。
できれば呼び出し側のC側で使用メモリ容量を制限したいんですが。
>>696 > 気になったのは、メモリの関連。Pythonってメモリ使用量多いですか…?
組み込み用途として考えると多い、と言えるだろうね。Pythonに限らず
RubyもLuaも基本的な作りは同じだと思うよ。便利モジュールをインポート
して使用メモリの増加を見るといい。
基本的に処理の呼び出しが名前ベースで解決されるから、
インスタンスが増えれば増えるほどその分文字列のデータが
増えてくわけだ。名前で解決するからこそ便利な一面も
あるわけだけど。
適当にしか見てないからウソ言ってるかも。
自分アプリに組み込むか、ソースをコンパイルするなりして、
デバッガでmallocしているところを追うのが手っ取り早い。
マニュアル見れば結構簡単にできる。
スクリプティング可能にして、ユーザに拡張させることを考えると
どれだけのメモリを使うか予想が付かないから組み込みでは
キツい、という自分なりの結論。後、Pythonは基本的に保護
機能みたいなのが無いから、行儀の悪いことされると困る。
性善説に基づいているような言語って感じ。
そんなタイトな環境でスクリプトを使う神経がわからんダスよ
>>698 > Pythonのメモリマネジメントってどうなっているのか分からない…。
つpython/dist/src/Python/memmove.c
704 :
689 :2005/06/19(日) 23:08:47
>>701 Python側で変なコード書かないかチェックしなきゃいけないって事ですね・・・。
参考になりました。もうちっと追っていきます。
(自分はPy_InitModule呼んだ段階でヒープは全て確保済みだと思っていた・・・)
>>702 ゲームとかゲームとかゲームとか・・・
>>703 眺めておきます(ぉ
Poser3DにもPythonスクリプト載っている
>>704 > ゲームとかゲームとかゲームとか・・・
だったらBlenderが一番の参考資料になるかもね。
Pythonでゲーム向けのAPIが用意されてるよ。
色々なデモがあったはず。
個人的な考えだけど、まずはデバッグ環境用としてのみPythonを組み込んでおいて、
実行時にオブジェクトのステータスを変えたり、振る舞いを変えたり、といった
作業効率を向上させるための道具として使う。で、メモリ、動作速度面での
目処が立てば次のプロジェクトで実用へ、って感じかな。
まぁ、ゲームに組み込みを考えるならLuaの方がコンパクトだから
そっちの方が無難かも。
707 :
689 :2005/06/19(日) 23:49:06
>>705 ,706
イロイロ参考になります(汗
今はゲームで画面遷移、パラメータ設定、セーブの為のシリアライズのみ使ってます。
Blenderソースは知らなかった・・・。探してみますね。
Luaはコンパクトな反面、標準モジュールがPythonに劣るので・・・。
時流に乗ってPythonでいきます。
708 :
デフォルトの名無しさん :2005/06/20(月) 02:44:38
> CからPythonの関数を呼んだ時に、Pythonが確保するヒープ容量って
自分でPythonの処理系をコンパイルするなら、オプションで上限を設定できます。
> 基本的に処理の呼び出しが名前ベースで解決されるから、
> インスタンスが増えれば増えるほどその分文字列のデータが
> 増えてくわけだ。
Pythonの文字列は(関数呼出の際の関数名など内部で使われる文字列も)
重複する文字はinternとして扱われるので、メモリの面では単純に比例して増えるわけではありません。
あと、Pythonのソースで気をつける事。# とりあえず思いついただけなので、突っ込み・追加歓迎
- 事前処理以外にevalを使わない。
- (stacklessでなければ、)再帰呼出やデータの循環構造
- リストを固定長で扱う。リサイズ時に拡張されるので、appendを直接使わない。
初期化時に長さだけ確保しておく方が良い。Cの配列ようにまとまった領域が取られる為。
- クラスで抽象データ構造を表現せずに、list,dictを使い、長さ、要素の長さを制限する事で
実行時に使うデータ領域が大体予測可能になるはず。
> Luaはコンパクトな反面、標準モジュールがPythonに劣るので・・・。
組み込み向けでは、調査しなければならないライブラリが増えるというデメリットもありますね。
>>703 memmove.cってメモリマネージメントとは関係ないですよ。
アロケーターとかは、src/Objects/obmalloc.c
709 :
701 :2005/06/21(火) 00:26:34
>>708 詳しい情報をありがd。
自分の中でPython組み込みのモチベーションが
下がってたからいい刺激になったよ。
710 :
689 :2005/06/21(火) 01:26:22
まじ皆さん情報感謝しています。
>>708 組み込み向けPython Scriptingも奥が深い…。気をつけることが満載ですね。
>自分でPythonの処理系をコンパイルするなら、オプションで上限を設定できます。
自分も該当コードを見つけて喜んでいました。
>組み込み向けでは、調査しなければならないライブラリが増えるというデメリットもありますね。
Python使う理由が、C/C++のライブラリ探すの面倒くさいというのもあったりしてなかなか難しいです…。
通信関係は全てPythonに依存しています…。
draft を Python で実装(ほとんど設計と同義)して そして徐々に C++ → C → asm で*変換*していくストラテジーは 組み込み系*でも*有用だと思いますよ。 ブランチコード全体に於ける Python コード行のパーセンテージの表示で 進捗状況をアナウンスするとおもろいかもね。
712 :
648 :2005/06/22(水) 00:07:16
713 :
デフォルトの名無しさん :2005/06/22(水) 10:15:19
>>710 追加で、
- appendの他にも配列型のオブジェクト全般で(文字列、タプル、リスト, ...)の 連結・反復 + * += *= や スライス。
- リストの場合、可能なら遅延リスト(GeneratorやIterator)で表現するとメモリを節約になる。
通信だと、marshalを通信プロトコルでオブジェクトのシリアライズに使わないとか。
組み込みに限った話ではありませんが、セキュリティ面での注意も幾つかありますね。
メモリに関していえば、数バイトの不正なデータで大量のメモリを占領されたりする等、問題になります。
ところで、ライブラリ込での組み込みとなると、ライブラリがすでに富豪的に書かれてるので、
これらの省メモリ・テクニックってあまり効果がないかも知れないなぁ。予め余裕をもってヒープ確保する方が有効だと思う。
714 :
デフォルトの名無しさん :2005/06/22(水) 10:18:52
>>712 実行はしてないけど、見た感じだけレビュー
Pythonでのmain関数。(rubyでいう if $0 == __FILE__)
http://www.artima.com/weblogs/viewpost.jsp?thread=4829 def main(*argv):
nbsp;nbsp;# do something
nbsp;nbsp;return 0
def __name__ == '__main__':
nbsp;nbsp;sys.exit(main(*sys.argv))
モジュールの末尾に書いておくと、単体で呼ばれた時のみmainを実行される。
モジュールとして他のファイルからimportされた時にはmainは呼ばれない。
to_str -> __str__ str(obj) で __str__ が呼ばれる。
printなどで表示する時の為にも、__repr__ も実装しておくと良い。
rubyのinspect相当,オブジェクトのシリアライズにも使われるが、printデバッグ時にも使える。
set, type, int, str, list, dict, tuple, file, object などはビルトイン型の名前と重なるので、避けた方がいい。
TABとSpaceの混在 -> _match メソッド内
python -t や -tt オプション付きで実行すると確認できます。
import * でインポートする関数/クラスは __all__ で指定できるので、
モジュール内で使うローカルクラスの名前のprefixは、はずすこともできる。
>>714 > 見た感じだけレビュー
どっちかと言うとその方面での突っ込みを期待していたので、感謝です。
> main
pythonではこう書くんですね。今回のものは、テストコードを分離したいのでこのまま行くと思いますが。
> str
obj.str()ではなくて、str(obj)なんですね。んー、rubyに毒されてるせいかもしれないけど、いまいち気に入らない……。
> ビルトイン型の名前と重なる
ライブラリリファレンス等を見てると、これって結構注意しないといけなさそう。(fileとlistはやってました^^;)
> TAB
使わないのが推奨? 気付いてなかったんですが、Emacsのpython-modeは全部スペースに展開してますね。
> __all__
どっちを使うかは好みでしょうか。ローカルスコープのものに"_"を付けるのもそれはそれでわかり易いように思うし。
# こーゆー部分で選択肢をあたえるのはびみょーにpythonらしくないよーな気するのは偏見?(^^;
おまいらラベル高いな
ぼくのラベルも上昇しそうです!(><)
なんで obj.str() obj.len() とかじゃなくて str(obj) len(obj) なの?
そのほうが覚えづらくて難易度が上がって上級者だから
>>718 おかげでしょっちゅう間違えるよorz
あとperlのjoin()相当が、array.join(separator)じゃなくて、separator.join(array)だったのに愕然とした。
PythonはSmalltalkではないし、Perlでもない
Pythonしか使わない俺は勝ち組。
違うのはわかるけど、直観に反してると感じられて何か気持ちよくない。 pythonという言語仕様自体は(もうperlには戻りたくないなと思う程度には)悪くないと思うんだけど、組み込み関数/クラスのデザインについてはちと、いや、かなり納得がいかない部分が……。
もう一個。せっかくlambdaがあるのに実行文を許さないのは納得いかーん!! 無名関数/メソッドにしたいのにいちいち名前付けにゃならんのはウザいぞー。
年食ってだんだんこだわりが無くなってきた希ガス。 動けばいいやー、みたいな。
俺も
>>723 に同意
使い始めの頃 x.dir(), x.len(), x.str() て書いて怒られてたし
今も x.dir() のほうがいいと思ってる.
"".join(array) はキモイから
str.join("", array) にしてる.
あと sort() もリストを直で変える点が気に入らない.
新しいリスト作って欲しい.これは
def sort(L): L2 = L[:] ; L2.sort() ; return L2
1回書いとけば問題なし.
str(obj)はstringのconstructorだから不自然ではあるまい。 len(obj)はlen()の実装がオブジェクト中立だから。 __len__のかわりにlen()を定義すればよい、という意見はあるだろうが、 あらゆるclassに引き継がれる大元の基底クラスで、いたずらに公開属性は定義しないというポリシーの意義は それはそれで理解できるのではないか。 たとえばRubyはObject classにメソッドを定義しすぎで、見通しを悪くしている。 (トップレベルでユーザが定義したメソッドまで放り込まれてしまうのはもはや笑うしかない)
なるほど
729 :
723 :2005/06/23(木) 23:56:04
>>727 ふむ、そういうポリシーなわけですか。組み込み関数群を眺めてると、オブジェクトに対する基本的な操作については頑なにobject.method()になるのを避けてるよーに見えたのですが、それなら理解できなくもないです。
個人的にはruby的アプローチの方が使い勝手が良さそうには感じますけど、このあたりは個人の感性の問題かなぁ。ルートクラスがfatだと美しくないのは確かだし。
もっとも、このあたりの議論なんて、本家ではとっくに決着がついてて今さらな話のよーな気がひしひしと。
>>726 2.4からは組み込み関数 sorted() が実装されたよ。
これは新しいリストを返してくれる。
iterableクラスのメソッドじゃないから、キモイって言われそうだけど。
要するに「今さら変えられねーYO!」でつか(^^; 3.0にするときにでも大胆に見直ししてくんねーかな。やりすぎるとperl6になってしまうけど(ぉ
文字列で、evalを使わずに関数やメソッドを呼び出すのってどうやるんですか? 一応、オンラインのリファレンスマニュアルやライブラリマニュアルを眺めてるんですが、どこからたぐればよいのかさっぱり……。 def func1(): ... func = "func1" # eval(func + "()")相当をevalを使わず実現したい class Class1: def method1(self): ... obj = Class1() method = "method1" # eval("obj." + method + "()")相当をevalを使わず実現したい
オブジェクトでもモジュールでも、getattrで属性を得る。 m1 = getattr(obj, "method1") m1() mymodule = sys.modules['__main__'] (これはもっと簡単に書けるかも) f1 = getattr(mymodule, "func1") f1()
>>734 感謝!! モジュール内の関数だとsys.modules[__name__]になるのかな。……これでいけるよーだ。(もっと簡単な方法もありそーな気も)
ところで、moduleオブジェクトとか関数オブジェクトとか、処理系自身が持つクラスやオブジェクトに関して体系的に解説した本とかオンラインドキュメントってあります?
つかぬことをお伺いしますがPythonにはconstというか定数という概念は無いのですか?
ないない。
738 :
736 :2005/06/24(金) 22:21:57
(´・ω・`) 定数ぐらい欲しいよね…
定数は俺たちの心の中にある。
つpi
定数はいくらでもあるよ!! 1 <- 定数 2 <- これも定数
いまはNoneも定数だよな?
Pythonにないのは定数だけじゃない。属性の可視性の制御もない。 Pythonの世界ではプログラマはみんな仲間であり同士。
Pythonではテメエのナニをどこにでも突っ込める。倫理違反もへったくれもない。 Pythonの世界ではプログラマはみんなケダモノであり穴兄弟。 ナンチャッテ
モンティパイソン精神!
プログラマさまが過ちを犯すわけがない! Zap! Zap! Zap!
748 :
736 :2005/06/25(土) 14:15:20
>>743 お、これ応用すればconst風にできるね。
ありがとう。
それ、どんなときに使うの?
今スト!今スト!
751 :
デフォルトの名無しさん :2005/06/25(土) 20:12:48
>>715 > __all__
標準モジュールでもどちらにするか統率が取れていない様なので、好みの問題でしょうね。
この場合は、test_スクリプト側でモジュールをimportする際に、
名前を指定してimportする。と指摘すべきでした。でも、どちらか片方を選択と言わず、両方併用しても問題なしです。
import * する場合は、名前空間汚染の心配があるので __all__ の定義を推奨します。(個人的に)
>>735 func1がスコープ内(func1()で呼び出せる場所)にあるなら、locals()["func1"]()
>>736 > ところで、moduleオブジェクトとか関数オブジェクトとか、
> 処理系自身が持つクラスやオブジェクトに関して体系的に解説した本とかオンラインドキュメントってあります?
>>> import new
>>> help(new.module)
>>> help(new.function)
処理系の内部的な事だとC/APIドキュメント、ソースコード。
書き掛けですが、
http://rupy.rubyforge.org/wiki/wiki.pl 辺りの内容に興味あります?
>>749 大袈裟な例を挙げると、True, False = False, True みたいな事が原因でプログラムが破綻するケースで、
プログラムの動作を保証する為に用いる。const(この場合は、read-only variable)で未然に防げるbugもあります。
# constの役割は、コンパイル時評価/最適化等、他にもあるけど
> const
実行時チェックは、インタプリタだとパフォーマンスに影響する事もあるので,
ソースコードの静的チェックするのは、どうでしょ?
evalやcompile,execを使わない保守的なコードを書いていれば、ある程度チェック出来るはず、
752 :
デフォルトの名無しさん :2005/06/25(土) 20:34:55
...てことで、試しに書いてみた。> ソースの静的チェックによる検出 全然テストしてないけど、叩き台に どぉぞ。 import re, sys, token, tokenize reConstName = re.compile('^[A-Z][A-Za-z0-9_]+$') isConstName = reConstName.match def check_const(filename, defined=[]): name = None for tok in tokenize.generate_tokens(open(filename).readline): if tok[0] == token.NAME and isConstName(tok[1]): name = tok[1] if tok[0] == token.OP and tok[1] == '=' and name and isConstName(name): if name in defined: print "%s at line %d: constant '%s' already defined." % (filename, tok[2][0], name) else: defined.append(name) name = None return defined if __name__ == '__main__': defined = [] for filename in sys.argv[1:]: check_const(filename, defined)
753 :
736 :2005/06/25(土) 23:12:04
>>751-752 そうか、静的チェックと言う方法もありますね。
工夫でカバーできるもんだなぁ。どうもです。
Python 難しいな
定数として用意した属性を誤って書き替えちゃうケースって想像しにくいが。 書き替える時は意図的なんだから、書換えられないようにするのはまずくないか。 C++のような、コンパイル時にエラーがチェックできる世界が望みなら、 わざわざ動的型言語を使わんでも、と思う。
>>755 うっかりミスを防ぐって意味では有効だよ。
変更されないことを前提としてコーディングしたのに、そのことを忘れて書き換えたりとかね。
a, b, c = str.split(':') で、要素が足りないときには足りないやつにNoneを、多いときには単に残りを無視したいのですが、何か簡潔な書き方はないですか?
簡潔とは言い難いが a,b,c=(str.split(":") + [None] * 3)[:3]
左辺の内容が右辺では知りようがないから、 どうしても要素数を明示する必要があるよね。 そういうgeneratorでラップしたらいくらか格好はましになるけど、 unpackがもうちょい融通の利くものになってくれるといいよなぁ。
> 要素が足りないときには足りないやつにNoneを、
> 多いときには単に残りを無視したい
その要求を逐語訳して if 文で書くのがいいんじゃないか?
>>759 のようなコードを書くと後で読み返したとき意図不明になる希ガス。
>>759 感謝。やっぱり、配列にn個足して前からn個切り出すしかないんですねぇ。
>>761 最初はそう書き直そうと考えたんですが、「Heavyweight Languageじゃあるまいし、こんなんいちいち書いてられっかー!!」と思わず切れたのどした。
なので、759をほぼそのまま採用する私(^^;
これだから重い言語のほうが読みやすいんだよ
せめて関数にするか def fitseq(seq, n): return (seq + [None] * n)[:n] たぶん同ネタがPython Cookbookにあると思うんで、誰か探してくれ。
>>759 strが空文字列だと a="", b=c=None になるけどいいのかな?
766 :
758 :2005/06/27(月) 19:47:46
>>765 空文字列も文字列だし、他の言語でも同じ結果になるはずなので、問題ないです。
……ということは、split()の結果に追加する配列は[None] * (n - 1)の方がいいのかな。
右辺の個数が不定なのに a, b, c = ... と書くのは何か違う希ガス。 abuse というか何というか。
1対1対応にこだわらない、きさくな代入演算子があるといいのだが
769 :
758 :2005/06/27(月) 20:46:57
>>767 たーげっとは、各行が
USER_ID:ENCRYPTED_PASSWORD
もしくは
USER_ID:ENCRYPTED_PASSWORD:COMMENT
となってるファイルなんです。(要はApacheのpasswdファイル。ちなみに後者のフォーマットでもOKなのはApache2のソースで確認済み)
COMMENTが無ければNoneになってほしいわけで……。
>>768 そういう変なワガママを叶えるのがPerlです。
許されてないのがPythonです。たぶん。
たぶん、オレなら
>>758 のような問題はiteratorあたりかなぁ。
yield3回してStopIterationとか。
多少コードの量が犠牲になるけど、
読むときそれなりにわかりやすいからイインデネーノ。
>>769 俺だったら素直に条件分けするところだなあ。
fields = line.split(":")
if len(fields) == 3:
username, password, comment = fields
elif len(fields) == 2:
username, password = fields
comment = None
else:
raise ValueError, "illegal input"
772 :
オレ ◆oReSiGNpIo :2005/06/27(月) 21:48:05
extend使うとすれば、こんなのでもいいかも。 4つ以上のときはシカトされるから気をつけてねw tokens = line.split(':') while len(tokens) < 3: tokens.extend([None])
ごめ、アゲちゃいました。 ついでに、extendでなくて、単純に tokens.append(None)でいいんだった。
774 :
c :2005/06/27(月) 22:40:47
from itertools import chain, islice, repeat tokens = line.split(':') username, password, comment = islice(chain(tokens, repeat(None)), 3)
775 :
758 :2005/06/27(月) 23:06:18
>>774 う゛、読めない、マニュアル、マニュアル……えーっと、
>>759 をイテレータで書き直した、と考えればいーんでしょーか。
こちらの方が速度/メモリ効率は良さそうな感じ。(大した差ではないだろうけど)
でも可読性を考えると
>>771 が正論のよーな気がしないではない(^^;
777 :
758 :2005/06/27(月) 23:21:18
chat状態だな(^^; えーっと、repeat(None)で[None, None, ...]の無限列を生成、 chain(tokens, repeat(None))でtokens + [None, None, ...]、 islice(..., 3)で[:3]、 でもこいつらはイテレータなので実体は作らない、でOK?
う、先こされたけどオレも爆撃しちゃうぞ、と。
repeat(None)
こいつはNoneを延々と返すイテレータ
無限のNoneリストとでも考えてくれ
chain(tokens, repeat(None))
chainはそのまま、つなげるって意味で、
例えばchain([1,2,3], [4,5], repeat(None)) だと
1,2,3,4,5,None,None...(ずっとNone) が返る。
つまり、ここは、tokensの値を順番にかえしてから、
Noneをひたすら返す。
islice(chain(tokens, repeat(None)), 3)
単純に最初の3つを返す。感覚的にはlistobj[:3]。
>>772 みたいに値がかわっちゃうのを嫌うときとかにも使えるしなかなか便利そう。
リストの機能じゃ不満な人はぜひ修得すべしってところだのう。
[re.split('[:\n]', line)[:4] for line in file('.htpasswd')]
for u, p, c in (re.findall('\w+', line)+[None])[:3] for line in file('.htpasswd')):
iteratorとかgeneratorとか、こういうのをさらっと使えると何かかっこいいなあ。
782 :
デフォルトの名無しさん :2005/06/29(水) 18:40:37
あっさり書くのか。
784 :
756 :2005/06/29(水) 23:42:47
>>782 基本的には使う側の人なので、内部そのものよりは、
その応用編に興味があるというか。
例えば、文字列から関数やメソッドのオブジェクトをひっぱってきて
間接的に呼び出す場合だと、シンボルテーブルや関数オブジェクトの知識が
いるわけですが、そういった処理系自身のクラスやオブジェクトがどのように
関連しあっているか、というのがリファレンスマニュアルを見るだけでは
よくわからんのです。
で、そのあたりの解説が欲しいな、と。
他言語との比較については、まぁ、今までperlどっぷりだったので、
perlではこー書くんだけど、pythonではどー書くの?というのが頻発してて、
しかもそーゆー部分に限って上記のような微妙な部分だったりするので、
そういうのがまとまっていればなぁ、と。
perlでは「&{"func"}(@args)」と書くんだけど
pythonでは「locals()["func"](*args)」と書く、
ということはリファレンス見てるだけではたどり着けませんでした。
教えてもらってからあらためて読むと、なるほど、となるんですけど……。
lex/yaccのPython版ってありませんでしたっけ。 前IBMのdwで紹介されていた気がするけど見失ってしまった…。
787 :
デフォルトの名無しさん :2005/07/01(金) 13:00:59
788 :
デフォルトの名無しさん :2005/07/01(金) 13:11:02
> unpack
unpackは本来、タプルの要素を展開をするものだったので、
ドキュメントにも書かれてる通り、両辺の要素数が同じというのが前提です。
要素数が不定のリストに適応する場合は、固定数の要素を返すwrapperを間に置いた方が良いです。
この場合は、parser関数を作り、その中で要素数の数合わせ、書式のチェック、例外処理などをする。
遅延リストを使って要素数合わせるのは、なかなか面白いアイデアだとは思うけど。
より簡単な方法だと、関数のデフォルト引数を使う方法もありますね。
def reader(username, password, comment=""):
...
for line in (x.rstrip() for x in file(FILENAME) if x.strip()):
reader(*line.split(":"))
この方法で、reader自体をclosureとして渡す様な設計にすると、
パスワードの照会やレコードの削除などで、共通の繰返し処理を括りだす事が出来、
うまく設計すれば(SQLみたいに)関数の組合せのみで、それらの処理をする関数が作れる様になります。
>>785 dWにあったかどうかわからないけど、他には ...
PyGgy (
http://www.lava.net/~newsham/pyggy/ )
>>787 > こういった事例の事でしょうか。
ですです。各種ポインタ感謝。ぼちぼち読んでみます。
とりあえずこんなん(↓)やってみたかったので、いろいろ調べてますた。
class CGIDispatcher:
def dispatch(self, post):
cmd = 'default'
if 'cmd' in post:
cmd = post['cmd']
m = getattr(self, 'cmd_' + cmd)
if m:
m(self, post)
raise RuntimeError, "Invalid parameter"
def cmd_default(self, post):
pass
class MyCGI(CGIDispatcher):
def cmd_confirm(self, post):
...
def cmd_register(self, post):
...
# 車輪の再発明?(^^;
>>788 あ、それ面白い。なるほど。デフォルト引数は有効かも。
791 :
789 :2005/07/01(金) 13:55:24
PLEAC面白いすね。そうそう、こーゆーのが欲しかったんですよ。
792 :
デフォルトの名無しさん :2005/07/02(土) 10:57:45
>>789 PerlのCGI::Applicationみたいなframeworkですね。
少しだけPythonっぽくリファクタリングすると...
try:
cmd = 'cmd_' + post.get('cmd', 'default')
getattr(self, cmd)(**post)
except TypeError: # 関数のパラメータの数が合わない場合
raise "Invalid query"
except AttributeError: # getattrで値が見つからない場合
raise "Invalid cmd parameter '%s'" % cmd
辞書をキーワード引数に展開出来るので、
post = {'username': 'foo', 'password': '***', 'cmd': 'confirm'}
だとすると、呼び出されるメソッドの引数は以下のように書けます。
def cmd_confirm(self, username, password, **post):
...
>>793 情報感謝。tracは何か自前で処理してるっぽかったんで、一般的なやつって無いのかなーと思ってました(^^;
ま、今作ってるのって、tracと組み合わせて使うやつなんで、結局自前で処理する必要が……。
>>793 Quixote、公式のドキュメントでわかりますか?
読解力なくて諦め気味…
796 :
デフォルトの名無しさん :2005/07/03(日) 00:40:06
PythonでWinアプリ作ってる方いませんか?? たとえば、ウェブブラウザ、メディアプレーヤー、ファイラー等。 もし可能であれば、サンプル等を見せて頂けると非常にありがたい。 実用的な物を作る為のドキュメントが少なくて…。 ちなみに一番作りたいものはスキンに対応したメディアプレーヤー。
guiは何使うの?
wxWidgetsってスキンに対応してるの?
799 :
796 :2005/07/03(日) 04:22:10
>>797 実現可能ならなんでも良い。最悪GUI部分はDelphiでって考えてます。
>>798 wxframeにwxFRAME_SHAPED ってのがあるけど、複数組み合わせる方法等、高度な使用方法がわからない。
ちなみに専門用語とかあんまりわからないから説明が下手になるけど、
スキン対応=ユーザーがスキン作成可能ではなくて、
アプリ製作の時点で通常のウィンドウ(タイトルバーなど)ではなく、ビットマップを使用して組み立てることを意味しています。
Python以外でもスキンに対応したアプリの作成方法を解説したサイトをご存知の方いますか?
検索方法が下手なのか、みつかりません...orz
>>795 ドキュメントに加えて、demoディレクトリのサンプルとQuixote自身のソースでなんとかなっている。
いくつかTIPSはあるが、まだまとめていない。
wikiみたいに例えば 行頭に*がある場合、<h1>*を除いた行の残りの文字</h1>に変換する 場合どういう風に書いたらいいの?
import re
ヒデェ
>>802 手順を細かくわけて考えてみれ。
1. 行頭に*がある場合に、*を除いた行の残りの文字をとりだす。
2. とりだした文字列の前後に<h1></h1>を追加する
3. 変換後の文字列に置き換える
つうかpyてょnでの正規表現の扱い方がイマイチわからんかった! が、やっとオブジェクトなんだ!ということを理解して 正解にたどり着きました。スマンカッタ。
標準的なパッケージの命名規則ってどうなってるんでしょうか? 標準で入ってるパッケージでも先頭大文字のcamel case(?)と全部小文字というのが入り交じってるよーで、どーゆーポリシーで命名するのが「普通」なのか……。 tracなんか、単一アプリなのに両方あるし。
>807 「そんなこと自分で考えろよ。子供ジャナインだから」 ってポリシー。
809 :
デフォルトの名無しさん :2005/07/05(火) 21:07:06
>>807 package == モジュール名という事なら、Pythonではモジュール名 == ファイル名なので、
通常、lowercaseでアンダースコアなしでなるべく短い名前が推奨されてる。
ライブラリやフレームワークを使う場合は、既存のものに併せて内部で一貫性を保つのが推奨されているので、
例えば、wxPythonでの開発なら、wxWidegtsの命名規則を適用する事等もある。
アプリの名前は自由に付けてもいいと思う。
>>808 よーするに、俺の決まりが絶対、他の世界は知らないってことですか?w
アンダースコアだめなのか。。。
812 :
807 :2005/07/05(火) 22:51:27
>>809 なるほど。〆(.. ) 基本的には1単語になるのかな。
複数単語をくっつけたいときはディレクトリを掘れということなんでしょうか。
でもディレクトリを掘ると__init__.pyを用意しないといけないようなんですが、ディレクトリが他のパッケージと衝突したらどーするんでしょー?
そもそも何か勘違いしてるような気もしないではないですが……。
813 :
デフォルトの名無しさん :2005/07/06(水) 06:23:35
>>811 標準モジュールでも名前の区切りに"_"使ってるのもあるので、駄目って訳ではない。
でも、package名でアンダースコア使ってるのは見た事がないなぁ。一応、推奨されているという根拠はPEP8 style guideより。
privateなモジュールを現す為に、例えば、拡張モジュール等でアンダースコアを名前の先頭に使う場合はある。
>>812 top levelのパッケージ(ディレクトリ)名さえ気を付ければ、大丈夫だとは思うけど?
Perlみたいに Net:: とかの名前空間を共有する事はないので、ユニークな名前を付ける。
パッケージ名よりはむしろ、モジュール(ファイル)名が標準モジュールと名前が衝突した場合に、
困った事になるんだけど。
CPythonではあまりみかけないが、JythonなんかだとJAVAの様に、
org.python.core ってURIをパッケージ名として使ってるところもある。
>813 cx_Oracleは?
ああああ関数の引数が参照だというのが理解できないいいいい!!! なんで参照なのに引数の値を変えられないんだよわけわからん!!
>>815 Because of immutability.
・ Pythonの引数はCのポインタ渡し func(int *p) ・ しかしポインタの指す先に代入する方法 *p = 123 がPythonにはない ということで勘弁してくれないか。
数値は値渡しで、オブジェクトは参照渡しということで理解しますた。 いいよね?
>>819 文字列も変更できないから"値渡し"扱い。
つーか、m = Moe() で f(m) に渡しても、中で m = Hoe() にして戻らないのと同じ。
"参照渡し"という言葉も微妙なんだよね。 一般的な定義は知らんが。 python では単に参照を値渡ししてるだけだと桃割れ
826 :
デフォルトの名無しさん :2005/07/07(木) 06:33:15
>>819 参照と言ってるのがC++の参照渡しだとすると、オブジェクトの内部状態は変える事が出来ても、
その変数が示していたオブジェクト自体を別のオブジェクトに変える事は出来ない。
ポインタによる参照の事を言ってるのだとしたら、数値も他のオブジェクトもPyObject型へのポインタなので。
Cレベルでの解釈では
>>818 が正しいと思う。
呼出先のスコープで呼出元のスコープの変数に影響を与えられるかどうかで判断してる様だけど、
これは引数の渡され方は関係なく、オブジェクトがmutableかimmutableかどうかの問題。
呼出元のスコープの変数を変更する等は、出来ないわけではないけど、
普通は(pythonでは)、オブジェクトのメンバにするとか、関数は値を返して呼出元で代入するようなスタイルで関数を設計する。
もーいーからlambda使っちゃえよ!な!終了!
意味不明
os.popen, os.popen2, os.popen3, os.popen4 こういう名前の付け方しちゃいかんと先輩にいわれました・・・
お前は先輩から死ねといわれたら死ぬのか? # いや,俺もその名前の付け方はどうかと思うけどな...
先輩から揉めと言われたら揉む # 女の先輩いないけどな...
832 :
デフォルトの名無しさん :2005/07/07(木) 17:30:44
>>827 本来ならclosure使いたいところなんだけど、
Pythonでは、syntaxの制限の為 f(lambda x:m = x) って書けない。
lambdaなんて飾りです
つか、基本に戻れYO x,y,z = f(x,y,z)
>>829 そういうわけなので、2.4以降は subprocess.Popen を使おう。
# あと、どうして駄目なのか根拠も聞いておいた方がいいよ。
popen2, popen3は戻値の個数だからいいとして、popen4がわかんね。
>>835 あ、そういうモジュールもあるん?まだそこまで進んでないから気がつかなかった
t = ["トマト", "メロン", "バナナ"] print t ってすると変なんだけど・・・。 print t[0]とかするとちゃんとなるので、壊れたのかと思い 再インストールしたんですが直りませんでした。助けてください
ヒント:文字コード
そーいうもん
何がどう変なのか書かずに、どう助けろと? 「場所はわかりませんが遭難しました。助けて下さい」 と言ってる様なもんだ
再インストールでなんとかしようとする奴は何やってもダメダメ
>>839 >>> t = ["トマト"]
>>> t
['\xe3\x83\x88\xe3\x83\x9e\xe3\x83\x88']
>>> repr("トマト")
"'\\xe3\\x83\\x88\\xe3\\x83\\x9e\\xe3\\x83\\x88'"
>>>
というわけだ。
>>843 再インストールしなくても手も足もでないくせになんで偉そうなのww
遭難した時って、自分の居る場所が分からない事の方が多いんじゃないか
847 :
デフォルトの名無しさん :2005/07/08(金) 13:23:20
文字列クラスの representation (__repr__)がasciiの範囲外のコードをエスケープしてる為、 マルチバイト文字等はそういう風に表示される。 >>> t = ["トマト", "メロン", "バナナ"] >>> print r ["トマト", "メロン", "バナナ"] >>> print repr(t) ['\xa5\xc8\xa5\xde\xa5\xc8', '\xa5\xe1\xa5\xed\xa5\xf3', '\xa5\xd0\xa5\xca\xa5\xca'] >>> class MyString(str): ... def __repr__(self): return self >>> t = ["トマト", "メロン", "バナナ"] >>> map(MyString, t) ["トマト", "メロン", "バナナ"]
仮説:Python 使いになると他のプログラミング言語を使うのが億劫になる。
場所がわかれば遭難じゃないしな。
「何々山に入って遭難した」とかそういうことじゃないの?
ただの言葉遊びだから気にしなさんな
オブジェクトの型を調べる方法はありますか? typeだと組み込みの型はわかるのですが、自分でクラスを定義した ものは全部'instance'というのになってしまいます。
ずばり答えではないけど、isinstance関数では駄目?
>>> class OldStyle: ... pass ... >>> type(OldStyle()) <type 'instance'> >>> class NewStyle(object): ... pass ... >>> type(NewStyle()) <class '__main__.NewStyle'>
typeでクラス名見たいって事なら、objectを継承してクラスを作ればOKだと思う
ってもう答え出てたorz
!! Pythonでは暗黙の共通の祖先て無いのか!! うわー、驚きを通り越して衝撃。
859 :
デフォルトの名無しさん :2005/07/10(日) 13:52:05
共通の祖先ってPyObjectとかではなくて?違うのかな? 共通の処理でクラス名を取り出すとかなら... >>> class OldStyle: pass ... >>> class NewStyle: pass ... >>> OldStyle().__class__.__name__ 'OldStyle' >>> NewStyle().__class__.__name__ 'NewStyle'
object クラスは後から Python に採り入れられたものだからね。 最初は全クラス共通の基底クラスというものは中田。
862 :
デフォルトの名無しさん :2005/07/10(日) 16:51:51
>>860 確かに、PyObjectは実態が無い内部的なものだけど。すべてのオブジェクトに共通する、
マジックメソッドやプロパティに関する規約の部分がないわけではないです。
実際
>>859 の方法ですべてのオブジェクトのクラス名がわかるわけだし。
階層構造のクラス図を想定してるなら、'type'がその基底と言えるかな。
ここでのtypeは、組み込み関数のオブジェクトの型を知る為のtypeではなく、
3つの引数を取る'型'のコンストラクタとしてのtypeです.
# クラシックな古い方のクラスでは、classobjがクラスの型
>>> class Foo: pass
...
>>> type(Foo)
<type 'classobj'>
>>> import new
>>> type(new.classobj) # or type(type(Foo))
<type 'type'>
# 組み込み型の型もtype
>>> type(str), type(object), type(type)
type 'type'>, <type 'type'>, <type 'type'>]
863 :
デフォルトの名無しさん :2005/07/10(日) 16:52:13
学習用言語だからか知らんが、Pythonは色々と勉強になるなw
md5についてなんですが、 hash = md5.new() target = file(name, 'r') hash.update(target.read()) target.close() print hash.hexdigest() こんな感じでバイナリファイルのMD5ハッシュを出力しようと思ったのですが、 Windows上では間違った値になってしまいます(Mac OSX上では正しく動いた)。 どの辺がいけないのか、教えてください。。
> target = file(name, 'r') 'r'だとテキストファイルとみなされて改行コード変換が入るので、'rb'で。
>866 ありがとうございました。 'rb'にしたら正しい値を吐くようになりましたサンクス
QT4のWindows版がGPLになったので、pyQTもいずれWindows版が 公に配布されると思うのですが、このGPL版のQTを利用した場合、 pythonのスクリプトもGPLに従わないといけないのでしょうか。 そうしたくないのですが、プログラムとして一体として動作するのなら GPLにしないといけないのではないかと思っています。
チョー初心者質問です。よろしくお願いします。 簡単にいいますと。 m=10 word="I am" word+=m word+="years old." でwriteでwordの中身をファイルに書きたいのですが3行目で違う型同士は連結できないと言われます。 ということはmをstr型にキャストする必要があると思うのですがどうやってキャストするのかが 分かりません・。キャストの仕方を教えてください。よろしくお願いします。
word += str(m) ただしそういうとき、普通はフォーマット演算子を使う。 >>> "I am %d yeard old" % (m) 'I am 10 yeard old' 引数が一つなら()は省略できる。 "I am %d yeard old" % m
丁寧に説明有難うございます。無事キャストでき、自分の求めた物をえられました。
Perlは不可解だしRubyもPerlっぽいんで Python使ってます
Rubyが人気あるってことは 俺が思ってるほどPerlっぽく無いのかも
RubyはPerlっぽくも使える 意味不明なRubyのコードはPerlっぽい シンタックスシュガーを使いまくっている だけ,という場合が多いな
マム版じゃRubyに迂闊なこと言えねーから使いたくねーんだよな
プログラコ板を作りたくなった
('A`)
879 :
デフォルトの名無しさん :2005/07/19(火) 17:09:09
スクリプトからエラー内容をファイルに出力するにはどうしたらいいのでしょうか? オライリ−のPythonクイックリファレンスには、 「sys.stderrをファイル形式のオブジェクトに再結合すれば・・・」 とありますが具体的にはどうするのでしょうか。 ErrFile = file("Err.txt", "w") sys.stderr = ErrFile これではダメみたいですし。
うちではそれでできてるけどねぇ
881 :
879 :2005/07/19(火) 17:50:39
すいません。普通のpythonスクリプトでは出来ましたが、 実は、Mac OS X で、Pythonw2.4でwxPython2.6を使ってて、 エラー表示ウィンドウらしきものが一瞬現れて消えてしまうので困ってます。 試したところ、単純な「変数名が定義されてない」みたいなエラーは書き出せたのですが、 ウィジェットオブジェクトの実行時エラーみたいなのは出力されないようです。
>>868 スクリプトそのもののライセンスは別になんでもよい。
ただしセットにして配ったり単独実行できる形式にしたりする場合は
GPLに支配されることになる。
>>881 class Application(wxApp):
def OnInit(self):
#適当に
if __name__ == '__main__':
app = Application(redirect=False)
app.MainLoop()
たしかwxAppのコンストラクタにredirect=Falseを渡せばエラーは普通にコンソールに出力されたような気がする
うちの環境はWindowsだしwxPythonはちょっと前に少しさわっただけなので間違ってたらスマソ。
884 :
デフォルトの名無しさん :2005/07/19(火) 19:13:57
手元に環境がないので確認できないけど、 redirect=Trueにすると filenameに直接出力出来たはず。
886 :
879 :2005/07/19(火) 22:51:32
できました。
>>883 , 885さんたちの情報を参考に、
app = Application(redirect=True, filename=ErrorFilePath)
try:
app.MainLoop()
except:
app.RedirectStdio(ErrorFilePath)
として書き出されました。ファイルパスは2カ所とも設定しないとダメみたいです。
887 :
879 :2005/07/19(火) 22:52:15
ありがとうございました。お礼書いてませんでした。
ちゃんとサマリとしてまとめてくれてるし, 別段改めてお礼を言う必要もないんじゃないかな. と思った. あんたいいひとだねー.
ヘビ使いはみんないい人さ
カモン、スネイク!
レッドスネイクカモン
>>891 >レッドスネイクカモン
Ruby + Pyhton ?
ピーヒョロロロピ
糞スレ
895 :
デフォルトの名無しさん :2005/07/22(金) 04:09:15
すまん馬鹿を助けてくれ;; クラス作って内部変数に配列型を使うとCでいうとStatic変数になってしまう・・ どうしたらいいんだorz 調べても分からん;;
896 :
デフォルトの名無しさん :2005/07/22(金) 04:37:44
IDE付属のCHEMファイルでやっとわかった・・ここに書くのかよorz 漏れみたいな馬鹿には向いてないな。 パールのほうがいいやw
クラス内に書いた名前はクラスに属すので、単純にオブジェクトをつくるとクラスオブジェクトになる。 インスタンスに対してメソッドを呼ぶと、メソッドの第一引数にインスタンス自身が渡されるので(仕様)、 そいつに対してオブジェクトを結びつけるとインスタンスオブジェクトとして利用することができる。 Pythonのシンプルなオブジェクトと名前空間の構造にきづけば、理解は進むと思う。 というか、Perl(<=5)のクラス構造の方が絶対アクロバティックで難解。
クラスメソッドってどこに書けばいいの?
書き方悪かったかな クラスメソッドとインスタントメソッドってどう区別して書けばいいの?
組み込み関数のclassmethod()もしくはstaticmethod()を利用する。 どっちかだけのサポートにしとけば言語仕様で吸収できて こんなけったいな事にはならなかったのに。
命名規則で分ける
名前解決用の辞書そのものってどこにあるの? ハッシュでコリジョンエラー返してくれるの?
dir()とかXXXX.__dict__
904 :
デフォルトの名無しさん :2005/07/24(日) 02:50:50
そうそうdir()でクラスのメソッドとか取れるじゃん? あれってpythonの思想だとモジュールとかクラスとかも 名前空間の階層って思想なのかな? 普通のファイルシステムと同じように扱おうってかんじだよな。 クラスのメソッドのリストをdir()で取ってくるってなんか妙なかんじするよね。
名前空間、名前、オブジェクト Pythonはこの3つの組み合わせで構成されている・・・らしい
よくわかんないな 今使われてる普通の言語は そのみっつの仕組み持ってるでしょ?
そんなことより18歳以上の男子は↓コレやっとけ。 1回目で正解したら驚異の集中力だといえよう。 www.concentrationtest.com/ver2.html 18歳未満の男の子と婦女子はやらなくてよろしい。
5回目でした。39おやじ。
ネットワークから切り離されたWindowsXPマシンで、Pythonを インストールせずCD-Rから起動して使いたい漏れがやって きましたよ。誰か簡単な方法を知っていたら教えて下さい。 ちなみにインストール済みのマシンから、インストール されてるフォルダごとごっそりCD-Rにコピーし、そこで python.exeを実行してみたところ「Python24.dllがネーヨバーカ」 と言われてしまいました。
py2exe イミワカンネ
911 :
909 :2005/07/25(月) 23:46:53
日本語不自由でスマン脳。 Pythonのインタプリタ自体を起動して使いたいのですじゃ。
とりあえず,Python24.dllをpython.exeと おんなじとこにコピってみれよ system32以下あたりにあるでそ
>>909 C:\WINDOWS\system32からpython24.dllを持ってきてpython.exeと同じとこに置く
914 :
909 :2005/07/26(火) 00:05:24
サンキュー。 とりあえずやってみます。でも今度はまた別のDLLを 要求されたりして。 (インストール済みのマシンだと、system32の方を 探しに逝っちゃうから試せないしね…。USBメモリは 使っちゃいけない環境なので、何度もCD-Rに焼くのが メンドクテ質問してしまいました)
ああ必要なのがあったら大抵プリフィックスにpyが付いてるから どっちにしろ足りなきゃ警告食らうよきっと
cmd.exeでset path=でパスをクリアしてからpython.exeを実行すれば試せるんじゃない。
>914 DLL依存追っかけるなら「Dependency Viewer」ってツールがベクタに落ちてる Visual Studio持ってるならDependency Walkerがあるからいらんだろけど
918 :
sage :2005/07/26(火) 19:54:45
python -m modulefinder yourmodule.py
すまん。 lambda式の中でif文使うにはどうしたらいんだ?
無理。式の中に文は入れられない。
サンキュ pythonのlambdaってしょぼいことにしか使えないのね。orz
and/orじゃなくてif使うってことは複文でしょ。 普通に関数定義すりゃいいじゃん。なぜわざわざlambdaを使おうとする?
つ「クロージャ」
普通にlambda使えばいいのにわざわざ関数定義なんかさせるのがPythonクオリティ。
925 :
デフォルトの名無しさん :2005/07/30(土) 00:44:02
$ python2.4 -c "import site; print site.sitedir" Traceback (most recent call last): File "<string>", line 1, in ? AttributeError: 'module' object has no attribute 'sitedir' 2.4になって変わったの? 情報がみつからない
間違えた $ python2.4 -c "import site; print site.sitedirs[0]" Traceback (most recent call last): File "<string>", line 1, in ? AttributeError: 'module' object has no attribute 'sitedirs'
help(site) dir(site)
928 :
デフォルトの名無しさん :2005/07/30(土) 01:17:25
>922 そこにlambdaがあるからさ。 つうかLispのlambdaから取ってきたんだろうと思ったのと、 filterやmap関数と合わせて使ってSmalltalkっぽく書けるなと思ったのと、 変数とか関数名で渡すと処理なんだかデータなんだかわかりづらいっつうのと and/orで書くのはわかりづらいのと、if文使っても短い処理なのに、関数定義に良さそうな場所がソースの遠くにしかなかった と思ったんでlambda使おうとした。 まぁpython初心者で流儀がわからんのでゆるしてくれや。
PythonCard(On WindowsXP)を最近始めたのですが、 on_Button_mouseClickで処理をするときに時間がかかると 「反応無し」になってしまいます。 これを防ぐ方法はありますか? 「反応無し」になっても処理自体は行なわれていて、 処理が終れば正常になるので問題無いといえば問題無いのですが。
>>929 Pythonに関係なく、時間のかかる処理はイベントハンドラでは行わずに
別スレッドを起こすか通知するだけに留める。
>>929 簡単な方法だと、適当なタイミングで(頻繁に,例えばループの内側などで)
wx.Yield()を呼び出す事でも反応なし状態は回避できる。
>>930-931 ありがとうございました。
スレッドは使ったことがなく良くわからなかったので、
今回はwx.Yield()を呼ぶことで解決しました。
サンクス
それを解決と呼ぶには抵抗を感じる
936 :
デフォルトの名無しさん :2005/08/01(月) 22:16:11
自分と同じ方のインスタンスを生成したいときはどうすればいい? class Hoge: def __init__(self, value): self.value = value def plusone(self): return Hoge(self.value + 1) これだと継承したとき、子クラスのインスタンス生成してくれないですよね?
937 :
936 :2005/08/01(月) 22:20:04
あ、ひょっとして、 self(self.value + 1) でいいの?
class Hoge(object): def __init__(self, value): self.value = value def plusone(self): return type(self)(self.value + 1) わかんないけどこうとか?
self.__class__ じゃないかなぁ, あと新しいオブジェクトを作って返すのなら,reversed や sorted みたいに 関数名を increment'ed' にするといいと思うよ.
Singletonにしたいのか、Prototypeなのか判らないけど。 複製作るだけなら return copy.deepcopy(self) でいいんじゃない?
941 :
デフォルトの名無しさん :2005/08/04(木) 19:31:36
ぬっへっほー
メモ帳を起動するプログラムを作りたいのですがどうすれば良いでしょうか?
email.Header を使ってメールの From ヘッダを作ろうと、
Header(formataddr(("はげ", "
[email protected] "), 'utf-8'))
とかやると
[email protected] までデコードされちゃうんだけど(´・ω・`)
別々にエンコード指定しながら append するしかないのかね。
なんかうまいやり方あるっすか?
945 :
944 :2005/08/11(木) 22:16:56
946 :
デフォルトの名無しさん :2005/08/12(金) 15:51:57
ageていい?
email.Utils.formataddr((email.Header.Header(u"はげ", "utf-8").encode(), "
[email protected] "))
>>947 サンクス。そうすりゃいいのか。俺(´・ω・)サエナサス
phpのbin2hexに該当する関数ってないのでしょうか?
日本語をencode()するとエラーになってしまいます。
http://jp.php.net/bin2hex 日本語の文章を形態素解析で分かち書きしたものをMySQLにいれて
のFULLTEXTインデックスを用いて検索させたいのですが...
>>950 おお、ばっちり行けました。
ありがとうございます。
954 :
952 :2005/08/19(金) 17:55:40
.chmって、どのアプリのフォーマット?
WindowsのHTMLヘルプじゃないの? ダウンロードしてないのでわからんけど
$ aptitude search chm p archmbox - a simple email archiver written in perl p chmlib - library for dealing with Microsoft CHM fo p chmlib-bin - library for dealing with Microsoft CHM fo p chmlib-dev - library for dealing with Microsoft CHM fo p fetchmail - SSL enabled POP3, APOP, IMAP mail gathere v fetchmail-common - p fetchmail-ssl - SSL enabled POP3, APOP, IMAP mail gathere p fetchmailconf - fetchmail configurator p gnochm - CHM file viewer for GNOME p python-chm - Python binding for CHMLIB v python-pychm - p retchmail - REALLY Fast POP3 Retriever p usermin-fetchmail - A fetchmail module for the usermin web-ba p webmin-fetchmail - fetchmail mail retrieval module for webmi p whichman - Fault tolerant search utilities: whichman p xchm - Compiled HTML Help (CHM) file viewer for p zope-zattachmentattribute - simple attachment handler for zope produc
958 :
955 :2005/08/20(土) 04:16:27
Mac使いなので、見られないのがちょっと残念。
>>955 xchm.sourceforge.net は osx でも使えるよ.
960 :
955 :2005/08/21(日) 01:17:40
>>959 ありがとうございます。さっそくxchm試してみます。
961 :
デフォルトの名無しさん :2005/08/22(月) 00:29:37
16進数で表された数が文字列としてある時、これを数値にするにはどうすればいいですか?
>>> s = "CAFEBABE" >>> int(s, 16) 3405691582L
pythonって何がそんなにいいの?
Ruby厨は巣にお帰りください。
965 :
デフォルトの名無しさん :2005/08/22(月) 11:37:03
>>966 > Zopeは求めてるものとちょっと違うんだよなぁ。基本的にCMSであって、Webアプリを作るには
> 向いてないというか、関係ない機能が多すぎる
ZODBの世界で素直にOOプログラムできるのがいいのに。
ZMS/Undo/CMF/マルチプロトコル接続なんかの点でCMSとしても有用なだけ。
>>967 ZODBにデータをストアしてはいけない
データは外部のDBかファイルシステムへ。
>>952 Here, you can download most Python e-Books, but only for evaluation purposes and you MUST delete them after 24 hours.
だってさ
>>969 で、それはうん時間で溶けるDVDみたいな仕様になってる訳?
>>967 そこでStand alone ZODB ですよ。
スレの皆さん始めまして。 私はまだPyJUGにあったチュートリアルをざっとやってみたレベルです。 質問なのすがPythonで定数を作るにはどうすればいいのですか? C++でやると const int hage = 1; みたいな。 あと列挙型とか有るんですか? 低レベルな質問でごめんなさい。 PythonのバージョンはPython 2.3.5です。
>>972 > 質問なのすがPythonで定数を作るにはどうすればいいのですか?
クラス設計
> あと列挙型とか有るんですか?
タプル
どちらも無いし、必要ないし。
975 :
972 :2005/08/22(月) 23:16:28
>>973 ,
>>974 ありがとうございました。
今更ですがずっと前の方に無いって書いてありましたね。
ごめんなさい。
>>973 ありがとうございます。言語に実装が無かったらクラスとタプルでどうにかしようは考えていました。
>>974 ごめんなさい、定数を作ろうとしてやり方が分からなくて気になって気になって
仕方がありませんでした。
当然の疑問を口にしただけなのに、 いちいち必要ない、なんてレスはいらない
974じゃないけど、 「必要ない」っていうのはそれなりに有益な情報だし書いたっていいだろ。 もしかして「『そういう疑問を持つこと』が必要ない」と解釈したのか?
この言語あまり聞かないけど、普及しているのでしょうか? 外国ではそれなりとかいう記述は見かけますが。
あまり表舞台には出てこないが、国内でも結構使われている様子。 外国ではバリバリに使われていて、露出も多い。
>>979 サンクス。
じゃあ、日本でも普及する可能性大ですね。
ティンコパッド買ったらリカバリープログラムにpythonが使われてた 昔のティンコパッドは最高だったが、最近買ったのはリカバリーCD付いてないし、 40GBしかないHDDのうち4GBを隠しリカバリーパーティションにしてるし、 そこからリカバリーしてもMBRをリカバリーしてくれないという…。 ぐちスマソ
Books python の検索結果のうち amazon.com からの約 26,200 件中 1 - 10 件目 (0.06 秒) Books ruby の検索結果のうち amazon.com からの約 123,000 件中 1 - 10 件目 (0.21 秒) 本 python の検索結果のうち amazon.co.jp からの日本語のページ 4,070 件中 1 - 10 件目 (0.20 秒) 本 ruby の検索結果のうち amazon.co.jp からの日本語のページ 11,400 件中 1 - 10 件目 (0.18 秒)
検索厨ウザス
Fedoraでソースからコンパイルする際に、tk(というかidle)を一緒にコンパイルするには どうすればいいの?
PyQt for Qt4.0のWindows版はまだか!
cursesってwindowsだと動かないの? 動きそうな痕跡だけあるもんなの?使おうとすると except ImportError: import curses File "C:\python2.4\lib\curses\__init__.py", line 15, in ? from _curses import * ImportError: No module named _curses ってでるけど、こいつ何者?curses本人じゃないの?
_curses が libcurses をラップする拡張モジュールで,curses.py はそれをキックしてるだけ.
死滅スレに移住ですか.
>991-992 ありがとう!大助かり! ここらへんあんま使われてなさそうだ情報少なめ でもウィン用のcursesやったらと数あるね curses叩くってpyコードだけで済んでんの? 叩かれてる本体はきっとどろどろのCでしょ、モンティパイソンすんごいね
>>994 >>991 のいう「拡張モジュール」はCで書かれたモジュールのこと。
curses (Python) → _curses (C) → libcurses という呼び出し関係にある。
Tkinterやsocketも同じようなモジュール構成になっている。
Mac使いってMacしか使わないの?
ここで皮肉るより直接反論スレヴァ?
998 :
デフォルトの名無しさん :2005/08/26(金) 00:44:35
Mac使いだけどWinもLinuxも使うよ。
埋
1000 :
デフォルトの名無しさん :2005/08/26(金) 00:46:44
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。