>>1 print unichr(reduce(lambda x,y: x|y, [1<<n for n in [0,3,4,6,9,10,11,14]]))
なんて回りくどい・・・
ワロタ、どうやって作ってるんだ?w
>>6 ユニコードで(最下位桁を0桁目として)0, 3, 4, 6, 9, 10, 11, 14桁目のビットが立ってる文字
つまり0b0100111001011001 = 0x4E59が「乙」の文字。
Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
10 :
デフォルトの名無しさん :2007/08/18(土) 17:47:35
モジュールmmmの中の関数fff を再定義したい場合はどう書けばいいですか? mmm.fff()で使うので、from mmm import fffでは 書き直しが面倒なんです。
def fff(): print "fff¥n" mmm.fff = fff でどうでしょう
setattr(mmm, 'fff', hoge) モジュールもクラスもインスタンスもこんな感じで上書きして動作変更できるけどuglyなのでやんない方がいいだろうね
13 :
10 :2007/08/18(土) 18:36:36
>>11 ああ、そうか。目から鱗です。
>>12 も調べて見ます。
ありがとうごさいました。
14 :
デフォルトの名無しさん :2007/08/18(土) 20:26:22
>>12 uglyって専門用語っぽくてかっこいいな
15 :
デフォルトの名無しさん :2007/08/19(日) 10:58:27
通信系でマルチスレッドやってるんだけど、親スレッドが終了したとき、自動的に子スレッドも殺せませんか? Tkinter使ってウィンドウ出していて、Tkinterのmainloopでウィンドウ処理をさせている。 同時に別スレッドでソケット通信を行っており、handle_requestを行ってメッセージ受け取り待ちになっている。 ウィンドウが閉じられたときに別スレッドの通信待ちも同時に殺して、プログラムを終了させたい。 sys.exit()を試したが、これは自分自身のスレッドを殺すだけで、他のスレッドを殺すことは出来なかった。
16 :
15 :2007/08/19(日) 11:02:21
handle_requestにタイムアウトとかを設定できたら、 タイムアウトの間隔で別スレッドが生存しているかフラグチェックあ出来るんですが。
thread.start_new_threadを使うとか、threading.Thread#setDaemon(True)で デーモンスレッドにすれば子スレッドを終了させることはできる。しかし、 タイミングによって終了時に例外が出たりするので、タイムアウトでフラグ チェックなどの方法が取れるならその方がいいとは思う。
18 :
15 :2007/08/19(日) 13:06:11
サンクス setDaemon(True)で解決しました。 通信途中で強制的にスレッドが落とされたらどうなるかはこれから実験してみます。
python使うとちんぽの皮がむけると聞いて始めてみたのだけど、 python3000はいつごろ出るんだい?
当然西暦3000年です
こんな一通の手紙が仏壇の奥に隠されてありました… 「現在2007年。僕は君の何世代も前のおじいちゃんなんだけど、ちょっと頼みごとがあるよ。 今すぐネットで「python3000」ってググってみて。それらしきサイトを発見したら、pythonのマニュアル探して、 2007年8月19日の僕にメールで教えてくれないかな?そしたら、僕のPCに保存してある×××動画とか、 モザイク無しの○○○エロアニメを送るからさ!!じゃヨロシク!!」 お爺ちゃんまじウゼェ。993年も前にどうやってメウエルで超光化学分子デプレサー送信しなきゃなんないんだよ。
993年後もGoogleは存在するのか。
23 :
デフォルトの名無しさん :2007/08/19(日) 19:42:32
だれかPythonでシューティングとかオセロとかゲームプログラミングしてたら よければソース見せてください
Beautiful is better than ugly. キモオタやデブはPythonを使うな、ということか。。。orz。。。
まさに真理だなw
スレが自演臭いクソオタに占拠されている件。
親クラスの任意のメソッドをデコレートするbeautifulな書き方ってない? たとえば、cmd_
31 :
30 :2007/08/21(火) 02:06:58
わりぃ、書きかけ入れちゃった。 親クラスの任意のメソッドをデコレートするbeautifulな書き方ってない? たとえば、"cmd_"で始まるメソッドを全てとか。 今試しているのは、getattrとsetattrだけど。 class B(A):
メタクラ(ry >>> def deco(f): ... def wrap(*v,**d): ... print 'decorated' ... return f(*v,**d) ... return wrap ... >>> class A(object): ... def cmd_a(self): ... print 666 ... def cmd_b(self): ... print 777 ... >>> def mytype(a,b,c): ... for cls in b: ... for attr in cls.__dict__: ... if attr.startswith('cmd_'): ... c[attr] = deco(cls.__dict__[attr]) ... return type(a,b,c) ... >>> class B(A): ... __metaclass__ = mytype ... >>> B().cmd_a <bound method B.wrap of <__main__.B object at 0x00CF9810>> >>> B().cmd_a() decorated 666 >>> B().cmd_b() decorated 777
スレが自演臭いクソオタに占拠されている件。
34 :
32 :2007/08/21(火) 06:11:38
ちょっと補足
__metaclass__に設定したものがcallableだと、
class文が終了した時点で、__metaclass__が3引数で呼ばれる。
最初の引数aがクラス名で、2番目bが親クラスのリスト、3番目cが関数の名前がキーで関数そのものが値になってる辞書。
で、普段はそれがtype(a,b,c)で呼ばれて、子クラスの名前に代入される。
で、そこでtypeをラップするような関数(上のmytype)をかいて、a,b,cを弄ると、普通の継承の過程を弄ることが出来る。
上の例でやってるのは、b(親クラスのリスト)のなか要素の属性attrについてイテレーションして、
attrが"cmd_"で始まってたらそれを用意しておいたデコレータでデコレートしたものをcに挿入するという操作。
(こうすることで、deco(A.__dict__[attr])という関数がBのクラス文の中で定義されたのと同等になる)
で、そのように変換したcを使ってtype(a,b,c)を呼ぶので、Aの"cmd_"で始まるメソッドがdecoでデコレートされたような
クラスが生成される。
>>33 自演ではない。
クソオタは否定できないかも知れない・・・
占拠はしていない。
急いでないなら、クラスのデコレータを待てば?
django で postgresql 使うように設定して syncdb したら psycopg モジュールがないって怒られた。 apt で psycopg インストールしてみたんだけど 2.4 用みたいで、同じエラーがでた。 環境は debian etch で python 2.5 でやろうとしてるんだけど 2.4 使うしかないんだろうか?
Pythonで、アプリケーションを起動できる 簡易ランチャを作ろうとしているんですが sys.popen等で起動すると、スクリプト自身が 終了待ちしてしまいます。 スレッドで走らせるのも、何か違うと思いますし 何か良い手立てはないですか?
>>37 subprocess.Popenかos.spawn*
39 :
37 :2007/08/21(火) 16:12:09
41 :
デフォルトの名無しさん :2007/08/22(水) 18:05:40
>>41 そんな1ヶ月以上前のネタを繰り返さなくても
mysql向けに、文章のエスケープ処理をしてくれるようなモジュールってありませんか?
こういう書き方って合法的? >>> def a(): ... yield 1 ... return ... yield 2 ... >>> for x in a():print x ... 1 >>>
法ってパーサのことかい? ならSyntax Error起こさないならOK それとも標準記法のことかい? なら到達不能コードがあるからNG
別に問題ないだろうけどidleさんはタブ補完してくれなかったから従うべきだ
47 :
デフォルトの名無しさん :2007/08/23(木) 10:03:01
Cで作られたプログラムからpython関数を使い その関数がが実行元のプログラムの関数を使うことはできますか? Cからpython、pythonからCで作られた関数の呼び出しは載ってるのですが 往復してきたのはどうするのか載って無いんです
>>47 Cで作った実行バイナリ単体の関数は他から利用することはできません。
その関数を切り出してライブラリ化すればPythonと実行元のプログラム
両方から使うようにすることができます。
こういう意味?
>>48 そんな感じです。ライブラリ化だとマルチプラットフォーに影響あるからpythonを呼ぶしかないんですね・・・
gameのスクリプトを作れるかなーと思ったのですが
>>51 あーこれはできそうですね・・・ありがとうございます
jpeg、pngファイルのコメントの読み書きができるライブラリってありますか? PILのマニュアルにはそのような記述がなかったので、皆様のお智慧を拝借したいです
>>53 PNG はわからないけど、JPEG ならこれで
from PIL import Image
img = Image.open(JPEG_FILE)
print img.app['COM']
コメントは参照できる。ただ書き込みはできない(と思う)。
可能ならばプラグインを書いてみては?
Pythonで特定の文字列をHTML実体参照等に置き換えるのに手頃な方法は ありますか。 以下のような仕様のものが(あれば)欲しいです。 ・元となる文字列はunicodeとする ・&や< > や引用符のようなヤバげなものは当然置き換える ・目的エンコーディングでカバーできない文字はなるべく実体参照で 置換える。実体参照が未定義の場合は数値文字参照で置き換える
>>55 実体参照のテーブルは用意されてるので、後は自前で実装するのがよさげ。
import htmlentitydefs
def replace(s):
def f(n):
h = htmlentitydefs.codepoint2name
if n in h:
return "&%s;" % h[n]
elif n < 256:
return unichr(n)
else:
return "&%d;" % n
return "".join(f(ord(c)) for c in s)
>>56 トンクス
考えてみるとフェールバックじみた処理になるのでえらい面倒かなと
思えてきました
UTF-8にするんなら無用な仕事ですし、ASCIIならまだ簡単ですが……
ちょっとどうするか考えて見ます
「iPod!」逆さにしても「iPod!」
>>58 すごい!!
じゃあ逆さにして地面に叩きつけたらどうなるんだろう!!!
知りたい!!!知りたい!!!
ほんとだー
oの位置が違う
位相同型だよ
iP0d!
65 :
53 :2007/08/26(日) 12:11:01
>>54 お返事ありがとうございました。意外に無いものなのか。。。。
欲しい有用な機能に関して目ぼしい実装が無いなあってのは チャンスだぜえ
∧_∧ ( ・∀・) ワクワク oノ∧つ⊂) ( ( ・∀・) ドキドキ ∪( ∪ ∪ と__)__)
Cのプログラムは***.oファイルで提供されているときにpythonからCの関数を呼び出したいんですが何かよい方法ないでしょうか?
ヘッダファイルがあるかどうかで困難さが違ってくるな
70 :
デフォルトの名無しさん :2007/08/26(日) 21:53:21
ヘッダファイル作りました。自分のプログラムなので swigっていうの使えばいいんでしょうか?
自分のプログラムなら何でoしかねぇんだよ 手書きでもswigでもboost.pythonでも好きに汁
Windows上でPythonのプログラムを長時間動かしてると、いつのまにか 実行プライオリティが勝手に下げられてて困っています。 どうしたら良いのでしょうか? Pythonの話題じゃ無い気もしますが…
どんな感じでプライオリティーが下がるの???
>どんな感じでプライオリティーが下がるの??? pygameのタイマを使って一定時間間隔(1秒)である処理を実行させてます。 しばらく(数時間くらいだった気が)ほおって置くと、時間間隔が バラバラと変動するようになってしまいます。 異常に気付いてウィンドウを前面に出すと、また正常に戻るんですが…
プロセスのプライオリティーとは関係ないわけね?
>>75 プライオリティは見ていませんでした(爆
74の現象から、プライオリティが下がったに違いないと
推測していました(ええ加減ですいません。再現確認をする
機会が中々つくれないもので)。
Windowsのプロセス管理の基礎知識等を勉強してから
出直してきます…
(爆
テレホ時代
all, any より and_all, or_all とかの方が分かり易いんだけんども
これはまあ、駄目な人は駄目だろうなあw IronPython本の表紙の鉄の蛇っぽいのも駄目な人多いかね? 後は蛇関係ないけど初めてのPythonの表紙のねずみとか
クックブックはウサギだった。 どうも蛇に食われる動物を載せるらしい。
それを考えるとJavaのコーヒーは旨そうだ。 RubyとPerlは何か宝石っぽい。Shellは海っぽい。 Firefoxは可愛らしくて、Thunderbirdは何か人形っぽい。 うん。重要だ。Pythonも可愛いイメージキャラ作ればいいのに。 いや、可愛いとまでいかなくてもdaemon君とかopenbsdのトゲ野郎くらいの愛嬌を・・・
たぷるたん?
もう羽生名人でいいじゃん 玄人志向っぽく
羽生選手のアップでもいいよ。
バカ歩きを希望。
たぷるタンか。何もかも懐かしい・・・・・。
スペイン宗教裁判でひとつ
94 :
デフォルトの名無しさん :2007/08/30(木) 12:25:00
SPAM缶とかどうよ
96 :
デフォルトの名無しさん :2007/08/30(木) 14:00:09
97 :
デフォルトの名無しさん :2007/08/30(木) 17:01:02
PIL初めて触ったんだけど, いろいろ便利なのはわかった. だけど順々にピクセルを見て,その平均値をとったり, そういうことをやりたいんだけど, ピクセルごとの色情報(?)を受け取る関数はどれですか?
PILといえばアンジー&ルビー
99 :
97 :2007/08/30(木) 17:09:34
dirしてみたらgetpixelっていうのがあって, 試してみたらできました
>>97,99 ニヤニヤwwwwww
>>86 どれどれ、まぁ、蛇くらい大丈夫だろう、と思って見たが、
これはキモイwww
トグロ巻きすぎw
やっぱ不評もあるんだなあIronPython本
一見してかっけえええええええと思っちゃった俺はマイノリティだったのかも知れん
そして
>>81 のサイト画像小さくなってるね
別に気持ち悪くなかったけど
また伸びたのか・・・。
胸が大きいのか…
実践ぱいそんの萌え絵をスルーするなよおまいらwww
>>106 あーやっぱpythonから連想するのはキッチリしてそうなメガネ女子かー。
鞭が似合いそうなむっちりタイツなおねぇさんだな
つまり蛇女萌え、と。
>>114 おまえは相変わらずうだつが上がらないな(´;ω;`)
Gentoo使ってるからPythonのお勉強でもしよっかなと思って来てみたら 何、この糞スレ?
まともな話題を振ればまともなレスが返って来るかもよ
インスタント・ハッキングの練習2なんだが while b:はどういう意味? なんでwhile b==0:じゃないの?
>>118 b が真と評価される間は、そのブロックを実行する。
b が 0 になると偽と評価される。
>119 while b==0:じゃ何も起こらないのか。バカだな俺。 リファレンスマニュアル7.2と5.10に書いてありました。 読み方から勉強します。ありがとう。
キタコレ
wktk
formatに{0}、{1}とか使えるらしいのが個人的にはちょっと嬉しいな C#みたいだけど
>>120 落ち着け。
b==0がTrueならwhileは無限ループになる。
b==0がFalseなら何も起きない。
リファレンスよりチュートリアルを先に読め。
あのチュートリアルは初心者にはイミフだと思うぞ 他の言語の経験があるならともかく
127 :
118 :2007/09/01(土) 14:19:22
def euclid(a,b): if a<b: a,b=b,a while not b==0: a,b = b,a % b return a print euclid(39,260) 当たり前なんですがnotをつけるとうまくいきました。でもb:のほうが分かりやすいですね。 チュートリアルはインスタント・ハッキング終わってから読むことにします。
!= のこともたまには思い出してね
厳密には違うのかなー?
入門書嫁。
ドモルガンの定理って重要だよな…とか言ってみる。
NANDだけあれば事足りるよね
そういえば、NANDだけで論理回路を作る実習があったなー、懐かしい。
今日python始めました&2ch初書き込み。 質問なんですが、 環境はpython2.5/Windows Vista/eclipse3.3 pydev1.3.8です。 以下のコードを実行するとeclipseではエラーになって、 コマンドプロンプトで実行するとエラーなしにチャント表示されるのですが、 何がおかしいでしょうか?? print u"あいうえお" UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128) #--*- encoding: shift-jis -*-- print "あいうえお" print u"あいうえお"
>>135 Python に慣れるまで Eclipse は使わないほうがいいよ。
本質と関係ない余計なところでハマる。
で、print, str(), write() などに Unicode 文字列を指定すると
暗黙的に 8 ビット文字列への変換が行われるんだけど、
Eclipse コンソールへは 'ascii' コーデックを使って Unicode 文字列を
変換しようとするので、そういうエラーが発生する。
(標準出力へは 'cp932' コーデックが使われるので「あいうえお」なら問題なし)
どうしても Eclipse を使いたければ、Lib/site-packages/sitecustomize.py に
import sys
sys.setdefaultencoding('cp932')
とか書けば動くんじゃないかと。
137 :
デフォルトの名無しさん :2007/09/02(日) 20:34:44
>>83 すごい!初めて気づいた
はじパイはねずみだったな
Win32本はなぜかワニだぞ。
それは早合点しすぎだと思う。 パイソンは人間も食べるから、少なくとも 人間より小さい生き物なら何でも食べるから、 人間より小さい生き物がが表紙になってもおかしくないのに 小型動物のねずみとウサギだけが餌になってるっていうのは 人間が主に蛇にやる餌がねずみとかウサギだからだとおもう。
youtubeにワニ食ってる動画あったよ
>>136 レスありがとうございます。暗黙変換の考え方がわかりました。
sys.setdefaultencoding('cp932')をすると動くようになりました。
pyscripterとか色々IDEを試した結果、最後にeclipseに落ち着きました。
ただ、コマンドプロンプトで、
print sys.stdout.encoding, sys.getdefaultencoding()
を実行すると、
(cp932, ascii)
になって、eclipseで実行すると、
(None, None)
になるんですよね。これから考えると、stdoutのエンコーディングが違うのが
根本的な原因のような気もします(ディフォルトを上書きしてる?)。
この差はどこから生まれるんでしょうか。
>>142 あと、pydevのフォルダにある、pydevd.pyで、
class EclipseStdout:
def __init__(self, args):
self._redirectTo = args
def write(self, s):
if type(s) is StringType:
self._redirectTo.write(s)
else:
self._redirectTo.write(s.encode('shift_jis'))
というのを書いて、下の方にあるexecfileの前で、stdoutを上書きすると
eclipseデバッグ時には上手く表示されるようになりました。
stdout=EclipseStdout()
execfile(file, globals, locals) #execute the script
eclipseの実行ボタンを押した時は、依然(ディフォルトエンコード設定しないと)きちんと
表示されません。javaから直接実行している感じがしてます。
Pythonインタプリタの初期化時(Winの場合はsysモジュールの初期化時)に、 標準入出力が端末である場合(isatty()が真である場合)に限って sys.stdin.encodingやらsys.stdout.encodingやらを設定している。 そうでなければ無設定(None)のままだ。 つまり、リダイレクトされていたりパイプに接続されていたりすればアウトだ。 eclipseから実行した場合も、端末であるとは見なされないのだろうよ。
>>144 なるほどぉ。そういう作りなんですね。
ということは、eclipseのコンソールがキャラクタデバイスと
見なされていないからなんですね。
きれいに解決するには、eclipseコンソールがisatty()に真を
返すような実装になれば良いと。
>>146 Eclipseのことはよくしらんが
Unixの場合はptyなどを用いて実現可能かもしらんが、
Winの場合は難しいだろう
そういう機構が無いしな
それに、Consoleのコードページを取得するのに、GetConsoleACP()のように
モロにWin32 ConsoleベッタリなAPIを用いているから
まあ無理だろう
俺には理解出来ないスレだ。みんなホントに凄いね。 ここの住人のレベルまで達するには、やっぱり専門書買って勉強するんですかね。 それとも他の言語に慣れ親しんでいるので付属のhelpでも理解できるのかな。
専門書買っても解らない奴から 英語版の help だけで全て理解してしまう奴まで色々
>>149 の訂正な
入門書も読まないで分かった気になっている厨房から
英語版のhelpを読んで分かった気になっている中に病まで色々
敵もいないのに必死さを醸し出す子って痛々しくてさ。
151は自分のことをよく知っていて偉いと思った。
みんなも早く知ったほうがいいよ。
help(中に病)
簡単に言や、うなぎパイからアップルパイまで色々ってこった それから、おっぱいは絶対出すなよ↓
( ゚∀゚) し J | | し ⌒J _ _ ( ゚∀゚ ) ! し J | | し ⌒J
155は面白いことを言おうとしたのか? そうなのか? そうなのか???
おっと、おまいらにはちと高尚過ぎたか……。
そうだ、キャラクターうなぎにすりゃいいんじゃね? もしくはうなぎ犬
強いて言うならオヤジギャグだな。
オヤジギャグならまだいいよ オヤジにとっては面白いぶんマシ
おっぱいそんスレがこんなことで盛り上がるとは
上でPython3000のα1が出たと言うとるやつがいるのに お前らスルーですかそうですか。
俺様はようやく2.5.1ですよ
入れてみたけど、実はそんなに使ってなかったことに気づきました。 Mercurial は動いているような感じ・・・くらいです。
だって仕様自体は既出だし 実用に使うにはまだ早いし
pythonが日本で流行ってない理由は、ヘビっぽい名前が原因らしいよ。 「パイチョン」なら間違いなく流行していたって教授が逝ってたし。
>>145 その記事微妙だな。もうちょっと頑張って調べて書けよ、という感じだ。
そんな半島くさい名前は嫌だ
pyてょn
インデントのしすぎで画面の横幅が足りません><
それは構造が深すぎなんだよ。 アセンブラを見習え。
そうそう、横幅が足りなくなったら構造を見直せ、と言うサインだと思うといいよ
map の返り値も iterable になるのね >>> map(ord, '12345') <itertools.imap object at 0x7fee930c> >>> list(map(ord, '12345')) [49, 50, 51, 52, 53]
インデント幅を1文字ずつにすれば、深さ数十でもOK。 1ピクセル単位でインデントできるエディタとかあれば、深さ数百にもできるな。 しかもAAも作りやすいというおまけつきw
そんな><
右端で折り返すのは邪道と聞いて飛んで来ました。
>>177 そこまでいくと単にエディタのフォントをプロポーショナルに指定すれば済む気がするw
3αを入れてみたが >>> help(なんか) がエラーになるので厳しい うちのXPのせいじゃないよね?
全ての凌辱物エロゲーをアンインストールしてから、ここに来なさい。
ウチでもやってみた XPですが。 Python 3.0a1 (py3k:57844, Aug 31 2007, 16:54:27) [MSC v.1310 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> help(print) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Python30\lib\site.py", line 349, in __call__ import pydoc File "C:\Python30\lib\pydoc.py", line 1849, in <module> help = Helper(sys.stdin, sys.stdout) File "C:\Python30\lib\pydoc.py", line 1670, in __init__ if dir and os.path.isdir(join(dir, 'lib')): File "C:\Python30\lib\genericpath.py", line 41, in isdir st = os.stat(s) UnicodeDecodeError: 'utf8' codec can't decode byte 0x8e in position 0: unexpected code byte >>>
input_fileの各行の改行を削除して1行にしたものを output_fileに書き出したいのですが、改行が削除されないまま (=input_fileと同じもの)が書き出されます。 Perlの場合はchompした各行をprintするだけでいいのですが、 うまくいきません。 よろしくお願いします。 #!/usr/bin/env/ python # coding:utf-8 input_file = open("test.txt","r") output_file = open("test_out.txt","w") for line in input_file: line.rstrip("n") print line, print >>output_file, line, input_file.close() output_file.close()
line = line.rstrip("\n")
line = line.rstrip("\n")
うちの野良ビルド on cygwin では問題ないですなあ Python 3.0a1 (py3k, Aug 31 2007, 20:36:26) [GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin Type "help", "copyright", "credits" or "license" for more information. >>> help(print) Help on built-in function print in module __builtin__: print(...) print(value, ..., file=None, sep=' ', end='\n') Prints the values to a stream, or to sys.stdout by default. Optional keyword arguments: file: a file-like object (stream); defaults to the current sys.stdout. sep: string inserted between values, default a space. end: string appended after the last value, default a newline.
なんか気持ち悪い @ py3k >>> map(print, [1,2,3,4,5]) <itertools.imap object at 0x7fe2148c> >>> list(map(print, [1,2,3,4,5])) 1 2 3 4 5 [None, None, None, None, None]
二重投稿したかと思った あと print >>output_file, line, だと間にホワイトスペースが挟まるから、 output_file.write(line) のほうがいい (意図してたことならすまん)
\200nをrstrip()って何やってんだ? スペース、0、nを右トリムしてんの?
>>185 ,186
ありがとう。本当に助かったよ。
こんな超基本的なミスに何時間も気付かなかったのが恥ずかしい。
>>189 丁寧なフォローありがとう。
output_file.write(line)の方に変更するよ。
PerlからPythonに変えたばかりなので、いろいろ世話になるかも
しれないけどよろしく。
一行野郎登場のよかん
>>188 たしかに、第一引数の副作用を期待した書き方だと、mapと書いた時点ではmapされてない
みたいになって多少気持ち悪いかも・・・
しかしまあ、何でもイテレータ化するのが、今回の流行だからしょうがないかも・・・
>>188 が言ってるのは
imap object を生のまま返されても分からねーよ、
対話モードなら気をきかせろ ウワァァァンヽ(`Д´)ノ
って意味だと思うのだが。
そもそも map に副作用を期待する(さらに値を返さない)のを渡すのは、
C++ クラスオブジェクトのポインタからアドレスを計算して
vtbl とパディングを暗黙に決め付けてアクセスするのと同じくらい悪いことだぞ。
188みたいな奴とは仕事したくないな 本質的でないところでアホな質問ばかりされ、時間を無駄につぶされそうwww
196は職場でもこんな感じなんだろうな。
197は大切な者を盗んでいきました。 このスレの空気です。
OpenCV使ってる人いるかな? C++でやってる人のほうが多そうだけど、 C++のコード、ポインタがいっぱいでこわいんだよなぁ・・・ でもPythonよりは速いだろうし。
C++のサンプルコードね
197は職場でもこんな感じなんだろうな.
いいなぁ就職してて・・・
iterator と generator って実装が違うだけで意味的には同じ?
選ばなきゃ、それなりにあるだろ。 選ばなきゃな。
>>203 意味的にというか使い方はおんなじ気がする・・・
作り方が違うのかな・・・
ジェネレータはイテレータを簡単に作るための構文糖衣。
>>207 あいかわらずキモイ表紙だな。
買う気沖ねー
2.5かな?しかしこんなもん出すぐらいなら 他にもっと売れそうなのあるんじゃねえかと思うわ
>>207 ほー、これは結構売れるんジャマイカ。
パソコンの画面でえ読むのは願い下げだけど印刷するのはメンドウ、
紙媒体の薄い(=さっと読める)入門編があるならそれを買いたい、
という客層は相当数居る希ガス。
Chun の Core Python Programming を訳せばいいのに。
>>207 , 210
本人乙w
タダで読める文章を書籍にして売れるのかねwwwwwwwwwwww
>>212 早く宿題しろ
って言われたくなかったら、せめてCCとかDRM論争とか最近の話題は
理解しておこうよ
>>213 >せめてCCとかDRM論争とか最近の話題
コモンズとか著作権管理に関係なく売れないだろww
だって無料で読めるんだからwww
つーか、Pyな入門書はすでに飽和状態になってるよ。 これ以上不要。 いまさらチュートリアルの和訳本なんて何考えてるんだか。 そして1200という価格。著者タソの印税はどんだけ低いんだ。 ワーキングプアかよ(藁。
和訳の人たちは2.5の翻訳はしないの?
ナイス営業妨害w
>>213 CCとか言うなら翻訳したのをWebで公開しろよボケがWWWWW
入門書で売れてたっぽいのってみんpyくらいじゃないか? 飽和とは言えないような・・・ 言語作者のチュートリアルってことで喜ぶ人はいるのかもしれない そりゃ既にこのスレ見てるような人は買わないだろうがw
>217 ここから先は有料です いや有料でいいから出てくれると嬉しいな…
>>220 >入門書で売れてたっぽいのってみんpyくらいじゃないか?
みんぱい以降売れた本がない、という事実を指して飽和と言わずになんと言おう?
>言語作者のチュートリアルってことで喜ぶ人はいるのかもしれない
これはそかも.
Webでも読める内容を金を払ってまで読みたいと思うかは分からないけど.
Webでも読める内容を金を払ってまで読みたいと思うかは分からないけど.
がふ、書き込み中にエンターキー押してもうた。 > Webでも読める内容を金を払ってまで読みたいと思うかは分からないけど. 電車の中で読めるから、無料で読めるものでも買うことはあるよ。 この本に関しては自分はもういらないけど。 自分は「初めてのPython」は本を買ったよ。Webの内容とかなりかぶってたけど。
本家だから安心的なチュートリアル本が一冊あってもいいじゃまいか 付録も面白そうだから出たら立ち読みしてくるよ この次はProgrammingPythonに期待。できれば夏目さん訳で 「ち」に濁点で「ぢ」とかちょっと引いた
E.1 most recent call lastってなんぢゃ イカくさい...orz...
マニュアル和訳は今後は書籍販売になるってことでしょ? 本として売ってる内容をWebで公開するなんてありえないし。 個人的には残念だけど、まぁ仕方ないかなぁ、と。
>>227 何か勘違いしているみたいだけれども
Webにあるやつとは別の訳者による新訳
ちなみに英語版の同様の書籍も出ているけれども
それで Python の本体にチュートリアルが付かなくなった
なんて事にはなっていない
イカくさい新訳。
Fedora 7 KDE Linux を始めて1週間。python言語を知って3日目・・です。 ウェブブラウザ(urlを指定してHPが表示するIEの原型みたいなもの)をpythonで作れますか? もしできるなら、参考になるソースなどあるサイトを教えてくれませんか。
>>231 ごめんなさい自己レスです。Linux上で使うpythonでLinux上で動くプログラム。を書き落としました。
>>232 の wxPython が Linux でも動く(はず。俺は Linux 使ってないので)。
232、233さん。いいサイトを紹介していただきました。有難うございました。 目標ができました。助かります。
テキストブラウザくらいなら自分で作るにはいい練習かも知れんな。
>>233 FirefoxがPython乗せるので、他のメジャーブラウザがそれに追従すれば、、、
誰かがpython-pluginを各ブラウザ向けに作れば、、、
Jythonがもっと使えるようになれば、、、
pythonのライブラリを書いてるんですが、 ライブラリ側で保存しておきたいデータってどこに保存しておけばいいんでしょか? 適当に Lib\site-packages 以下に保存しておいて大丈夫?
/var/tmp
>>240 モジュールでなくクラスとして実装して、データを保存するメソッドを作るべき。
/var/tmp だと忘れた頃に消える(w on RedHat Linux
>>240 何でライブラリ側で保存したいデータが出てくるんだ?
>>237 WindowsでのVBやDelhpiでは、ベテランの好意により入門者向けに解説した「メモ帳を作ってみよう」や「WebBrawserの初めの一歩」などのサイトをよく見かけますが、
Linuxのそれもpythonの日本語のページを探してもなかなか見つかりません。
英語ページは数行翻訳するうちにめまいがして頭痛がしてきます。
まだ、「変数」「配列」「マップ」「スライス」・・・基礎の基礎が重要なことは分かりますが、なにかプログラムの形が見えて保存したり読み込んだりしないと正直眠くなります。
Linuxといえば、サーバーをいじくるベテランの方々が大半だと思いますが、私のようにWindows Vistaに見切りをつけてLinuxに流れ込んでくるド素人が増えるかもしれません。
そうすると、当然デスクトップユースです。
正直Linuxのデスクトップ環境はこれからだと思います。
プログラム関係はpythonがとっつきやすいような気がしました。
ところで、Linux環境でのpython使いの皆さんは、どのようなIDEをお使いですか?
Linux環境では、優れたエディタがたくさんあるような気がしました。
私は、Kataを使ってみましたが、いいのかわるいのかまだ分かりません。
ヴぃm
>>246 VI/VIMの紹介ページを読みました。
上級者の使うエディタみたいですね。
pythonのお勉強レベルのド素人には敷居が高いと感じました。
有難うございました。
環境はFedora7 KDEです。 エディタKateでpythonのプログラムを記述して Kateの画面下半分にあるターミナルにソースを表示させたままファイルに保存したうえで実行させてみるのに毎回 $ python [ファイル名.py] と入力して実行させていますが 手入力しないで実行させることはできませんか。 ツールの「コンソールへ送る」ではないかとヘルプを読んでもうまくいきません。
250 :
240 :2007/09/08(土) 19:57:17
>>241 ,243
消えるからだめじゃん…と思ったけれども
保存しておきたいのは息の長いキャッシュだから大丈夫か…な
>>242 やっぱりそれが一番妥当かのう
>>244 ライブラリを利用するプログラム側で個別に作成すると重いので、
中央でまとめてキャッシュしておきたいデータがあるのです。
そもそも Linux だと Lib\site-packages に保存するのは、
パーミッションでダメじゃんと気付いた。
$HOME や %APPDATA% に保存する手もあるな。
というわけで、ありがとうございました。参考になりました。
>>247 上級者とか素人とかくくる時点で向いてないよ
ていうかプログラム云々言う前にLinux初心者ならvimとbashを先に覚えるべき。 いくらGUIやインストーラが良くなって簡単になったとは言え Linux(PC-UNIX)の魅力は充実したCUIにあるしCUIを知った上でGUIを使えば 両方の良いところを使い分けることが出来、一層便利になるはず。 OS上でプログラミングするわけだから先ずはオペレーティング……あ!? どうでもいっかw
CUI のエディタなら vim より nano の方が簡単 どちらも使ってないが
In[1]:= For[(m = 0; c=0), m <= 60*24, n = x /. FindRoot[x*360/(60*12) == Mod[x, 60]*360/60, {x, m, 0, 60*12}]; m = If[n >= m, (Print[IntegerPart[Round[n]/60], ":", Mod[Round[n], 60]]; n + 1), m + 1]]; c
初心者です。Fedora KDE。python 2.5.12.fc7.i386 です。 test.pyをDocumentsに作成し、 # -*- coding:utf-8 -*- b="月のたまご" print len(b) と書き $ python test.py を実行すると 15と表示されます。 一文字減らすと3バイトずつ減ります。???? 解説には2バイト文字だから 10になると書いてあります。 エディタを変えても、GNOMEでも同じ結果です。 何か設定が悪いのですか?
>>257 UTF-8 は可変長の文字コードで、
ほとんどの日本語は1文字3バイトを使用する。
>>257 ascii以外の文字列はプログラム内部ではunicodeで扱ったほうが良いと思う。
258さん 259さん 260さん、本当に有難うございました。 これで二日悶々としました。今夜は眠れます。
StringIOだとunicodeのままで読み書きできるけど cStringIOだと8bitに変換されてしまうんだねえ こういうのってソース見るしかない?
Python3000リリースマダー
>>260 coding: utf-8する意味大有りじゃない?
もし宣言しなかったら、print '月のたまご' ってUTF-8で書けないし。
>>262 2.5のドキュメントに書いてあるよ。2.4にも似たようなこと書いてある。
> Unlike the memory files implemented by the StringIO module,
> those provided by this module are not able to accept Unicode
> strings that cannot be encoded as plain ASCII strings.
>>264 2バイト文字を入れたいんだろ?
utf-8 指定してどうするんだよ
b=u"月のたまご".encode("shift-jis")
とでもするか、260の言うように\xhh 形式のエスケープシーケンスで入れるか
行頭のソース・エンコード指定を shift-jis にでもしないと駄目だろ
>>263 α1なら出たよ
finalはあと一年くらいかかる予定らしいよ
python関連でお勧めのブログありませんか?
常山日記あたりかな でもここは古典的な「Weblog」なので リンクがあるだけでそこ自体に内容は無いけれど
「みんなのpython」やってるんですがユニコードがprintできません ユニコード文字列の長さも合いません。OSXだからでしょうか・・・orz >>> ustr=u"日本語" >>> print ustr Traceback (most recent call last): File "<stdin>", line 1, in ? UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-8: ordinal not in range(128) >>> ustr=u"abcあいう" >>> len(ustr) 12 ←本では12ではなく6になってる
271 :
デフォルトの名無しさん :2007/09/11(火) 11:55:12
>>270 teminal のシェルは何?
スクリプトをファイルに保存して実行したらどうなる?
>>270 コンソールでそれやると環境によってまちまちな結果になる
それを注記していないその本が入門書として不親切
気にするな
@tailcall?
>>275 >それを注記していないその本が入門書として不親切
ちゃんと書いてあるよ
275の頭がおかしいだけ
気にするな
>>270 とりあえず186ページまで読んでみるんだ
おもいっきり書いてあるから
みんPy批判すると必ず基地外あつかいされるんだよな。 何でだろうね?>>作者様
俺もこの本持ってるけどUTF-8での出力に関して MacOSXなどの一部の環境では〜 とこれでもかっていうぐらいハッキリと書いてあるよな 何の確認も無しで 不親切扱いされた本は可哀想だなw
そういう意味深な疑問を作者にぶつける奴が現れるのが 楽しいからじゃね?
いつの間にかJythonのプロダクション版がリリースされていた。
22nd August 2007: Jython-2.2
http://jython.org/Project/news.html Jython 2.2, the first production release of Jython in nearly six years, is now available
まずはめでたい。しかし、今どき2.2相当だもんなあ…。最低でも2.3がほしい。
次は一気に、3かな・・・・
286 :
270 :2007/09/11(火) 20:14:29
皆さん親切にありがとうございます。
私のせいで荒れてしまったようで申しわけない
p168〜p188まで読んでネット漁りはしたのですが
encode()で解決しなくて環境変数いじるの躊躇して書き込みました
bash python2.44 OSX10.4.9でしたごめんなさい
>>272 >>275 ファイルに保存して実行したら本の通りインデックス6になりました
コンソールでやるのと保存して実行するので変わるんですね、これから頭に入れておきます
printの方はやはり環境変数弄るしかないようですね
無知な質問にレス下さってありがとうございました
287 :
270 :2007/09/11(火) 20:49:27
printの方もファイル保存してから実行 print ユニコード文字列.encode("utf-8")でいけました encode()してからprintしてた・・・どこまでアホなんだ・・・ これですっきりいきました。皆さん感謝
>>281 批判じゃないな
あからさまに書いてあることも読めないで本を不当に評価しているだけだ
そういうことをするやつのことを
「頭がおかしい」と正しく状況を説明してやるのは親切というものだぜ
不快に感じるのはオマエの頭がおかしいからだよwwwwwwwww
何でこんな話し方になっちゃうの?
みんぱい批判する人を基地外扱いすると、なんで作者呼ばわりされるの? どんだけ狭い世界に住んでいるんですか?
>>290 みんぱいを批判する人を基地外扱いするのが地球上に作者しかいないことが
ダイジョーブ博士によって証明されているから。
いや、その、・・・返す方もどうして攻撃的になっちゃうんですか・・・・
だって永久凍土なんだもん
このスレを読むとキチガイには何を言っても無駄だと言うことがよく分かるねWWW
どうせ批判するんだったら具体的にいこうよ みんPy読んで一番ひどいと思ったのは、424ページ > ElmeentTreeを使うと、XMLやHTML文書の構造をElementと呼ばれるオブジェクトに > 変換することができます。既存のXMLやHTMLを読み込んでPythonに取り込むだけ > でなく、新しく作ったElementオブジェクトを使ってXMLやHTMLを書き出すこともできます ElementTree使ったことないんだったら本に載せるなと
このスレを読むとキチガイは自らの行動でキチガイぶりを証明すると言うことがよく分かるねwwwww
なにか嫌なことでもあったの?
|\ ┌──────────┘- \ │ 気の触れた方が \ │ / └──────────┐- / ヽ(´ー`).ノ |/ ( へ) く - = ≡三 |\ - = ≡三 ┌──────────┘- \ _ = ≡三 │ \  ̄ = ≡三 │ いらっしゃいます / - = ≡三 └──────────┐- / (´ー`) - = ≡三 |/ ( ヽ ヽ) / >
流れをぶった切って質問。 Python2.5.1 を Win にインストールしたところ、 タスクバー右端に Python2.5 という文字と小さい ボタンが表示されるようになったのですが、非表示に する方法はありますか? 「ここを読め」とかで構いません。
300 :
299 :2007/09/12(水) 05:45:58
ごめん。 単にタスクバー右クリックから消せました。
module1.func1を完全に再定義したつもりで --module2.py-- from module1 import * def func1 print .... のように書いたのですが、module1.pyの中のfunc1が呼ばれる場合 があるのです。これは何故でしょうか? --module2.py-- from module1 import * def func2 print .... func1=func2 と書いても同じでした。
302 :
301 :2007/09/12(水) 09:53:56
ああ、すいません括弧とセミコロン抜けてます。 急いで書きすぎた。
module2をimportしてないからじゃね?
304 :
301 :2007/09/12(水) 10:25:03
あれ、再定義がそもそもできてないのかな。
$ cat mod.py
def func1():
print "mod.func1"
def main():
func1()
$ cat mod1.py
import mod
def func1():
print "mod1.func1"
mod.func1=func1
$ python -c "from mod1 import *;mod.main()"
mod1.func1 #<=mod1で再定義されている。
で、ここまでは
>>10 で教えてもらったことなんですけど。
$ cat mod2.py
from mod import *
def func1():
print "mod2.func1"
$ python -c "import mod2;mod2.main()"
mod.func1 #<=再定義されてない。
これはmod2.pyの書き方では再定義にならないということでしょうか?
どう書けばいいですか?
お前みたいなアホはPythonの名前空間についてもっとよく勉強するべきだ。 入門書嫁。
306 :
デフォルトの名無しさん :2007/09/12(水) 11:08:16
10倍も水増しすんな。南京大虐殺かよw
なんで?
思春期みたいなエネルギッシュな噛み付き方で おじさんまぶしいわぁ
だってpythonは一気に3000だから!
ダッキューンってな感じで3000ですから
>>314 初心者だから分からないんだけど、これ読んだらタメになるの?それともダメになるの?
「はじめに」の時点でいきなり猛烈な抵抗感があるな。
お前らパイパイ弄ってんのか、ホント変態だな。
print '\n'.join(map(str,(map(lambda x: ((x % 3 == 0 and x % 5 == 0) and 'FizzBuzz') or ((x % 3 == 0) and 'Fizz') or ((x % 5 == 0) and 'Buzz') or x, range(1,101)))))
ファイルを開くにはfileよりopenのほうがいいってさっき知った ずっとfile使ってたなあ
> 例えば、emacs等のエディタの自動インデントにおいては、 > インデントでブロックを表すというのは不便な仕様です。 10年プログラマをやってて Emacs が何かをまだ理解していないらしい。
>>315 初心者にはこれっぽっちも役に立たん
チュートリアルを細切れにして8割捨てて残りを適当に並び替えた感じ
>>314 ここまで適当の文章をよく公開してるなwwwww
>もしかすると本当のPythonistaからお叱りを受けるような内容も含まれるかもしれませんが、その点はTBやコメントでご教授頂けると幸いです。 >もしかすると本当のPythonistaからお叱りを受けるような内容も含まれるかもしれませんが、その点はTBやコメントでご教授頂けると幸いです。 >もしかすると本当のPythonistaからお叱りを受けるような内容も含まれるかもしれませんが、その点はTBやコメントでご教授頂けると幸いです。
× Pythonを使うからには、この強力なドキュメント機能を使わないわけにはいきません。 ○ Pythonを使うからには、この強力なドキュメント機能を使わない手はありません。
数学屋なら、PythonじゃなくてHaskellに行きそうなのにと思うのは偏見だろうか。 つか、この人Perlの記事も書いてるな。 いや、何を書こうが使おうが自由なんだけどさ。
cities = [ '福岡','広島','大阪','名古屋','東京','札幌' ] for i in range(6): print cities[i], #やっとこれだけ出来た
for i in cities: print i で出来ちゃうんだけどな
>>304 setattr(mod,'func1',func2)
じゃあ、何がやりたいんだ?
>>318 その方針なら、
print '\n'.join(((x % 15 == 0) and 'FizzBuzz') or ((x % 3 == 0) and 'Fizz') or ((x % 5 == 0) and 'Buzz') or str(x) for x in range(1,101))
open って file のシノニムじゃなかったの? obsolute 扱いで3000では消えるんだと思ってた。
こういう風に使うから open の方が統一がとれる気もするんだよね。 obj = module_name.open(name, ...)
現状では別に統一取れてないと思うが 同じアーカイバ系でもtarやgzipにはopenエイリアスがあり zipやbzip2にはないなど、てんでバラバラ StringIOやsocketのように、file-like objectを作るけれどもopen()で 作成するのが自然とは思えない(し、そうなっていない)ものもあるし
>When opening a file, it's preferable to use open() instead of invoking this constructor directly. >file is more suited to type testing (for example, writing "isinstance(f, file)"). コンストラクタとして使うべきじゃない?
空行 を '---' で置換するにはどうしたらよいですか? data = '---'.join(data.split("\n")) と書くと、空行以外の行にも、区切り線'---'が入ってしまいます orz
正規表現\n{2,}を置換するとか
data = '---\n'.join(data.split("\n\n")) こう?
341 :
338 :2007/09/13(木) 18:21:50
自己解決スマソ。 data = '\n---\n'.join(data.split('\r\n\r\n')) でうまくできました。改行コードのとこで splitに失敗してたのね orz
Python 3000 では open(xxx, "r") と open(xxx, "rb") で違うオブジェクトが返却されるんじゃなかったっけ?
file 無くなってるんだけど $ /usr/local/entity/python-3.0a/bin/python Python 3.0a1 (py3k, Aug 31 2007, 20:36:26) [GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin Type "help", "copyright", "credits" or "license" for more information. >>> open("/tmp/test1", "r") <io.TextIOWrapper object at 0x7fee77ac> >>> open("/tmp/test2", "rb") <io.BufferedReader object at 0x7fee772c> >>> file("/tmp/test3", "r") Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'file' is not defined
>>343 >>> file=open
オレが復活の儀式を行ってやったよ。
はいになりました
listのdictをつくって、アイテムのlistが変更されたときに 内容をチェックしたいんでど、どんな方法があるでしょうか? dictのサブクラスを作ったんですがそれだとアイテムのlist自体が 置き換えられたときは__setitem__でチェックできるんですが、 listのapped()とかinsert()とかもチェックの対象にしたいんです。 list自体もサブクラスにするのも考えたんですが、 それ以外にも方法がありませんか? __getitem__になんか、「貸し出し終了」みたいなcode blockを書けたらいいなと 思ってるんですが。 allowed = ['onaka','suita','yo'] class mydict(dict): def __setitem__(self,k,v): assert(len(filter(lambda x: x in allowed, v))) dict.__setitem__(self,k,v) def __getitem__(self,k): #??? def __owattayo__(self,v): check = filter(lambda x: x in allowed, v)) if len(check) > 0: raise ValueError("だめだよ〜ん: %s", check)
dictionary['key'].append('out') はdictionary['key']を評価し終わってから(つまり__getitem__が終了してから)、その返り値のリストに対して、.append('out')を呼び出すので、 __getitem__を弄ってもチェックは出来ない。 リストもmylistで定義するのが一番簡単だと思われる。
それ以前に普通のpython使いなら assert(len(filter(lambda x: x in allowed, v))) なんていうことは書かない。 普通だったら、 for x in v: assert x in allowed
あ、ちょっと待てよ、意味違うなぁ・・・
少なくともlenは不要
スライス[start:stop]が、区間[start,stop]ではなく、区間[start,stop)になった理由って何だっけ?
352 :
346 :2007/09/14(金) 11:51:26
結局リストをサブクラスしました。lenは確かにいりませんね。 ありがとうございました。
>>351 L がリストとして
L = a[:len(L)]
とか書けるようにじゃないかな
あるいは a[:] と a[0:len(a)] が一致するように、という説明でもいいけど
Python3000になったら何が変わるの?
355 :
新人 :2007/09/14(金) 18:02:37
環境: fedora7 KDE
http://ymasuda.jp/python/wxpython/simplesample.html で勉強しています。
-----------------
#!/usr/bin/python
import wx
def myKeyHandler(evt):
if evt.GetKeyCode() in [ord('q'), ord('Q')]:
wx.Exit()
app = wx.PySimpleApp(0)
frame = wx.Frame(None, -1, 'Hello wxPython World!')
frame.Bind(wx.EVT_KEY_DOWN, myKeyHandler)
app.SetTopWindow(frame)
frame.Show(True)
frame.Fit()
app.MainLoop()
---------------------
を実行すると
Traceback (most recent call last):
File "wxpython02.py", line 11, in <module>
frame.Bind(wx.EVT_KEY_DOWN, myKeyHandler)
AttributeError: wxFrame instance has no attribute 'Bind'
と表示します。
解決方法が分かりません。なにかインストールモジュールが不足しているのでしょうか??
お願いします。
インタプリタがAIを搭載して話しかけてくれます。
358 :
新人 :2007/09/14(金) 21:04:53
>>357 ありがとうございます。
6で動かないなら7でも動かないのでしょうね。
BindのAttributeErrorの件はGoogleでもたくさん引っかかるのですがどれも理解できませんでした。
引き続き勉強しますが新人では荷が重いです。
では。
wxPython のバージョンは?
文法ですが、 @って何に使うんでしょう? 記号をなるべく排除した文ベースの言語だって聞いたけど・・・
def foo(cls): pass foo = synchronized(lock)(foo) foo = classmethod(foo) コレが、 @classmethod @synchronized(lock) def foo(cls): pass こう書ける。
3000からはclassに対しても使える予定。 PEP-318を読むと、導入に至った経緯が分かる。
L = ['foo', 'bar', 'baz'] [ s for s in L if re.match(r'ba', s) ] をもっと手軽にする方法はありますか。 Perlのgrepみたいなのを考えています。
これ以上はないような気がする。 perlと違って、 ・正規表現(を囲む部分?)を短く書けない ・リストの要素を関数に適用する場合の「一時的な仮変数名」を省略できない だから。
re.grep(r'ba', L) みたいなのがないかなと思ってました。 なさそうということなので、自分で作ることにします。 ありがとうございました。
A, B, Cはクラス aobj = A() bobj = B() cobj = C() lst = [aobj, bobj, cobj] という状況で lst[1]がクラスBのオブジェクトかどうか判定したいときはどのように書けばよいのでしょうか? Javaの if (lst[1] instanceof B) {...} と同じことがしたいのです。アドバイスお願いします。
isinstance(lst[1], B)
369 :
デフォルトの名無しさん :2007/09/17(月) 11:27:59
>>364 一応、Perl の grep みたいなのは、filter って関数があるけど、短く書けるわけじゃない。
ついでにいうと、Perl の grep も正規表現限定じゃないんだけどね。
371 :
デフォルトの名無しさん :2007/09/17(月) 17:01:24
モジュールaがbの関数を使っていてモジュールbがモジュールaの関数使っているときってどうやってimportするんでしょうか? モジュールaがimport bとするとbがロードされると思いますが、bでimport aとなってaをロードしようとして・・・以下繰り返しになってしまいますか?
試してみれば?
うまくいかなかったです モジュールbでaの関数呼ぼうとしたところで定義されてませんエラー 設計が悪いのかも・・・
---a.py import b def a():print 'a' print dir(b) ---b.py import a def b():print 'b' で、 $python a.py と実行すると、dir(b)の内容が2回表示されるみたい、(しかも微妙に異なる なんかこの辺の話題どっかに在った気がするけど、忘れた、・・・
>>373 実験的な興味の質問じゃなくて、実際に何かプログラム作ってるんだったら
設計を見直すべきだと思う。
python学び始めて tkinterでウィンドウ表示するくらいまで勉強したんだけど、 次どんなのを勉強したらいいですか?
好きなもの何でも作れ
ニコニコ動画のダウンローダとかちょうどいい課題かも
>>376 まったく役に立たないものを勉強したんだねwww
標準ライブラリにwxWidgetsの追加キボン
標準ライブラリにPygameの追加キボン
標準ライブラリに wxPython decorator pysco 追加キボン
プログラムのデバッグをしたいんだけどお勧めのIDEはなんかある?
誰か「お勧めIDE一覧」をFAQに追加してー
デバッガーが欲しいのかIDEが欲しいのかよく分からんな。
range と xrange の関係はずっとこのまま?
387 :
383 :2007/09/18(火) 02:50:42
で、Visual Studioでデバッグできるようになるのはいつ?
今日の今日までxrangeはジェネレータだと思ってたorz
xrangeはジェネレータができる前からあったんだぜ。
これから xrange 復活の呪文をとなえます >>> xrange = range
ついでに旧rangeも復活させときますね >>> def range(*v): return list(xrange(*v))
2進数採用か。 でも 0b00110000_01000000 みたいな記法が出来ないと見づらいがな(´・ω・`) というか、デバドラ書いたりするC/C++で却下されまくりこそ問題だけど。 8進数の仕様変更は妥当かな。 0435 こんなの8進数だと気づかないで流し読みしちゃうし(0o0)
>>394 8進は大昔のCからそういう表記だったけど。
そのCの表記を判りづらいと思う人もいるってことさ
オレは知っている。394は四次元世界から来たのだと。
現実って26次元くらいらしいよ
キモいよオッサン
398\(゚o゜)バキ
401 :
394 :2007/09/18(火) 13:37:17
int i = 0o123; 大昔からそうだったってgccコンパイル通らん。 どのコンパイラ?
文脈読んだ。↑の無しね。 人を異次元生物にしないでくれ。 俺は善良な触手なんだから。
>>394 >デバドラ書いたりするC/C++で
C++でデバドラ書く能無しどこにいるんだよ。実例を挙げてみなさい。
tkinterって何がダメなの?教えてください!!!!!!!!!!!!!!!!!!!11
wxPythonの方がGUIの部品が多くてかっこいいらしい
そんな理由かよwwww
犬厨にはわからないかもしれないがOSのネイティブアプリっぽく見えないなら そんなツールキットに存在価値はない
何を作るかによるだろ。 客に使わせるわけではないようなラッバーGUIとかなら手軽な方がいいし。 おまえ友達いないだろwwww
tkinterは日本語入力できない、ってあったような・・
>>403 Symbianとか。
あと2進数使えるとうれしいのはSystemCだな。
403涙目wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
このスレってまともな質問もなければまともな回答もまったくないね
今、連番ファイルの簡単なGUIダウンローダをTkinterを使って作ってる。 ところでthreadモジュールのスレッドを終了させるにはどうすればいい? ファイルをダウンロードするスレッドを走らせたあとで、GUIフォームの URLの欄を間違ったことに気づいたり何かしたときに、スレッドを停止さ せられる仕様にしたいんだが・・・
>>410 はいはいSymbianね。他にもC++でデバドラ書いてる実例があれば
挙げても構いませんよ。
イタタ
開き直ったwwwwwwww 結局ただの荒らしかwwwwwwwwwww
>>413 ダウンロードスレッドに対して「ダウンロードを中止して終了せよ」と通知する仕組みを設ければよい。
排他制御を施したキューでメッセージを授受するのが定石だと思われ。
>>418 やってみる。・・・もとは簡単なCUIアプリだったのにGUIのフロントエンドを
作ろうした途端にスレッドやら排他制御やら。大変だ〜。
irvineで間に合ってます
最近ブラウザでエロ画像なんて見てないな・・・
P2P!!!P2P!!!
>>416-417 空前の馬鹿発見。
>>403 を良く読め。俺は「どこにいるのか」と訊いているんだ。
なのに能無しの
>>410 は、日本語もろくに読めないせいで、ブツのほうを書いて自己満足してやがる。
Symbianを生み出した人間達が今どこにいるのか、を書かなきゃ、回答したことにならないんだよ。
だから
>>415 でテキトーにあしらってやったんだ。教育的指導としてな。わかったかカス。
いっしょうけんめいかんがえたんだね えらいね がんばったね じんせいもおなじくらいがんばろうね
外基地は放置で
なんでそんなに元気なんだよ つかWindowsでもC++でデバイスドライバ書けないことはないらしいぞ 話に聞いたことがあるって程度だが あとUMDFというのがあってだな
いくら
>>424 が外基地だからって、放置呼びかけは可哀相だろ。
「ネットに書き込むこと」と「人生」が排他の関係にあると思ってる間抜けだからって、ハブしちゃいけない。
これはモノホンだwwww
>>427 「くだらない妄想を垂れ流すことと」と「人生を頑張る」ことは
排他関係にあると思うけどなあ(プゲラw
( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
さぁ、おまえら、早くPythonのお勉強をする作業に戻るんだ。
|\ ┌──────────┘- \ │ 気の触れた方が \ │ / └──────────┐- / ヽ(´ー`).ノ |/ ( へ) く - = ≡三 |\ - = ≡三 ┌──────────┘- \ _ = ≡三 │ \  ̄ = ≡三 │ いらっしゃいます / - = ≡三 └──────────┐- / (´ー`) - = ≡三 |/ ( ヽ ヽ) / >
Pythonで真性キチガイを駆除するコードはどう書きますか?wwww
使いやすいデバッガが出てこないのは そもそもコア開発者達がデバッガを必要としてないんだと思う。
ぶっちゃけ Python プログラミングにデバッガって要る? 個人的な印象だけど、やっかいなバグに何日も悩んだ経験がCではあるのにPythonではない。 なんでだろう。 どちらもエディタで書いてコマンドラインで実行するスタイル。 Cの場合、デバッガはほとんど使わずprintfの大量挿入でバグ取りしている。 思うにPythonのトレースバックが(例えば)gdbのwhereコマンドに相当していて、 あとはprint文の大量挿入で用が足りるからデバッガの出る幕がないという感じ。 大方そんなところなんでは。
pdbは便利だと思うがなぁ。 あと、マルチスレッドプログラミングしてるとたまに困る。
いまどきCでprintfデバグはちょっとなあ pythonは例外やらreprやらが便利なので、確かにデバッガなくても あんまり困らないかも
>>429 こととと?
そんな興奮すんなよ。
お前の書き込みがくだらないのはわかってるから大丈夫だよ。
俺の簡潔な質問の意味さえ正しく理解できなかったのは確かに馬鹿丸出しだし、
それを指摘しただけで意味不明の興奮状態に突入するのは痛すぎるけど、匿名なんだから
お前がこの過ちから何かを学び取れれば、お前の生活には大したダメージは無いし、結果オーライだよ。
KY
キチガイは妄想の中のバグをデバッグしつづけたりするんだろうか…。
やめなよ
>>439 基地外の質問の意味は残念ながら理解不能だぜww
>>443 言い訳する前に日本語を勉強し直したほうがいい。
>>441 かもしれないなぁ。こいつ大丈夫だろうか。
地元で一番大きな本屋に行ってPyhonの本を探したが無かった Ruby,C,PHP,JAVAはあったけど 金が無いんで立ち読みしたかった [ 田舎]
ソースコードデバッガは、プログラミングの勉強に効果があると思うんだ。
どんなによくできたデバッガを使っても キチガイの頭の中にある不具合はなおせないんだぜwwwwwwww
>>426 >あとUMDFというのがあって
ユーザーモードドライバね。それはありかも。
実はそれをPythonまたはPython+Cで書くのが有望でないかと思う
今日このごろ。
それもC++で書くと、この能無し!と罵る人もいるので気をつけると
いいかもしれません。
無駄にスレが消費されてるね。連番ダウンローダできた。 フラグのためのクラス変数を追加して、さらにCUIバージョンで定義していた クラスのメソッドをちょっと変更して、"停止"に対応するボタンが押されたら 例外を送出するようにした。結局、キューとかは使わなかった。でも 教えてくれた人ありがと
お知恵を拝借させて下さい
http://www.roy.hi-ho.ne.jp/pastel/home/Python/ の簡単なサンプル ファイルの表示
#
# "someTextFile"という名前のテキストファイルを読んで表示する
# fileオブジェクトのreadlines()メソッドは一度にテキストすべてを読み込みリストで返す.
# もちろん一行ごとに読むことも出来る.その場合はreadline()メソッドを使う.
#
fi=open("someTextFile")
lines=fi.readlines()
for line in lines:
print line,
fi.close()
を、実行しても下記のエラーが出てしまいます どこを修正すればすればいいのでしょうか?
Traceback (most recent call last):
File "E:/Python25/自作/hiyouji18.py", line 1, in <module>
fi=open("someTextFile")
IOError: [Errno 2] No such file or directory: 'someTextFile'
No such file or directory: 'someTextFile' 和訳:someTextFileというファイルまたはディレクトリは存在しません someTextFileを実際にあるファイルのパスに置き換えれば動くよ。
例えばスクリプトファイル自体とかね。 fi=open("someTextFile") ↓ fi=open("hiyouji18.py")
いちおう言っとくと、例題では readlines() 使ってるけど普通は for line in fi:: print line これでいい
::
def deco(obj): ... class FooClass: @deco def bar_method(): ... obj が bar_method の時に、deco 内部で、 文字列 'FooClass' を得る方法はないでしょうか? 1. bar_method の内容が解析される 2. 解析された(1)が 'bar_method' として登録される 3. deco が呼び出される。(←この時点で知りたい) 4. 解析された(1)-(3)が 'FooClass' として登録される
sys._getframe(1).f_code.co_name
>>456 ありがとうございます。
望むものが得られました。
Python3000のprintは素晴らしく使いづらいな
python3000ってなに?
b=int(key[1:2]) ValueError: invalid literal for int() with base 10: '-' なんてエラーが急にでるようになったんだけどどうしたらいいですか?
「key」の中身は何なの?
文字列
なるほど、数字じゃなくて-が入ってたのがわるいみたいでした。
pythonってCのgotoみたいなのないの?
ない。おそらく今後も、GOTOそのものが追加されることは無い。 ただcall/ccが何かのきっかけでついかされることはなくもなくもない、と思う。
エラー・例外からのリトライとか シェルスクリプト的な書き捨てコードであると便利なのにな。 gotoあれば一発なのにわざわざ無様なフラグ追加してwhileとかでインデントさせられると 敗北感に苛まれてしょうがない
Pythonでgotoが欲しいと思ったことってほとんどない気がするなあ。 たぶんgotoが必要だと感じた時点でコードの構成を変えてるんだろうなあ。 関数/メソッドに細分化してgoto→returnにしたりcallableオブジェクトを辞書の値にして分岐したり。
今までPythonでgoto欲しくなった事はないな。 ローカル関数やジェネレータ使うし。
>>467 ヽ(´Д`)人(´Д`)ノ
俺もエラー処理のためにgoto欲しいよ。
堅くすればするほど見にくくなって保守性が落ちていく。
いらない云う人はどーやって書いてるん?
try 〜 raise 〜 except でとばすんじゃない?
エラー処理なら素直に例外使えば
>>460 互換性なくなっちゃうのか…
折角python覚え始めたけど別の言語にするかな…
こんな感じ? finallyでちゃんとリソース解放を保障しようとすると、無駄に多段になるな デストラクタが存在しない言語の宿命という気がするが try: input = open("foo", "r") try: output = open("bar", "w") try: for line in input: output.write(process(line)) finally: output.close() finally: input.close() except Exception, e: print e
デストラクタがないオブジェクト指向言語なんてあるの?
>>474 こういう勘違い君が現れるくらい微妙な記事ってことか.
そもそもまだα版じゃないか
>>476 GC系の言語はデストラクタが仮に存在しても、それが呼び出されるかどうか
なんて普通は保障されてないでしょ
だからJavaも全く似たようなコードになる
C#はusingが使えるから多少マシだが
2.5 なら from __future__ import with_statement from contextlib import closing with closing(open("test.txt")) as fp: print fp.read() とできる
階層が深くなるから
>>475 は嫌だな。
def proc_exc(req):
res0 = req0_from_req(req)
try:
res0 = proc0(req0)
except Exception, e:
raise e
req1 = req1_from_res0(res0)
try:
res1 = proc1(req1)
except Exception, e:
release0()
raise e
req2 = req2_from_res1(res1)
try:
res2 = proc2(req2)
except Exception, e:
release1()
release0()
raise e
res = res_from_res2(res2)
release2()
release1()
release0()
return res
>>480 GCがある言語のデストラクタは何時よばれるかわからないのであまり使われていない。
リソースを解放する必要があるようなオブジェクトは それ用のメソッドを大抵もっているので呼べばいい。ディストラクタに期待するのは間違い。 メモリのことはあんま気にすることはないなあ。 メモリを使い切ることが予想される場合には省エネ設計をする。
それをどう呼ぶかなんだよなぁ。 例外をポンポン投げられても困る。 IndexErrorやStopIterationとかは例外でいいと思うんだけど。
486 :
186 :2007/09/19(水) 23:54:19
goto使えるならこんなの。タプルがあるからCよりいい感じ。 def proc_goto(req): res = err = None req0 = req0_from_req(req) (res0,err) = proc0(req0) if err: goto err0p req1 = req1_from_res0(res0) (res1,err) = proc1(req1) if err: goto err1p req2 = req2_from_res1(res1) (res2,err) = proc2(req2) if err: goto err2p res = res_from_res2(res2) release2() err2p: release1() err1p: release0() err0p: return (res, err)
>>484 >呼べばいい
んなのは当たり前の話で、それが呼ばれることを保障しようとすると
面倒くさいって話でしょ
上のパターンのコードはこう書けば多少はマシになるが、
close()が例外を送出する可能性を考慮すると、また別の問題が出てくる
input = None
output = None
try:
    input  = open("foo", "r")
    output = open("bar", "w")
    for line in input:
        output.write(line)
except Exception, e:
    print e
finally:
    if input  is not None: input.close()
    if output is not None: output.close()
488 :
487 :2007/09/19(水) 23:55:43
ぎゃ、すまん input = None output = None try: input = open("foo", "r") output = open("bar", "w") for line in input: output.write(line) except Exception, e: print e finally: if input is not None: input.close() if output is not None: output.close()
Pythonのgcは参照カウンタだから破棄タイミングは予測できるんじゃね? 他の実装は良く知らないけど
>>489 デコレータやメタクラスが保持してるかもよ
おっぱい
とりあえずwith構文のありがたみがよく分かった。
withおっぱい
>>451-453 ありがとうございました 何とが実行出来ました
メモ帳はトラブルの発生原因となる問題が多いそうで、Collmintを使用しました
作成したプログラムを単独で作動するアプリケーション形式にするにはどうしたらいいのでしょうか?
っpy2exe
>>475 はリソースの解放時(input.close()やoutput.close())にエラーが発生してもただしく動く。
>>482 はリソース解放時(release0(), release1(), release2())にエラーが発生すると正しく動かない。
release2() # ←これがエラーになるとrelease1()とrelease0()が実行されない
release1()
release0()
>>486 と
>>488 も同じバグを持ってる。
リリース解放時にはエラーが発生しないと仮定してかまわないなら、
>>488 の書き方が単純でよろしい。
ただこれはtry except finally が一続きだから、python2.5以降じゃないとシンタックスエラーになる。
close()でもエラーが発生する場合を考慮するとこうなる。
(2.4以前でもうごくようにしてみた。)
try:
input = output = None
try:
input = open("foo", "r")
output = open("bar", "w")
for line in input:
output.write(line)
finally:
if input:
try: input.close()
finally: pass
if output:
try: output.close()
finally: pass
except Exception, e:
print e
これは、gogoがサボートされても簡潔に書けるようにはならない。
つまり
>>470 は勘違い。
ただ、エラー発生時のリトライはgotoがあると簡単になるけど、それはほかの方法でもできるんだから、わざわざ危険なgotoをほしがる必要はないと思う。
withがもうあるんだからそれ使えでFAだな
close の例外は飛んできても対処できないから 自動的に捨てる関数にやらせればok
複数個のファイル開くときに 開いたファイルを逐次リストにappend()して finallyでは、その時点でリストに入ってるファイル全てにclose()をかける という風に書いたことはある
# 具体的には filelist = [] try: input = open("foo", "r") filelist.append(input) output = open("bar", "w") filelist.append(output) # 処理 finally: for f in filelist: f.close() という感じだが、closeの例外も補足した方がいいかな?
PythonってObject.disposeみたいに明示的なリソース開放メソッド名が統一されてないのか?
504 :
デフォルトの名無しさん :2007/09/20(木) 08:10:40
pythonには三項演算子はないんでしょうか? 文字列を "asdf" + (i == 0)? "" : "zxcv" みたいにしたいんですが
>504 Python2.5以降なら 'asdf' + ('' if i==0 else 'zxcv')
>>498 この場合closeでエラーが出たらどうなるの?
握りつぶし?一番下のexcept?
もうお前ら独自のオレ言語作れよ。
>>506 二回 close() すれば判るやん。
…ごめん今の無視して。頭がぶぴょにってた。
>>504 'asdf' + ((i != 0) and 'zxcv' or '')
>>498 def release0():
print 'release0: success'
res = err = None
return (res,err)
def release1():
print 'release1: success'
res = err = None
return (res,err)
def release2():
print 'release2: error'
res = None
err = "error_oppai"
return (res,err)
release2() # ←これがエラーになるとrelease1()とrelease0()が実行されない
release1()
release0()
>実行されますが何か?
>release2: error
>release1: success
>release0: success
513 :
490 :2007/09/20(木) 10:01:08
いまだに違いが分からない俺を助けてくれ
文字ベースのチュートリアルじゃなくて ひたすらサンプルがずらずら並んでて コメントでコードの説明してるような 入門サイトってないですか?
>514 標準ライブラリのソースがあるだろ。大抵のものは揃ってる。
>>515 そうそう、
標準ライブラリのソースはクックブックよりよっぽど実用的でためになるお。
>511 が何を言いたいのかよくわからん...
>>511 ここでいう「エラーが発生する」というのは「例外が発生する」ということ。
(try except finally 使って話してるんだからそのくらいわかれよ。)
511のコードは error と表示してるだけで、実際にはなんのエラーにもなってない。
エラーが起きたら例外を raise せずに返り値で渡すような関数にしろってこと? 気持ち悪い
俺が
>>498 に対して
「open,write,closeが例外を一切飛ばさずに
グローバル変数errnoに書き込んでたらtry〜は意味ない」
って云ったら馬鹿だと思わないのか?
二重否定はわかりにくいのでできる限り避けましょうね。 頭が悪い人の話し方の典型ですよ。
いやです
頭が悪い上に意固地なんですね。 可哀想に。
closeなんて呼ばなくて良いところがLL言語の良いところだと思ってる。
cでも呼ばなくていいけどな
非同期のライブラリを探してるんだけど Twistedばっかり出てくる。 みんなこれで満足できるっていうものなの?
>>524 すぐ死んで終わるプログラムならどうでもいいのはCでも同じ
っつかそれなら、よほど大量のメモリを使わない限りはGCすら要らん
一方長いあいだ張り付いているプログラムなら、どんな言語だろうが
リソースリークは避けるべきだろ
つまり言語は関係ない
close()で単なるリソース解放以外の意味がある場合もあるから注意な バッファリングされてるデータをフラッシュするとか (Cのstdioではそういうことはatexit()でやってくれるが) こういう場合はすぐ死ぬプログラムでもちゃんとclose()せなあかん
529 :
デフォルトの名無しさん :2007/09/20(木) 16:02:37
>>481 ファイルオブジェクトは"__enter__"と"__exit__"が宣言されているから
closingは必要ない
from __future__ import with_statement
with open("test.txt") as fp:
print fp.read()
うむ、いい時代になった そしてprintデバッグ・機能下調べがやりづらい時代がやってくる訳だな ]λ.....
>>526 自分で判断できないレベルなら手を出さないのが吉
いや、手近にはasyncoreがあるけど ほかの比較する対象物が検索に引っかからなくて
>>532 おおう、存在を完全に忘れてたよ、
消えてなくなると思ってたのに。
よく考えればこっちのほうが目的に近いかもthx
535 :
デフォルトの名無しさん :2007/09/20(木) 18:42:43
>>526 下の co-operative thread パッケージがある。Twisted のような differed による関数の遅延実行ではない。タスクらしい記述ができる。シミュレーションでの並列実行を目的として作られている。
SymPy;;
http://simpy.sourceforge.net/index.html Context switch が co-operative なので test and set の狭間でのデータ化けを心配する必要がないので楽だ。もっと使われても良いと思う。
>>519 逆だろ。
みんな、エラーが起きたら例外が発生することを前提で話してる。
>>511 だけが、例外を発生させてない。
気持ち悪いのは511==519だけ。
>>535 これも便利そう。
大学もFortranなんかの講義はやめて
こういうやつを教えればいいのに。
でもNumPyとnumpyとnumarray(もううろ覚え)の選択で苦しみそうだ。 というか、結局どれがいいやら私が分からなかった。
おっぱい!!
guiアプリケーションをつくるぜ!!!
_ ∩ ( ゚∀゚)彡 おっぱい!おっぱい! ⊂彡
>>538 同感。結局 f2py を使いたいので numpy を使ってる
>>536 なにが逆なのかまったく分かんね
例外を発生させないのが気持ち悪いっつってんだが
>>511 はこういうことが言いたいんだと俺は思った
def release1():
err = None
try:
hoge.close()
except:
print 'hoge.close() failed'
err = 'oppai'
else:
print 'release1: success'
return err
def release2():
# do something
print 'release2: success'
release1()
release2()
>hoge.close() failed
>release2: success
んで、
"処理は中断しない代わり、失敗したか知りたきゃ返り値を見ろ"
的な C みたいなやりかたはキモい、と
_ ∩ ( ゚∀゚)彡 おっぱい!おっぱい! ( ⊂彡 | | し ⌒J
545 :
455 :2007/09/21(金) 08:30:40
デコレータをいじっていてようやく気づいたのですが Pythonにとって class は syntax sugar にしか過ぎないのでしょうか?
>>543 じゃあおまえのもともとの発言
>>519 がおかしいんだろ。
エラーのときは例外を発生させることを前提で話してるときに、
>>511 がおかしなことを言い出したから
>>518 でそれを正した。
そしたら
>>519 >エラーが起きたら例外を raise せずに返り値で渡すような関数にしろってこと?
だれもそんなことを言ってないのに、またおかしなことをいいだした。
話の流れでは、エラー時には例外を発生させることが前提。その逆のことをいってるのは
>>511 と
>>519 (と
>>543 )だけ。
同一人物かどうかは知らん。
なにが逆なのか分かった?
>>545 2.1まではそうだったかも知れないけど、2.2からは違う。
549 :
455 :2007/09/21(金) 09:47:33
>>547 いや本当に逆の意味が分からん
俺も「エラー時には例外を発生させることが前提」であって、
「その逆のことをいってる」
>>511 気持ち悪い、と言ったんだが
俺はこう推測した:
511は疑似コードで、実際には releaseX() 内でなにか例外が発生する処理をしているが、
それを握り潰して (try: 〜 except: pass か何か) 失敗の情報は err に乗せて返す
んで、518がそれを分かってないと思ったから、511の意味(の推測)
>エラーが起きたら例外を raise せずに返り値で渡すような関数にしろってこと?
を書いた
そのうえで、
例外を発生させるのが前提の話のときに、
その前提にそぐわない、例外を隠蔽するような511のやりかたは気持ち悪い
と思った
あれ?
その推測でいくと、
>>511 は本質的には、3つの try 文を 3つの releaseX() に切り分けただけか?
まあいいや
俺の推測が飛躍しすぎだったかもしれん
で、結局どれがベストアンサー?
with, numpy
基地外が紛れ込んでいる悪寒。
お、俺じゃねえよ
みんな難しい話してるねぇ フゥー
>>550 じゃあ
>>519 は
>>511 へのレスだということ?
>>518 じゃなくて?
わかるかよそんなこと。
>>519 だけみれば、直前の
>>518 へのレスかと思うだろ。だから519がとんちんかんなことをいってるようにみえた。
直前へのレスじゃないなら相手先をちゃんと書けや。話をかき乱すだけじゃぼけ。
わかるだろw
ゆとり相手するにはエスパー必要
キチガイ警報?
お前ら、そんなに元気なら3000の陰に隠れていじけている2.6を構って上げて下さい。
質問 1:今日の日付を取得して、 2:そこから年数を1926年分引く という処理で today = datetime.date.today() で1は出来るのですが 年数を引くにはどうすれば良いのでしょう 年だけ計算したい点がわからないです よろしくお願いします
today.year - 1926
564 :
デフォルトの名無しさん :2007/09/22(土) 00:33:31
引き算できました ありがとうございます! これでいつばあちゃんに今年は昭和何年か 聞かれても大丈夫
それ、-1925だからw
>>371 >>374 >>375 あたりの話題で同じ問題かかえてるんですが、もしモジュールaからモジュールbの機能使いたくて逆にモジュールbでもモジュールaの機能使いたいってときPythonでどう書くんでしょう?
Cだとただ単にincludeすればすむはなしですが、pythonのimportはモジュール読み込むとき実行までしてしまうので問題が起きてしまいます。
aもbも一つのモジュールに含めてしまえば問題ないと思うんですが巨大なファイルができてしまいます。
あと大規模なpythonプログラムってクラスごとにモジュールファイルを作るってのは一般的なのでしょうか?
> Cだとただ単にinclude include guard があるから
>>566 import時に実行して欲しくないコードは
if __name__=='__main__':
ブロックに押し込めばいいんじゃね?
ていうか入門書嫁
PythonをわざわざVC++で野良ビルドしてみたが、なんかcygwinのより遅ぇ。 野良ビルドだからか? cygwinの死ぬほど遅いラッパーシステムコールを使うようなコードなら 流石にネイティブのが速いだろうけど、なんかStringIOとかが普通に遅い。 VC++のmalloc()が遅いのかな……
プロファイルとってみろ
>>570 hotshotでプロファイルを取った結果、StringIOのread()やらwrite()やら
seek()やらで有意な差がついていた。
たまたま今回はそうだが、結局は文字列処理、リスト処理のような
プリミティブな処理において速度差があるんだと思う。
それ以下には潜ってない。
デフォルトの配布では最適化オプションが-O2だったのを-Oxに変更してみたが
有意な差は得られなかった。
binary data をパースしてる最中、hex 1A を読む込むあたりで、 file pointer が吹っ飛ぶ現象が おきてるのですが、win32 + python2.5.1 とかではあたりまえなんでしょうか?
バイナリモードでopenしていないとか
ありがとございました.... orz スレ汚しごめなさい....
プログラミングをやってたら誰でも一度は経験するベタな過ちだわな
C実装が漏れ出ている やっちゃった系実装。
577 :
デフォルトの名無しさん :2007/09/23(日) 19:13:16
外部のソフト使いたくてsubprocess.Popen()を使って起動したら ターミナルがフォーカス奪われてしまいこまってます 奪われず起動する方法ってありますか?うしえてください
質問です。 import urllib; print urllib.quote( "日本語" ); この文を、pythonのコマンドラインから実行した場合と、 モジュール(test.py)に書き出して、python test.pyとで実行した場合に 違う文字列がアウトプットされます。原因が全くわかりません。 なぜでしょうか?
コマンドラインから実行する場合の文字コードと test.py の文字コードが違うからじゃね? (全然関係ないけど行末の ; は不要だよん)
580 :
578 :2007/09/24(月) 05:12:17
レスありがとうございます。 具体的にはどのように解決すればいいのでしょうか?
何を使って「コマンドラインから実行」してるのか、具体的にかかないと
リテラルの文字コード関係の質問は定期的に来るなあ。
583 :
578 :2007/09/24(月) 06:15:48
すんません。 なんかいろいろ調べてたんですが、 print repr( "あ" ); とした場合、 pythonのコマンドライン(pythonのインタープリタ)のアウトプットは '\xe3\x81\x82' モジュールから実行した場合は '\x1b$B$"\x1b(B' とアウトプットされます。urllib.quoteの結果の違いもこれかと思います。 モジュールから実行した場合も前者の用にアウトプットさせたいです。
>>583 コンソールの文字コードがUTF-8なのはわかるけど
そのモジュールはどんな文字コードで書いたの?
("あ" が '\x1b$B$"\x1b(B' になるというのが謎)
coding 宣言はしてないの?
'\x1b$B$"\x1b(B' は iso2022jp でしょ
ああほんとだ。無知ですまん
>>585 で、モジュールとして
# coding: iso2022jp
print repr('あ')
みたいに書いた場合、'あ'はiso2022jpの8ビット文字列'\x1b$B$"\x1b(B'が入ってる
UTF-8のコンソールから
>>>print repr('あ')
としたら、'あ'にはUTF-8の8ビット文字列'\xe3\x81\x82'が入ってる
なのでモジュールを
# coding: utf-8
print repr('あ')
としてソースコードとコンソールの文字コードを一致させるか
# coding: iso2022jp
print repr(u'あ')
として8ビット文字列ではなくUnicode文字列を作成し、
コンソール出力時にUTF-8の8ビット文字列に変換してもらえばOK
すみません、すみません お勧めの入門本は何ですか? すみません、すみません
みんpy
すみません ごめんなさい ゆるしてください ゆまそ めんごめんご ゆるしてちょんまげ パイソンのクラスの作り方について詳しいホームページをおねがいします。
>>588 すみません、すみません
みんなのぱいぱい注文しました
すみません、すみません
win用のUTF-8コンソールって何がお勧めですかね?
ぱてぃ
python のサンプルコードってどこにあるん?
標準ライブラリってどこにあるんですか? そこにサンプルコードがあるんですか?
>>595 「標準ライブラリ」っていうのは、 sys とか os とか、Pythonをインストールするとすぐに使えるようになる同
梱ライブラリ集のことだよ。
ライブラリ自身のコードもPythonで記述されてるから、どうやって実装されてるか中身を除くと勉強になる。
windowsなら、 c:\Python24\Lib あたりを探せば入ってる。
Linuxなら、たぶん /usr/lib/python だろう。
ドキュメントはここ
http://www.python.jp/doc/nightly/lib/
599 :
577 :2007/09/25(火) 20:54:55
subprocess.Popen()の後にtime.sleep()で待ってから GUI窓を開いて入力をそっちに移すことで強引に解決しますた
おっpy
おっpy
x, y = 12415, [-28, -20, 48, -48, 28, -20, 15, -36, 16, 57, -2593, 0] while y: print unichr(x), x += y.pop(0)
>>602 み っ く み く に し て あ げ る ♪
pop(0)の0がイケてない。
reduceは3000でなくなるんだっけ? def foo(a, b): print unichr(a), return a + b reduce(foo, y, x)
左か右かよく分からないから困る
for z in y: print unichr(x),; x += z
インスタンス変数名をtypoしたときにエラーになるような仕組みってありますか。 たとえば class Foo(object): def __init__(self): self.x = 0 self.y = 0 foo = Foo() foo.x = 10 foo.y = 20 とあるときに、 foo.z = 30 がエラーとなってほしいなーと。
__slots__ = ["x", "y"]
>>605 reduceは3000で消える。
代わりにfoldlとfoldrになる。
といいなと思った。
これってバグかな? みみっちぃけど。2.5.1内 def a(): print 'abc', raw_input('')#ここで何か入力してBackspace print 'abc', raw_input(' ')#空文字でなければ大丈夫
f = os.popen('command') s = f.read() でコマンドを実行し、その結果を取得できますが、stdout だけしかとってこれないようです。 stdout と stderr の両方を取ってくるにはどうしたらいいですか。 なお stdout と stderr を別々に取ってくるのではなく、両方を区別せずに、コマンドの結果を取ってきたいです。
>>612 subprocess か os.popen4 ?
>>612 Unixなら
os.popen('ls -l 2>&1')
とかでおk
>>613 os.popen4() がまさに欲しいものでした。どうもありがとうございます。
あと別の質問なのですが、あるクラスの親クラスを調べるにはどうしたらいいでしょうか。
例えばValueErrorの親クラスを知りたいとき、ValueError.__class__ は違いますし、ValueError.__parent__ とかそういうのもなさそうだし、困ってます。
__bases__
>>616 ValueError.__bases__
で親クラスの一覧がとってこれるみたいです。ありがとうございます。
しかし dir(ValueError) しても __bases__ は見当たらないのですが、どういうことでしょうか。
dir(ValueError.__class__)ってすると出て来るね
__bases__はtypeが大元だから
>>608 class Foo(object):
__slots__ = ('x', 'y')
def __init__(self):
self.x = 0
self.y = 0
lxmlでのhtmlのパース時に、 <script>タグのようにに内部がCDATAと解釈されるものを与えた場合、 パースツリーのelementのtext要素には元のタグの内容がそのまま入るのですが、 tostring()やtounicode()を用いてシリアライズすると、そのようなタグの中身 であっても、エンティティ参照などでエスケープされてしまうようです。 そういうことをされては困るのですが、何か良い方法はあるでしょうか。 ちょっと調べただけでは良く分からなかったので、treeをwalkしつつtext部分を リストにぶっこ抜きして、elementのtext要素を一旦ダミーデータに置換して シリアライズ、その後で保存していたリストを用いてダミーと再置換、 という手で逃げることは出来ましたが、いかにもadhocで汚いように思います。
もしよろしければ… Python上で得られたJavascriptコードを動作させることは可能でしょうか。 ちなみに以前、必要に迫られて既に存在したPython表記のスクリプトに手を入れて 正常に動作する物を作ったことはあります。一応アセンブラ、Cとかは一通り趣味レベルで勉強済みです。
日本語を勉強したほうがいいよ
>>622 >Python上で得られたJavascriptコードを動作させることは可能でしょうか。
悪いが、JavaScriptコードがどこで得られたのか、
また、そのコードどこで動作させるのか文意から読み取れない。
>ちなみに以前、必要に迫られて既に存在したPython表記のスクリプトに手を入れて
>正常に動作する物を作ったことはあります。
「Python表記のスクリプト」とは何を表すのかよくわからない。
「Pythonで書かれたJavaScriptインタプリタ」の意味にも取れるが
第1文と矛盾しているように感じる。
タテヨミナンジャネ
>>621 >>> import lxml.etree as ET
>>> html = ET.HTML('<script>alert("&");</script>')
>>> ET.tostring(html)
'<html><head><script>alert("&");</script></head></html>'
こういうことですよね。XMLならともかくHTMLのときにまでこうされると不便な気も。
tostring()の返り値をxml.sax.saxutils.unescape()に渡してみたらとか
思ったけれど、なんか落とし穴がありそうで・・・
>>626 > こういうことですよね。
ちがうと思われ。
>>621 エンティティ参照程度なら、reでなんとかなるだろ。
>>626 意図は汲み取っていただいたようですが、
あなたの貼り付けたものはどちらも & に見えます。自分の環境では。
後者は & という意味でしょうか。
>>629 おっしゃる意味が分かりませんが、
>>621 で述べたように
私はエレメントツリーのトラバーサルをわざわざ
行って(ここはXPathでもいいでしょうが)、__REPLACED_CDATA__のような
データに置換え(もとのデータはリストに保存しておく)、
tostring()やtounicode()でシリアライズ後、その文字列に対して
reで置換しました。
出来ればそういういかにも実装依存の汚い仕事はやりたくない、という話です。
DOMやElementTreeにしてくれるツリーパーサが要らないのならHTMLParserで
いいのですが、このケースでは、ツリーパーサが欲しかったのです。
他に良いツリーパーサ(XPathが使えるものが望ましい)があるのなら、
そちらに乗り換えますが。
そんな面倒な置き換えなんかしなくても、script要素が入っているオブジェクトの tostringをラップすればいいと思ったんだが。それでだめなの? あと、この場合reよりstringの方がいいかも。
632 :
626 :2007/09/29(土) 10:40:48
>>630 > 後者は & という意味でしょうか。
です。エスケープ処理してから貼り付けるの忘れてました。
HTMLパーサならBeautifulSoupか、
ElementTreeAPIの使えるElementSoupを試してみるとか。
ただ両者ともXPathは使えないです。
ほんとはlxmlで一本化できればいいんですけど・・・。
>>631 自分はPythonに関してはほぼ素人ですので、
そういうことが出来るのなら、やり方を教えていただけませんか。
lxmlのエレメントオブジェクトはCモジュールで実装されている実装詳細で、
__str__や__repr__は単にクラス名とアドレスを返すだけです。
個々のエレメントにはtostring()というメソッドは実装されていません。
シリアライズはlxml.etreeがやる仕事で、これは与えられたエレメント
以下のサブツリーを再帰的にシリアライズします。
>>632 なるほど。ツリーパーサでXPathが使えないのは正直痛いですねぇ。
確かめないで書くけど、4Suiteはどうかな?
Python で GUI といえば wxWidgets が、 画像ファイルサポートといえば PIL が有名ですが、 これらのライセンスを詳しく日本語訳したサイトはありませんか? こちらのソース非公開で商用利用できるかどうかが知りたいのですが。
wxWidgetsはDemo落して見た方がはやいよ
0xffを-1と表示させたいんですが どうすればいいですか?
639 :
デフォルトの名無しさん :2007/09/29(土) 16:33:43
>>> import struct >>> print struct.unpack("b", struct.pack("B", 0xff))[0] -1
>>635 一般論として、ライセンスの条項は原文で理解するべきだと思うよ。
和訳はあくまで参考。間違いがあってライセンス違反になっても言い訳できない。
読んで分からなければ、分かる人に頼るべき。
641 :
デフォルトの名無しさん :2007/09/29(土) 17:59:34
python 2.5 を windowsXPで使ってます。 スクリプト内に os.getcwd() を書き、IDLEで開き、実行すると、 スクリプトファイルのあるディレクトリが返りますが、 タスク(スケジューラ)でスクリプトファイルを指定して、自動起動したとき、 os.getcwd() で返るのは、 c:\windows\ になってしまいます この時に、スクリプトファイル自身があるディレクトリを取得する方法はありますでしょうか?
ありますね
>>641 sys.argv[0]で取得できないかな?
できました ありがとう
647 :
638 :2007/09/29(土) 20:36:20
648 :
622 :2007/09/30(日) 08:22:09
>>624 >悪いが、JavaScriptコードがどこで得られたのか、
Pythonの処理で外部より得られたテキストコードを前提にしてます
>また、そのコードどこで動作させるのか文意から読み取れない。
PythonにJavaScriptを動作させるライブラリかなにかがどこかにないかと思いまして。
外部に渡すとか、
最悪自前でPython上で動くJavaScriptサブセットインタプリタを書こうかとも考えてます。
もっとも根本的に別の手段を使うことも考えてはいますです。
>「Python表記のスクリプト」とは何を表すのかよくわからない。
>「Pythonで書かれたJavaScriptインタプリタ」の意味にも取れるが
>第1文と矛盾しているように感じる。
ぶっちゃけiriaのスクリプトだったり…
Pythonの日本語ドキュメントのchmファイルはありませんか 正直探したけど見つかりません
dictのpop()は第2引数に任意の値をとることができ、かつ第2引数があるかないかで挙動が変わります。 d = {'a':10, 'b':20} d.pop('x') #=> KeyError d.pop('x', None) #=> 第2引数が返される このように、任意の値を取ることができる省略可能な引数がある場合に、引数が指定されたかどうかを調べるにはどうしたらいいですか。 例えば次のような定義だと、引数にNoneを指定した場合に例外が発生してしまいます。こうではなくて、引数が指定されなかった場合のみ例外が発生するようにしたいです。 (例が恣意的なのは突っ込み禁止) def f(arg=None): if arg is None: raise Exception() else: return None あとは *args とする方法も考えられますが、間違った数の引数を渡してもエラーにならないので、あまりいい方法ではないです。 def f(*args): if len(args) == 0: raise Exception() else: return args[0]
**kwargsを使えばいいんじゃね?
>>652 *argsで間違った数の引数を全部エラーにすればいい。
タプルで受け取るわけだからlenで数数えるとか
正攻法はNullObjectパターンだろうけど、
>>655 で十分なんじゃないの?と言う気もする。
class MyNullObject:
pass
def mypop(firstArg, secondArg=MyNullObject()):
if isinstance(secondArg, MyNullObject):
print "mypop(firstArg)"
else:
print "mypop(firstArg, secondArg)"
>>> mypop(1)
mypop(firstArg)
>>> mypop(1, 2)
mypop(firstArg, secondArg)
>>> mypop(1, 2, 3)
Traceback (most recent call last):
File "<pyshell#24>", line 1, in <module>
mypop(1, 2, 3)
TypeError: mypop() takes at most 2 arguments (3 given)
657 :
656 :2007/10/01(月) 21:18:19
正攻法どころかオナニーくさいぞw
659 :
652 :2007/10/02(火) 10:41:04
>>653-656 ありがとうございます。
言語機能として直接サポートしているわけではないようですので、656の方法を改良して使うことにしました。
_nullobject = object()
def f(arg1, arg2=_nullobject):
if arg2 is _nullobject:
print 'f(arg1)'
else:
print 'f(arg1, arg2)'
質問失礼します。 TypeError: text must be set to a wide string. こういうエラーが出るのですが、何が原因でしょうか? 分かる方お願いします。
| | ∩___∩ | | ノ _, ,_ ヽ (( | プラプラ / ● ● | (=) | ( _●_) ミ _ (⌒) J )) 彡、 |∪| ノ ⊂⌒ヽ / ヽノ ヽ /⌒つ \ ヽ / ヽ / \_,,ノ |、_ノ
ピリオドを付けてsplit()とかpop()とかread()を使うのってオブジェクト思考使ってるってことですか?split()とかpop()とかread()とかの招待ってclass:で作れる奴と同じですか???それでそれをインポートして使えるようにしているだけですか??
ピリオドを付けてsplit()とかpop()とかread()を使うのってオブジェクト思考使ってるってことですか? split()とかpop()とかread()とかの招待ってclass:で作れる奴と同じですか??? それでそれをインポートして使えるようにしているだけですか??
はい、そうですよ。
いやいや、そうとも言い切れません。
668 :
656 :2007/10/02(火) 22:56:33
>>659 それもいいですね。
IDLEを使ってるから、補完されるときにNullObjectって表示されるように
>>656 みたいにしてたんですけども。
[[1,2,3], [4,5,6], [7,8,9]] のリストから [[1,2], [4,5], [7,8]] を得たいんです。 forを使えば出来ますが、1行で記述可能であれば 教えてください。
a = [[1,2,3],[4,5,6],[7,8,9]] b = [0,1] [ [ t[i] for i in b ] for t in a ]
[ [x,y] for x,y,z in a ]
>>> a = [[1,2,3],[4,5,6],[7,8,9]] >>> [i[:2] for i in a] [[1, 2], [4, 5], [7, 8]]
>>> import numpy >>> a = numpy.array([[1,2,3],[4,5,6],[7,8,9]]) >>> a[:,:2] array([[1, 2], [4, 5], [7, 8]])
674 :
デフォルトの名無しさん :2007/10/03(水) 23:14:03
俺ならこうかなあ。 どっちにしてもfor使ってるけど。 [i[:-1] for i in a]
>>669 forを使わないって普通にこれじゃダメなのか?
>>> a=[[1,2,3],[4,5,6],[7,8,9]]
>>> b=[a[0][:2],a[1][:2],a[2][:2]]
>>> print b
[[1, 2], [4, 5], [7, 8]]
>>670-674 参考になります。有難うございました。スライス記法とか何か便利な関数があるのかと思いまして質問しました
>675
aの個数が固定ではないんです。
677 :
デフォルトの名無しさん :2007/10/04(木) 00:17:10
>>676 例の出し方がいまいちだったな。
各要素の始めの2個を取り出したいのか、最後以外を取り出したいのかで
>>672 や
>>674 のような違いがでてくるからな。
リスト内包表記を好んで書いてる人が多いけど、mapを使う人は少数派なのかな? a = [[1,2,3],[4,5,6],[7,8,9]] b = map( lambda x: x[:2], a ) print b
英語人じゃないので内包表記よりも 関数表記なmapでいい と思っていたが、 最近は内包表記に慣らされてきたw
dictから要素を削除するのは dict.pop(key, None) でよい?
そんな難しいことしなくても del a_dict[key] でいいんじゃまいか
説明不足でした。 delだと、keyがないときにKeyErrorが発生します。 keyかないときは例外を発生されるではなく、単にNoneを返すようにしてくれたほうがよかった気も質す。
消す消すと言ってたけど、結局残したでしょ。
filterも残り、reduceだけが消えた、 今のとこ
敢えて消す理由がわからん mapもfilterもlist内包で普通に代用できるが reduceは(少なくとも簡単には)代用できんように思える
688 :
デフォルトの名無しさん :2007/10/04(木) 11:45:53
そういう厄介なものだからこそ早いめに芽を摘んでおいたのかもしれん。
lambda も消えるんだっけ?
Guidoはlambdaが嫌いみたいで最初は消そうとしたが 代替物がないので残ることになった というのが経緯。
lambda中途半端だよね。
直前に名前付き関数つくるのがpythonicだと思うけど それを代替案としてうけいれられない方々もいるってことか。
functools.partialじゃ引数の指定できないときとか ドキュメントの引数の名前と実際の名前が違ってて調べるのマンドイ時だけど あとは)の連続になるのが嫌なときとか
lambdaが中途半端なのは事実だが、無いよりはマシだと思う でもこういう発想はどちらかと言えばPerl的かもな…… lambdaの中で副作用の無い式しか書けないことも、クロージャから レキシカル変数を参照はできても変更できないことも、なんだか中途半端だ そういう場合は関数オブジェクトを作れ、がPythonの解かもしらんが、それを 推し進めると、Javaのようになってしまう気がする
無名関数を作りたいことはあるよね。sort()関数のソート順指定とか。 そういうときに使うlambdaの代替手段がない,ということじゃないのかなあ。
ワンライナーで変数使いたいからlambda使ったりするなと言うことだろ
698 :
610 :2007/10/05(金) 01:38:43
reduceは消えて当然 右からか左からか分からない
ワンライナーに貢献しやすい機能は出来るだけ消したいんだろうな。 まあ消すと言っても、importすれば同等の機能は使えるみたいだし、いいんじゃない?
701 :
デフォルトの名無しさん :2007/10/05(金) 08:11:58
googleであるワードを検索して、それにヒットしたサイトを次々と巡回して その検索ワードの特徴を示す単語を抽出し、出現単語とその頻度を txtまたはcsvファイルに出力するプログラムを作りたいんですけど どうすればいいでしょうか?何かアドバイスお願いします。
Pythonって内部コードがUnicodeなのに,Windowsでファイル名を取得する時に UNICODEファイル名を拾って来る訳じゃ無いんだね. 非日本語なWindowsで日本語ファイル名のファイルが扱えなくて困ってしまった. 結局他のスクリプト言語使ったけど. v3.xxでは改善されてますか?
>>702 unicodeでファイル名を拾ってくるように指示すればいいじゃん
?
705 :
702 :2007/10/05(金) 09:57:38
>>703 レスどうも.
へぇ,出来たんだ. ヘルプを斜め読みしてすいません.
os.listdir(u"C:/")
こんな感じかな. いま試せないので今度やってみる.
>>701 > その検索ワードの特徴を示す単語
の定義がわからん。
pythonには、いわゆる定数ってないの?cの#defineとかc++の constみたいなやつ。もし無いとしたら、その理由はなんか あるんですか。あった方が圧倒的に便利だと思うんだけど。
タプル使えば良いんじゃね?
709 :
707 :2007/10/05(金) 22:43:45
rubyがYARVでPerlやPythonより速くなると喜んでる悲しい人たちがいますが、 Pythonは高速化する予定とかあるの?
アプリに組み込む用途だと、速さで有利なstacklessを採用するってのは聞いた事はある。 あと、IronPythonはCPythonより高速とか、JythonはJVMのパワーアップのおかげで CPythonより高速とかいう話はあるが、殆どの人はCPythonで十分と思ってるんじゃない? つか、ベンチで○○より遅いよ!という人はいるけど、 CPythonが遅くて本当に困っている人ってあんまり見かけた事無い。 ML見てると、時々出て来るけど、Guideもあまり興味はなさそう。 いつかParrotが実用に耐える代物になれば、動作速度の問題はそっちで解決するんじゃね?
>>710 Twitterの遅さを見るとRubyは使いたくないなあと思うます。
parrotなんて完成する見込みないでしょ
>>711 都市伝説を信じてしまう騙されやすい人ハッケソwwww
>>710 psyco使うと数倍速くなることがある
pypyはどうなってんだろ?
バッチ処理みたいのに使ってるんだけど、早いに越したこと無いよ? JAVA並みに早くなってほしいな。
>>715 pypyは高速化のためのプロジェクトなのか?
ぱいぱい?
>>715 知ったかぶりハズいwwwwwwwwwwwwwwww
自分で計算ゴリゴリするプログラムや、非常にシビアなレスポンスタイムや スループットを要求される類のプログラムなら問題だろうが、最初から そんなもんはPythonで書かんだろ。 今時のプログラムの多くはどうせネットワークだのI/Oだのがボトルネックなん だしな。 IronPythonはアセンブリをngenしといてもまだ起動がのろすぎると思った。 ちっとばかり実行時間が速いのかもしれないが、俺にはそっちのが問題だ。
rubyとpythonどっちが好きとかはあまりないつもりだったけど、 認定試験とかはじめたから・・・
認定試験とか、全然ハッカーっぽくないよな。なんかマイクロ豚が 考えそうな事だ。
まあ Ruby はさっさと JIS にでもなればいいんじゃないか
さっきTwistedを弄りはじめたのだけれど、 いわゆるハーフクローズを扱うにはどうすればいいのかな。 サンプルのechoserver.pyを試してみたんだが、 クライアント側がshutdownによってハーフクローズを行い、その結果として FINを受け取ると、送信すべきデータが残っていてもそれを破棄して クローズしてしまう。
>>721 そうかなあ。高級言語である関数型言語にもコンパイル型のはあるし、
コンパイルすればインタプリタよりは全然速いし。
OCamlなんかはJavaより速いようだけれども。
Paul Grahamの文章を読んだ時にも似たようなことを思ったが Matzはすこし自分に引き寄せて語りすぎだな ある言語に「どんなことが可能か」と「どんなことが簡単にできるか」というのは 違うし、ある言語であることが簡単に出来たからといって あらゆることが簡単にできるわけでもない 見方によっては、XMLはLispのS式の劣化再発明だろう プログラムの構文木だのデータだのを実行に組み立てたり書き換えたり 読み込んだりする能力を云々するのなら、Lispにまさるものはないということになる そういう面だけを言えばな
729 :
725 :2007/10/06(土) 14:59:30
自己解決した。IHalfCloseableProtocolとかをインプリメントするらしい。 ハーフクローズに対応したechoserv.pyは以下のようになるが、何しろ今日 弄りだしたばかりなので、これで良いかどうかは分からない (一応動いているように見えるけど)。 #!/usr/bin/python from twisted.internet.protocol import Protocol, Factory from twisted.internet import reactor from zope.interface import implements from twisted.internet.interfaces import IHalfCloseableProtocol class Echo(Protocol): implements(IHalfCloseableProtocol) def dataReceived(self, data): self.transport.write(data) def readConnectionLost(self): self.transport.loseWriteConnection() def writeConnectionLost(self): self.transport.loseConnection() def main(): f = Factory() f.protocol = Echo reactor.listenTCP(8000, f) reactor.run() if __name__ == '__main__': main()
>>716 それって処理系に依存しないところで
早さが決まってないか?
_ ( ゚∀゚)!
732 :
デフォルトの名無しさん :2007/10/07(日) 04:13:34
誰か次の再帰関数の再帰を除去してくれないか def func(seed): if seed ==[]: yield [] else: for n in seed[0]: for x in func(seed[1:]): yield [n] + x # f([[1,2,3],[4,5,6],[7,8,9]]) ド低脳の俺には再帰で書くのが精一杯。でもこの関数の再帰のオーバーヘッドが無視できないプログラムを書いているので 助けてスーパーハカー
別にスーパーハカーでも何でもないけど、こんなんでいいの? 単にリストをコピーしまくってるから遅いんじゃないのって気もするけど。 def f(seed): def i2val(lst): result = [ 0 ] * len(lst) for i in range(len(lst)): result[i] = seed[i][lst[i]] return result cur = [ 0 ] * len(seed) end = cur[:] for i in range(len(seed)): end[i] = len(seed[i]) yield i2val(cur) pos = right = len(seed) - 1 while pos >= 0: cur[pos] += 1 if cur[pos] < end[pos]: pos = right yield i2val(cur) else: cur[pos] = 0 pos -= 1
def getcolor_rgb(self, rgb) で受け取った引数を def setcolor_rgba(self, r, g, b, a) に渡したいんだけど、素直に setcolor_rgba(rgb[0], rgb[1], rgb[2], a) ってやるしかない?気分的には setcolor_rgba(*rgb, a) ってやれるとすっきりするけど、これだと構文エラーだし。
736 :
デフォルトの名無しさん :2007/10/07(日) 13:10:36
実は引数はリストのリストを要素とするので、その定義だと上手くいかないっぽいです。初めに書かなくてすいません。こんな感じに使ってます func([[[0, 1, 0, 1], [1, 0, 1, 0]], [[0, 0, 0, 0]], [[0, 0, 0, 1], [0, 0, 1, 0], [0, 1, 0, 0], [1, 0, 0, 0]]) =>全ての組み合わせ
>>735 def setcolor_rgba(self, a, *args)
setcolor_rgba(a, *rgb)
>>734 のコード見りゃどうやればいいか分かるだろ
後は自分でやれよ
早とちりしてました。正常に動作します。ありがとうございました
>>730 確かに原因の半分以上は処理系以外の部分で起こってるだろう。
でも、取り巻いてる環境が悪いことに違いないんじゃないかな。
python 2.5.1で >>> round(2.55, 1) 2.6000000000000001 >>> round(3.33333, 1) 3.2999999999999998 となってしまいます。上の例の場合、それぞれ「2.6」、「3.3」を出したいのだけど、どうすればいいのでしょうか? round()関数はこういう用途ではない?
>>741 いや、そもそも小数点型がそういう用途ではない。
外面を整えればいいだけなら文字列に変換すればいいが、
厳密に計算させる必要があるならdecimalでも使え。
>>741 表示が問題なだけなら
"%.1f" % round(2.55,1)
とかでいいだろ
文字列になっちまうが
pythonでWindowsのプロパティごとファイルをコピーする方法はある? copy2だとプロパティはコピーされませんよね。
>>744 その前に、「出来るWindows」って本を買ってきたほうが良いぞ。
ACLのことかExtended AttributesのことかStreamのことか
Extended Attributesだとしたら、手動でも全部を読むのは難しいんじゃないの?
>>741 >>> round(2.55, 1)==2.6
True
>>> round(3.33333, 1)==3.3
True
>>> 2.6
2.6000000000000001
>>> 3.3
3.2999999999999998
>>735 素直にやるなら
def setcolor_rgba(self, rgb, a)じゃないのか?
*arg は「可変」引数であって、rgbの長さは明らかに可変じゃない
>>735 > setcolor_rgba(rgb[0], rgb[1], rgb[2], a)
> ってやるしかない?
俺だったら気にせずそう書くか、あるいは
r, g, b = rgb
setcolor_rgba(r, g, b, a)
かな。
def setcolor_argb(self, a, r, g, b): return setcolor_rgba(self, r, g, b, a) とでもしといて setcolor_argb(a, *rgb) でいいんじゃね
うわ return self.setcolor_rgba(r, g, b, a) の間違い 多分returnいらんのだろうけど
753 :
デフォルトの名無しさん :2007/10/09(火) 00:04:29
Eclipse+PyDevつかってるやついる? PyDev が Python2.5の構文に対応するのはいつなんだろうか。 a = b if c else d がエディタ上で構文エラー扱いになってうざい
うちもエラーにならない Eclipse 3.2.2 PyDev 1.2.9
>>737 >>751 引数リストの長さが毎回変わる可能性のあるところ以外で可変引数を使うべきではない
*rgbって言いたいだけにしか見えない。
class RGB: 〜
無料レンンタル鯖でpythonの実験が出来るような都合の良いサービスって有りますか?
自分のPCにインスコして試せば?
>>758 実験を許してる所は無いんじゃないかな…
自分は Windows + Apache + Python の自宅環境で実験してからアップロードするけど
VMware + Linux or FreeBSD
>>753 Pydev Package Explorerから
Properties -> PyDev - project type
>>758 land.toってのが無料でpython(2.4らしい)が使用可能らしい
xreaは無料でpython可能みたいだけど今募集してない
実験内容がもう決まってるなら、有料サービスの無料お試し期間で実験という手も・・・、
764 :
758 :2007/10/09(火) 22:52:57
本音を言うと、実験とかじゃなくて、本サービスを始めたいんです。しかも無料で。 でも、とてもアマちゃんな考え方だと、だんだん自覚してきたので、海外の有料鯖を本気で探してみます。
・・・
バス停に20人の生徒が並んでいます。たかし君は前から5人目、 ひろこちゃんは後ろから8人目。たかし君とひろこちゃんの間に いる生徒の人数は何人か? とかいう問題をやってたのだけどpythonで解くとどうなりますか? 番組だとひろこちゃんが前から12番目だから len([5:12]) みたい に解いてました。小学2年生の問題で悩んでる俺d
後ろから8人目って前から13人目じゃね?俺の日本語の取り方がおかしいのか?
・・・まあ・・・頑張ってね・・・
c = range(1,21) len(c[5:-8]) でいいんじゃね
20 - 5 - 8 でいいんじゃね
先週末pyscripterとeclipseを落として使い比べてたとき どちらかでビルトインオブジェクトやクラスの引数とドキュメンテーション文字列のみの 一覧をモジュール単位で(エディター部と確か専用ペインにアイコン付で)表示出来たんですがどうやったのか忘れてしまいました どちらのソフトでどうやったら表示出来るんでしょう pyscripterのtools->source code views->documentationではありません 属性やクラスのアイコンの記憶からはpyscripterの方だったと思うんですが
>>770 だよなあ。たかし君ごと前を、ひろこちゃんごと後ろをブチ殺せば、二人の間の奴らだけ生き残る。
その表現はあまり感心しないぞ
小学生が大量殺人。動機は「算数の問題を解きたかった」
>>771 やりたいこといまいちよくわからないけど、Code Exploreで
左側のペインにClass一覧とか関数一覧は表示される > PyScripter
なんとかして文字列の中から2つ以上並んだスペースを1つのスペースに置き換えることって出来ないかなあ? 「あ_い___うえ____お」→「あ_い_うえ_お」 こんな感じで。 一度、スペースで切り分けて、スペースを除去してからスペースを一つつけてつなぎ合わせるしかないのかな???
# -*- coding: sjis -*- import re re_space = re.compile(u"_+") s, n = re_space.subn(u"_", u"あ_い___うえ____お") print s print n, u"回\u75f4\u6f22しますた(ぉぃ"
EclipseでPydevを使ってるんですが、日本語がどうしても使えません だれか使えた人はいますか?
((x0, y0), (x1, y1), (x2, y2), ...) っていうシーケンスから (x0, x1, x2, ...) と (y0, y1, y2, ...) の二つのシーケンスを生成するような 関数が標準ライブラリにあったような気がするんだけど、、なんだっけ? 与えられた座標の組から、最小のX、最大のX、 最小のY、最大のYをみつけだしたいんだけど どうもエレガントに書けないんだ
すみません。 スレッドの実行を、CPUのコアを指定して実行することはできないのでしょうか?
その表現はあまり感心しないぞ
a = [(0,1), (8,4), (4,0), (5,9)] print min(a, key=lambda p: p[0]) print max(a, key=lambda p: p[0]) print min(a, key=lambda p: p[1]) print max(a, key=lambda p: p[1])
a = [(0,1), (8,4), (4,0), (5,9)] import operator def f(scanfunc, i, seq): return scanfunc(seq, key=operator.itemgetter(i))[i] f(min, 0, a) f(max, 0, a) f(min, 1, a) f(max, 1, a)
787 :
786 :2007/10/11(木) 21:52:34
ごめん。
>>780 、
>>782 をちゃんと読まずに脊髄反射だった。
a = [(0,1), (8,4), (4,0), (5,9)]
zip(*a)
二つの辞書をマージする標準関数ってある? 地道に for k, v in dict2.items(): dict1[k] = v ってやるしかない?
>>788 dict1.update(dict2)
dict1.update(dict2)
あるオブジェクトがstringかlistか見分けるにはどうすればよいでしょうか?
isinstance type
795 :
793 :2007/10/12(金) 01:37:33
>>794 できました。どうもありがとう!
>>> s = 'hoge'
>>> isinstance(s, str)
1
>>> isinstance(s, list)
0
>>> l = ['foo', 'bar']
>>> isinstance(l, str)
0
>>> isinstance(l, list)
1
すみません。どうか教えてください。 hoge()は、「u."ほげほげ"」のように、テキスト以外に文字コードの情報が返ってきます。 print hoge() のように使う分には「ほげほげ」と表示されて便利なのですが、foo[]のようなものに対し、 while 1 foo = foo + hoge() このようなことをしていくと、[u."ほげほげ".u."ほげほげ".u."ほげほげ".u."ほげほげ"・・・・]となります。 (蛇足ですが、print fooをすると「u."ほげほげ"」が並びます。) もし、[ほげほげ,ほげほげ,ほげほげ,ほげほげ・・・・]という配列を得たい場合、元のhoge()に手を加えずに対処するとしたらどうすればよいのでしょうか?
>>796 u"ほげほげ"みたいな文字列はprintすると
出力先にあった変換が適宜されて"ほげほげ"となるけど
配列(list)ではそうならないだけです。
出力のちがいだけなのでちゃんと配列としては取得できています。
要素ごとに
for e in foo: print e
なんてすると"ほげほげ"……と出ますから。
どうしてもprint fooで期待している出力がほしいなら
標準の配列(list)を拡張したクラスをつくって
その__str__()メソッドを変更すればいいはずです。
foo.__str__()を行えばなんとなくわかると思います。
u."ほげほげ"の意味がわからん。どういう表現?
目かディスプレイかフォントが悪くて なんて書いてあるかよく見えてないんじゃね?
>>796 ちゃんと動くコード例と実際の出力例をコピペして質問し直す方がよい希ガス。
素人用にチュートリアル載せてくれる有志のサイトはありがたいんだけど 基本的にリストの中身は元のオブジェクトの山椒で元のオブジェクトに変更 を加えるとリストの内容も変わってしまうとはっきり赤太字で書いてほしいよ 以前pythonを習得するのに超絶クールなテトリスゲームを作ってみたんだが ブロックの配列がめちゃくちゃになって原因が分からず苦労したのよ とりあえずリストをタプルに変換したりすると解決したからもういいけど あれ不要な混乱もたらしてるからマジでさ勝手に山椒になるのは便利だと思うけど そこんとこはっきりさせておいてよな?????????????????
>>801 >元のオブジェクトの山椒で
山椒だったとは知りませんでした!
ありがとうございました!!!
山椒うまいよな。タケノコ食べたくなる。 >801 何書いても誰かどっかでハマって、結局赤太字だらけになると思うよ。
つまり、Pythonは小粒でもぴりりと旨い、と。
どっちかってと大粒な気もするが (言語仕様だけなら小さい方なのかな)
>>801 俺も、4年ほど前の研究日誌というかメモ書きみたいなのを読みかえしてみると、
「パイソンが便利そうなので使ってみた。」とあり、次の日、
「意図せぬうごき。何時間も無駄にした。配列の複製がまずい?言語のバグか?」とある。
さらにその次の日に「指しているアドレスが同じだ。コピーのしかたがわからない。まさかforループ?」と。
その後へこたれてしばらくPythonを使わなかった記憶がある。
航海日誌みたいだな
808 :
デフォルトの名無しさん :2007/10/12(金) 19:21:13
httplib2のhelpを見ようとしたら例外が発生するんだけど俺だけ? import httplib2 help(httplib2) IndexError: list index out of range
手元の Python2.5.1(Win32) + httplib2-0.3.0 だと問題なくヘルプでた。
Vistaでも大丈夫かな? これから勉強したいんだけど。
>>810 32Bitだよね。32Bitならpython2.5 + wxpython エディタは
PyScripterで動かしてるよ。インスコも簡単だったよ。
>>809 ActivePython 2.5.1 + httplib2-0.3.0なんだけど何でだろ。
ActivePythonとPythonで動作が変わるとも思えんし。
>>811 Vista+Pyscripterはすぐ落ちるんで使ってないな。
814 :
810 :2007/10/12(金) 21:47:53
>>811 そうです!
できるんだー。ネットで検索したら「PythonはVista未対応」みたいな
掲示板がひっかかったものですから。
ありがとうございます!
815 :
810 :2007/10/12(金) 21:50:16
>>813 何をお使いですか?
Vista機以外?
816 :
デフォルトの名無しさん :2007/10/12(金) 22:06:46
>>257-
>>265 ‘/少しだけ計算しようと思ったのですが…
bit.って…
wxPython + pyOpenGL + PIL をつかったツールを作ったんだけど、 スタンドアロンでも動くように、 python.dll, opengl.dll, glut.dll, と Python 環境をまるごと ひとつにまとめてみたら 40MB 以上もするのでびっくり。 プログラムが動く範囲ででいる限りファイル削って行ったら それでも20MBもあるんだけど、こんなもんなのか??? ちなみに wxPyhton(wxWidgets) 部分だけで10MB以上あるんだけど。。。。 こうなったら Python + wxPython をインストール してもらった方がよっぽど楽なのかなあ そうすればPyOpenGLとPILのランタイムを同梱するだけで済むし。
会社で独自のスクリプトシステム(先進的、専門的な機能は全くない)を使ってる。 そこで上司に提案した。 「Python つかったらどうすかね?」 「それって日本語つかえるの? いや、識別子に。」 「NO」 「じゃだめだな。日本語使えた方が楽だから」 。。。どうにかしてください ソースいじって日本語識別子つかえるようになるんだったら 考えても良いかもとか言い出して、もうありえないです プログラム中の2バイト識別子を全部アスキー文字に変換するコンバータ つくってからもういちど提案してみようかな。なんかすごい無駄な事してる気が。。。 とにかくスクリプトシステムの保守管理がばからしくて仕方ありません。
>>819 そんなもんだと思うよ
zipに固めるともうちょっと縮むけどリソースファイルを持ってるモジュールは使えなくなるかも
py2exeのzipextimporter使えばzipから.pydと.dllをインポートできるようになる
NSISとか7z SFXでインストールパッケージにすれば半分くらいになるんじゃないかな
>>820 マ板の「この会社辞めようと思った〜」系のスレに書いた方がいいような気も。
python3000使えばいんじゃね?
>>820 なでしこでも使かったほうがいいんじゃねーのwww
そこで代アニスクリプトですよ!!!
日本語みたいに揺らぎが大きい言語を識別子に使おうという神経。 正直信じられないよ。
表意文字の漢字最強
表意文字と表音文字がごちゃ混ぜの日本語ってとんでもないクソ言語だよね
Aさんの書いたdbモジュール: class インタフェース: def 解放(self): ... それを使うBさん: import db データ = db.インターフェイス() ... データ.開放()
クラス名やメソッド名はPEP8に則って欲しいな。
いちいちコーディングの際に仮名漢字変換なんぞやってられないし 和文用にはロクなスペルチェッカもない
>>831 import db
データ=db.インターフェース()
Attribute error (wwwwwwwwwwwww
久しぶりにPyPyのページを覘いたら1.0がリリースされていて驚いた。 まったく話題になってないのでまだリリースまで時間がかかるのかと思っていた。 このスレじゃPyPyは誰も使わないし、興味もないのか?
837 :
デフォルトの名無しさん :2007/10/13(土) 22:53:52
pythonでSSLを使った通信を行うにはどうやればいいですか? httplibのHTTPSConnectionとか使うのかと思ったんですが、 IDやパスワードの指定の仕方などがよく分かりません。 教えていただけるとありがたいです。
日本語識別子に2バイト記号使われた時の うざさは異常。 せめて2バイト空白文字とか2バイト算術演算記号は使えないようにしてほしい def ア+B#ア(a): print a アイ%テム = "HELLO" ア+B#ア(アイ%テム) とかされたら死ぬ
import re as キャハッ♪ import urllib as /^○^\チョッモランマァーッ! 以下ry
Djangoのいい解説書ってない?
844 :
デフォルトの名無しさん :2007/10/14(日) 00:14:18
>>838 >>839 ありがとうございます。すみません。
調べ不足でした。
初めはurllib2を使って、ハンドラにadd_passwordでID等を
指定してみてたのですが、うまくできず、他の方法を探しているところでした。
socket.ssl()についてはまだよく分かっていませんが、ID等の指定は
HTTPSHandlerで行うのでしょうか?
日本語って、ローマ字表記の日本語にすればいいでしょう。 sou sureba banji kaiketsu. douon igigo ga ookutemo kini sinai.
ttp://www.python.org/dev/peps/pep-3117/ def normpath?(path?)?:
"""Normalize path, eliminating double slashes, etc."""
if path? == '':
return '.'
initial_slashes? = path?.startswith?('/')?
# POSIX allows one or two initial slashes, but treats three or more
# as single slash.
if (initial_slashes? and
path?.startswith?('//')? and not path?.startswith?('///')?)?:
initial_slashesN = 2
mac で見てるとんだけど
>>846 が
def normpath?(path?)?:
って化けてる。? の部分には本当はどんな文字が?
>>843 ApressとSamsから今年中に出るよ
あと文書の作成日もね。
標準出力で改行コード変換が行われてしまうのを防ぎたいのですが、可能でしょうか。 WinXP + SP2, python 2.4です。 import sys out = open('hoge.pdf', "rb").read() open('hogehoge.pdf', "wb").write(out) sys.stdout.write(out) などとして python del.py > fuga.pdf すると、hoge.pdfとhogehoge.pdfはもちろん同一ですが、fuga.pdfには余計なCRが混じります。 fileではバイナリモードにできたが、stdoutでその方法がわからない、という状況です。 方法など御存知の方、何卒御教示下さい
>>851 # 標準入出力をバイナリモードに変更(Windowsのみ)
try:
import msvcrt
except ImportError:
pass
else:
for fd in (0, 1):
msvcrt.setmode(fd, os.O_BINARY)
これ?
>>848 キモ!!!!!!!!!!
なんだこれはww
>>853 明示的な型宣言の要望は昔からあったからな、
unicodeを使う理由は、可読性を重視した結果らしい、
識別子だらけになるよりは一文字でビシッと表したほうが結局読みやすくなる、
perl6なんかもすでにunicode演算子導入してるし目新しいことじゃない
このsuper()の使い方ってどこが間違ってるんべ? class Aaa(): def __init__(self): class Bbb(Aaa): def __init__(self): super(Bbb,self).__init__(self) yyy = Bbb()
>>856 ありがとう!
でも、ちょっとググって見たけどよく分からないぽ・・・・
そもそもこんな感じで使うものではないのかしら?
>>836 C,LLVM,JavaSpript,CLI,JVMに変換できるって書いてたけど全部ネタなのか?
860 :
851 :2007/10/14(日) 21:43:23
>>852 お返事ありがとうございます。意図した動作になりました!どうもありがとうございました。
861 :
デフォルトの名無しさん :2007/10/15(月) 00:20:50
javascriptの>>>(符号を考えずに右シフト)をPythonで行うにはどうしたらいいでしょうか? 普通の右シフトしかなさそうなので…
年月日から曜日を計算しその月のカレンダーを表示する事をプログラムを考えてます
http://pict.or.tp/img/26648.jpg で可能ですが、
>Python にはcalendar モジュールが備わっており、cal(y,m) に相当する関数prmonth(y,m) が存在する。
>これを使って1752 年9 月のカレンダーを表示させると・・どうプログラムすればいいのでしょうか
from math import*
print prmonth(1752,9)
#----------------------------
from prmonth(y,m) import*
print prmonth(1752,9)
どちらもエラーが出てしまいます。教えて下さいませ
from calendar import prmonth prmonth(1752,9) #なんでmathモジュールだと思ったの?
>>864 初心者な者で・・
出来ました。有難う御座いました。
初心者っつーか粗忽者
>>> h = [[1,2],[3,4]] >>> [l for l in h2 for h2 in h] [3, 3, 4, 4] [1,2,3,4]を期待してるんだけど・・・ なんで3,3,4,4?
>>867 コピペしたけど我が家では動かんね。
h2という意図せぬオブジェクトが残っているか、
リストのサイズが無理やり整数型になっているかじゃないの?
>>848 というより、なんでシオカンアップローダーなんだよw
>>867 [l for l in h2 for h2 in h]==[l for in h2]
871 :
870 :2007/10/15(月) 10:49:55
間違えた [l for l in h2 for h2 in h]==[l for l in h2]
>>867 逆だ
[l for h2 in h for l in h2]
873 :
867 :2007/10/15(月) 12:00:31
>>868 >>870 直前に[h2 for h2 in h]を実行してて、h2が残ってた・・・orz
それと、ジェネレータ式を理解せず勘違いしてた。
>>> h2
[3, 4]
>>> [l for l in h2 for h in range(2)]
[3, 3, 4, 4]
と同じでした。
>>872 の式でやりたいことができました。
精進してきます。ありがとん。
すみません from BeautifulSoup import BeautifulSoup a = BeautifulSoup("<html><body>asdfasdf</body></html>") print a.body.string これがRuntimeError: maximum recursion depth exceededで通らず、 from BeautifulSoup import BeautifulSoup a = BeautifulSoup("<html><body>asdfasdf</body></html>") print u"%s" % a.body.string##ここにu"%s" %を追加しただけ これがエラーにならずasdfasdfと返せるのはなぜなのですか?
>>838 リンク踏んだらページがあってびっくりした
877 :
874 :2007/10/15(月) 21:35:55
>>876 それはいいこと聞きました。
少し環境を変えていろいろ試してみます。
俺んとこでも起きない。 BeautifulSoupは最新版かい?
879 :
874 :2007/10/15(月) 21:49:22
>>878 どうもありがとうございます。
BeautifulSoupは最新版です。
しかし、少し気になるのはWindows+Python2.5の組み合わせなんです。
Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32
とりあえずこれとは違うものを試してみようと思います。
cookielibを使いながらCookieヘッダに任意の文字を書き足す方法ってあるのでしょうか? どうにもうまくいかない・・・ 素直に自力で全部やれってことなのでしょうが・・・
>>869 ついついいつもの処をつかってしまったニダ
ケナンチャヨ
1から18までの数を単に乱数で10回決めるには、 from random import * for i in range(10): r = int(18*random())+1 print r で済みますが 例:期待値 [ 20,5,7,3,35.4,・・・・]がある場合の乱数値「r」を 決めるにはどうプログラムすればいいのでしょうか?
日本語でおk
任意のリストからランダムにとりだすってこと? LIST = [20,5,7,3,35.4] import random for i in range(10): print random.choice(LIST)
885 :
デフォルトの名無しさん :2007/10/16(火) 10:52:29
randomのパッケージがなんかうまくいかなかった気がする
886 :
882 :2007/10/16(火) 12:25:32
すみません 言葉が足りませんでした 例えば、競馬にオッズがありますが、それに対応(考慮)したランダムな当選を決めるにはどうしたら? と、いう事です。
>>886 倍率を展開した配列作って、そこからランダムでいけない?
>>887 すみません 決まったデーターを使用したいです
>倍率を展開した配列
だと、とどうなるのでしょうか?
>>887 よく考えたらおっしゃる意味が分かりました
ぜひお願いします。
意味が分かったんなら自分で書けるんじゃん
母集団の補正ですね
これそれぞれの言語に対する回答者のイメージを根拠に診断してるのかな? なんか意味あるの?
他の言語の速さとか変態性とか開発環境とか全然分からんわ
まずiphoneがないから・・・
898 :
デフォルトの名無しさん :2007/10/17(水) 21:04:34
PythonでのGUIは何使っていますか? tkを使おうかと思ったけど、見掛けが標準的なものでないし wxWedgetだと、配布するとき大変だし、 Qtはライセンスが気に入らないし これはというものがないですよね
GUIで書いたことないから分からんけどwxって配布大変なんだ GTKもあるよね?それはどうなの?
>>900 wxはサイズが50Mぐらいになるらしいよ
> Qtはライセンスが気に入らないし 気に入らないのは GPL? Qtライセンス?
904 :
デフォルトの名無しさん :2007/10/17(水) 22:35:00
Pythonは3.0(2.6?)になって結構変更が多いらしいですが、 その辺をまとめたサイト等あれば教えて下さい 特に互換性がなくなる要素など
906 :
899 :2007/10/17(水) 22:46:59
QtのGPLが嫌いです PyGTKはチェックしてませんでした、これを使ってみようか検討してみます PyObjCはMac専用なので、私の環境でた対象外です
908 :
デフォルトの名無しさん :2007/10/18(木) 02:20:12
>>902 そんなになるわけないだろ。
5Mぐらいで配布できる。
完全スタンドアロンで Python2.5+wxPython+OpenGL+PIL+msvcr71.dll を含め、 DLLの再コンパイルなどせはず、標準のままの状態で(ただし未使用のファイルは取り除いておく) zipで最高圧縮かけて 7MB だったよ
>>902 マジで50Mすげえな
そんなもん使ってられっかよ!!
tkかQtならサイズが小さくなると言うのか?
>>911 tcl84.dll 650Kぐらい
tk84.dll 800Kぐらい
tkinter.pyd 40Kぐらい
サイズだけ言ったら天地ほども違うんじゃないかな。
wxWidgetsはメガ級のDLLがゴロゴロあって、Python側のスクリプトも
ほぼコンポーネント毎に(つまり大量に)存在する。数えたくも無いぐらいだね。
>>909 7MBが本当なら、
wx勉強する気になった。
tkはtcl読まなきゃならんし、外観がネイティブじゃない。 機能もwxの方が豊富なのは確かだから数MB位は我慢できるだろう。
自分で使うだけならwxでもなんでもいいけど、配布する場合は軽くしたいよね でも、自分で使うだけなら簡単で標準のtkも悪くなさそう
もしMacもってるならPyObjCが最高の開発環境だ。 配布バイナリは小さくてすむし、Cocoaが使えるからエレガント。
PyPyが動くようになるか、 Pythonコンパイラがあれば配布が楽になるんだが、 誰か作らないかな。 昔はあったんだけどなあ
Linuxだったら普通はライブラリとか同梱しないし Windowsならwin32uiとかvenster使えばいいんじゃねーの
そういやPythonがデフォルトで入るディストリビューションってどこらへんなの? 入る・・・・RHELとその互換、Fedora 入らない・・・・Debian系、SuSE系 こんな感じなのか?
WTLでGUIを書いてboost.pythonでpythonをembedするのが最強じゃね
つIronPython
つJython
つSamson
926 :
デフォルトの名無しさん :2007/10/19(金) 00:34:32
>>921 Debian系でもPythonは標準でインストールされるよ
>>921 Xenを動かすために必要だからかなりのディストリビューションでインストールされるんじゃないのか。
ubuntu でも最初から入ってた気がする
最近のはPythonが入ってないほうが珍しい
930 :
デフォルトの名無しさん :2007/10/19(金) 14:13:58
pythonでブラウザーで動くjava appletみたいなのを作りたいのですが 何か方法はありますか?
似たような質問をどっかで見た気が
jythonならブラウザーで動くjava appletそのものが作れるわな。
十三日の金曜日ジェイソン
934 :
デフォルトの名無しさん :2007/10/19(金) 17:05:55
jythonってSunが支援してはいないよね 将来性が少し心配だよ
>>508 二回close()でエラーが発生する?
>>935 Rubyサポートしてるからしてないんだろ。
Pythonが広まればJavaに影響があるからしょうがないと思うけど。
./ |-/自分のライブラリのディレクトリ/ # DirA |-/他人のライブラリのディレクトリ/ # DirB |-/メインのプログラム開発用ディレクトリ/ # DirC というディレクトリ構造で、 DirCから、DirA/DirB内のモジュールをimportしたいとき、 sys.path.insert( 0, os.path.abspath("../") ); とやってpathに追加してるんですが、これっておかしいですか? 環境変数に追加するのは汚くなりそうなんでやめてます。
こんなんでいいのかな? import imp # import ../foo.py info = imp.find_module("foo", ["../"]) foo = imp.load_module("foo", *info) PEP328 が実装されれば簡単に出来そうだけど
941 :
938 :2007/10/20(土) 03:27:07
Pythonの高速化を誰かやって欲しいな。 そうすればC拡張を使わなくていいから 用途によってIronPythonやJythonを使いやすくなるのに
rubyからやり直してこい
Cythonなんてだめかい?
とりあえずpsycoとか。
>>945 が import impo に見えた俺は包茎
1ファイル1クラスでモジュールを書きたいんだけど、 たとえば graphics パッケージに texture.py があって、 そこで Texture クラスが定義されていた場合に import graphics t = graphics.texture.Texture() てかかなきゃいけなくなるんだけど、 モジュール名とクラス名が必ず一致するというか、 冗長な感じがするのでできれば import graphics t = graphics.Texture() て感じでアクセスできるようにしたいんだけど、できる?
import graphics.texture
>>946 どうやったら見えるんだとつっこんでみるw
>>947 漏れなら texture.py に Texture インスタンスを生成するメソッド new を定義して
from graphics.texture import Texture
t = Texture.new()
とかする
使い慣れてる人は @classmethod するかもしれない
>>947 graphics の __init__.py に
from texture import Texture
と書いておくのは駄目?
>>945 pyscoなんてもうwindows環境ぐらいしかまともに動かないんじゃない?
おまえらproperty使う派? それとも、setter/getter公開する?
setter/getterは作らない。 特に何もなければ、変数を直に触らせて、何らかの処理が必要ならproperty。 python的には、これでいいと思ってる。
クラスの仕様が流動的な場合はsetter/getterを書いて
最初からかっちりしてる場合は
>>954 みたいにしてる。
>>955 Pythonだったら変数を直でさわるのは問題ないだろ。
作る側が注意するんじゃなくて使う側が注意するのがPython。
変数を直でさわらせないようにしても、変数を隠せないんだから。
955みたいなスタイルに異論を唱える奴は 自分の能力の低さを露呈していることにいい加減気付よwwww
スタイルに異論を唱える奴==能力が低い奴 なんて考え持ってる方がやばいと思うけど。 異論を唱えてスキル高いやつなんか大量にいる。 こうやって下の奴に追い抜かされてくんだろうな・・・ 明日は我が身か?w
ZIPでくれ
>>958 クロージャを利用して、アクセッサ以外から絶対に触れないデータは作れるよね。
そんなことをする意味があるかどうかは知らないけど。
個人的にはPythonに静的片付けのある言語同様の考え方を適用するのは
ナンセンスだと思っているから、大筋ではあなたに同意。
class Foo:
def __init__(self):
hidden = [ None ]
def _setName(x): hidden[0] = x
def _getName(): return hidden[0]
self.setName = _setName
self.getName = _getName
propertyって継承するとき面倒なんだよね
967 :
961 :2007/10/20(土) 20:40:25
スマン、アンカー間違えた 955ではなく954だ
968 :
953 :2007/10/20(土) 21:15:12
>>> foo = Foo() >>> foo.setName('foo') >>> foo.getName() 'foo' >>> foo.getName.func_closure (<cell at 0x012B4330: list object at 0x012B20F8>,) >>> foo.getName.func_closure[0].cell_contents ['foo']
972 :
デフォルトの名無しさん :2007/10/20(土) 21:56:07
pythonにOO的なモノを期待しちゃいけません
973 :
965 :2007/10/20(土) 22:00:22
>>972 それはOOの定義によるんじゃないの
OO=カプセル化、ではないのだし
>>968 >>> class A(object):
def getfoo(self):
return 'foo'
foo = property(getfoo)
>>> a = A()
>>> a.foo
'foo'
>>> class B(A):
def getfoo(self):
return 'foo in B'
>>> b = B()
>>> b.foo
'foo'
>>> b.getfoo()
'foo in B'
>>> super(B, b).getfoo()
'foo'
導出したら再定義しろってことなのかな
DjangoってFreeBSDで使えるかな?
>>975 getFooではなくfooを公開インタフェースにするんなら、
class BでgetFooなんかじゃなく、fooを再定義すればいいのでは?
>>976 CPythonのバージョンがDjangoの動作条件を満たせば動くんじゃない。
>>> class SmartProperty(property): def __get__(self, instance, owner): fget = getattr(instance, self.fget.func_name, None) if hasattr(fget, '__call__'): return fget() return self.fget(self) >>> class A(object): def getfoo(self): return 'foo' foo = SmartProperty(getfoo) >>> a = A() >>> a.foo 'foo' >>> class B(A): def getfoo(self): return 'foo in B' >>> b = B() >>> b.foo 'foo in B' こうか
>>979 >>> class B(A):
... def getfoo(self):
... return 'foo in B'
... foo = property(getfoo)
これじゃ駄目なのか?
少し古い話題だけど、GUIで最強なのは Jython + Swingだろ
Jythonって最新で2.2とかなんだっけ
>>982 そうだよ、そして、いつ次のバージョンが出るのかも不明
読みは「じゃいそん」でいいのだろうか
Jython は 2.2.1 が出ているのに気付かれない要らない子
インリンオブJython
>>984 ホッケーの仮面つけたままリサイタル開きそうな名前だな。
混ぜるな危険w
989 :
デフォルトの名無しさん :2007/10/21(日) 18:21:19
JythonってJrubyみたいにコンパイルしてるの?
>>987 素でじゃいそんだと思ってたんだがマジョリティの読み方は何なんだ?
ジェイソンじゃないの?
Jythonと書いてジェイソンと読ませるはず
996 :
デフォルトの名無しさん :2007/10/21(日) 19:53:43
pythonでAOPは使える?
pythonでlzhのファイルを解凍する方法ってどうするの?
>>997 python Lha で検索してみたけど、ライブラリなさそうだね。
外部コマンドとして lhaコマンドを呼び出すしかなさそう。
999 :
デフォルトの名無しさん :2007/10/21(日) 21:59:26
>>997 ctypeを使ってUnlha32.dllを使えばいいんじゃないの
ctypeじゃなくてctypesだ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。