Pythonのお勉強 Part20

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1181064980/
日本Pythonユーザ会
http://www.python.jp/
Python オフィシャルサイト
http://www.python.org/
FrontPage - Pythonのお勉強
http://python.rdy.jp/

<関連スレ>
Microsoft IronPython 1.0
http://pc11.2ch.net/test/read.cgi/tech/1157686822/
Python の宿題ここで答えます Part 1
http://pc11.2ch.net/test/read.cgi/tech/1153585095/
2ch検索: [python]
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python

<参考サイト>
Python ドキュメント
http://www.python.jp/doc/release/
Dive Into Python
http://diveintopython.org/toc/
PEP(Python Enhancement Proposal
http://www.python.org/dev/peps/
2デフォルトの名無しさん:2007/08/17(金) 11:28:39
<最近のPython紹介ページ>

まだPythonに深入りしてない人向けの紹介記事。

Python 調査報告
http://cydn.cybozu.co.jp/files/python_survey_at_cydn.html
On Python
http://www.shido.info/py/
Python 講習会 資料
http://www.unixuser.org/~euske/doc/python/tutorial0917.html

<応用、コードサンプルなど>

プログラミング言語 Python のページ
http://ymasuda.jp/python/

以下、英語のサイト

Python snippets
http://sebsauvage.net/python/snyppets/
Python 201 -- (Slightly) Advanced Python Topics
http://www.rexx.com/~dkuhlman/python_201/python_201.html
ASPN Python Cookbook
http://aspn.activestate.com/ASPN/Cookbook/Python/

以上
3デフォルトの名無しさん:2007/08/17(金) 14:24:12
>>1
乙です。
4デフォルトの名無しさん:2007/08/17(金) 16:02:44
>>1
print unichr(reduce(lambda x,y: x|y, [1<<n for n in [0,3,4,6,9,10,11,14]]))
5デフォルトの名無しさん:2007/08/17(金) 16:10:23
なんて回りくどい・・・
6デフォルトの名無しさん:2007/08/17(金) 16:36:44
ワロタ、どうやって作ってるんだ?w
7デフォルトの名無しさん:2007/08/17(金) 16:37:30
あ、言い忘れた、>>1おつ
8デフォルトの名無しさん:2007/08/18(土) 08:10:04
>>6
ユニコードで(最下位桁を0桁目として)0, 3, 4, 6, 9, 10, 11, 14桁目のビットが立ってる文字
つまり0b0100111001011001 = 0x4E59が「乙」の文字。
9デフォルトの名無しさん:2007/08/18(土) 14:21:26
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では
書き直しが面倒なんです。
11デフォルトの名無しさん:2007/08/18(土) 17:49:52
def fff():
 print "fff¥n"

mmm.fff = fff

でどうでしょう
12デフォルトの名無しさん:2007/08/18(土) 17:51:04
setattr(mmm, 'fff', hoge)
モジュールもクラスもインスタンスもこんな感じで上書きして動作変更できるけどuglyなのでやんない方がいいだろうね
1310: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()を試したが、これは自分自身のスレッドを殺すだけで、他のスレッドを殺すことは出来なかった。
1615:2007/08/19(日) 11:02:21
handle_requestにタイムアウトとかを設定できたら、
タイムアウトの間隔で別スレッドが生存しているかフラグチェックあ出来るんですが。
17デフォルトの名無しさん:2007/08/19(日) 12:41:50
thread.start_new_threadを使うとか、threading.Thread#setDaemon(True)で
デーモンスレッドにすれば子スレッドを終了させることはできる。しかし、
タイミングによって終了時に例外が出たりするので、タイムアウトでフラグ
チェックなどの方法が取れるならその方がいいとは思う。
1815:2007/08/19(日) 13:06:11
サンクス setDaemon(True)で解決しました。
通信途中で強制的にスレッドが落とされたらどうなるかはこれから実験してみます。
19デフォルトの名無しさん:2007/08/19(日) 15:12:13
python使うとちんぽの皮がむけると聞いて始めてみたのだけど、
python3000はいつごろ出るんだい?
20デフォルトの名無しさん:2007/08/19(日) 15:34:39
当然西暦3000年です
21デフォルトの名無しさん:2007/08/19(日) 17:09:42
こんな一通の手紙が仏壇の奥に隠されてありました…

「現在2007年。僕は君の何世代も前のおじいちゃんなんだけど、ちょっと頼みごとがあるよ。
今すぐネットで「python3000」ってググってみて。それらしきサイトを発見したら、pythonのマニュアル探して、
2007年8月19日の僕にメールで教えてくれないかな?そしたら、僕のPCに保存してある×××動画とか、
モザイク無しの○○○エロアニメを送るからさ!!じゃヨロシク!!」

お爺ちゃんまじウゼェ。993年も前にどうやってメウエルで超光化学分子デプレサー送信しなきゃなんないんだよ。
22デフォルトの名無しさん:2007/08/19(日) 18:59:13
993年後もGoogleは存在するのか。
23デフォルトの名無しさん:2007/08/19(日) 19:42:32
だれかPythonでシューティングとかオセロとかゲームプログラミングしてたら
よければソース見せてください
24デフォルトの名無しさん:2007/08/19(日) 20:00:33
25デフォルトの名無しさん:2007/08/19(日) 20:07:22
Beautiful is better than ugly.

キモオタやデブはPythonを使うな、ということか。。。orz。。。
26デフォルトの名無しさん:2007/08/19(日) 20:08:53
まさに真理だなw
27デフォルトの名無しさん:2007/08/20(月) 02:43:19
>>19
αが今月の終わりか来月の頭に出るらしい。
http://mail.python.org/pipermail/python-3000/2007-August/009416.html

予定によれば、正式版リリースはさらにその1年後、・・・
http://www.python.org/dev/peps/pep-3000/

ただその最中にpy2.6が出るので結構忙しそうな気もする、・・・
28デフォルトの名無しさん:2007/08/20(月) 19:10:28
スレが自演臭いクソオタに占拠されている件。
29デフォルトの名無しさん:2007/08/20(月) 19:14:14
>>2
>まだPythonに深入りしてない人向けの紹介記事。
ry
>On Python
>http://www.shido.info/py/

正直ねえよwwwwwwwwwwwwww
30デフォルトの名無しさん:2007/08/21(火) 02:05:20
親クラスの任意のメソッドをデコレートするbeautifulな書き方ってない?
たとえば、cmd_
3130:2007/08/21(火) 02:06:58
わりぃ、書きかけ入れちゃった。

親クラスの任意のメソッドをデコレートするbeautifulな書き方ってない?
たとえば、"cmd_"で始まるメソッドを全てとか。
今試しているのは、getattrとsetattrだけど。

class B(A):
32デフォルトの名無しさん:2007/08/21(火) 03:54:55
メタクラ(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
33デフォルトの名無しさん:2007/08/21(火) 05:58:24
スレが自演臭いクソオタに占拠されている件。
3432: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
自演ではない。
クソオタは否定できないかも知れない・・・
占拠はしていない。
35デフォルトの名無しさん:2007/08/21(火) 07:17:59
急いでないなら、クラスのデコレータを待てば?
36デフォルトの名無しさん:2007/08/21(火) 08:57:13
django で postgresql 使うように設定して syncdb したら psycopg モジュールがないって怒られた。
apt で psycopg インストールしてみたんだけど 2.4 用みたいで、同じエラーがでた。

環境は debian etch で python 2.5 でやろうとしてるんだけど 2.4 使うしかないんだろうか?
37デフォルトの名無しさん:2007/08/21(火) 15:33:50
Pythonで、アプリケーションを起動できる
簡易ランチャを作ろうとしているんですが
sys.popen等で起動すると、スクリプト自身が
終了待ちしてしまいます。

スレッドで走らせるのも、何か違うと思いますし
何か良い手立てはないですか?
38デフォルトの名無しさん:2007/08/21(火) 16:08:15
>>37
subprocess.Popenかos.spawn*
3937:2007/08/21(火) 16:12:09
>>38
出来ました。
ありがとうございました!
40デフォルトの名無しさん:2007/08/21(火) 22:01:02
>>36
aptじゃなく、手動で入れてみたら?
41デフォルトの名無しさん:2007/08/22(水) 18:05:40
Turbogears が Pylons ベースになるらしいね
http://groups.google.com/group/turbogears/browse_thread/thread/d1d2e416023e7033
42デフォルトの名無しさん:2007/08/22(水) 18:27:55
>>41
そんな1ヶ月以上前のネタを繰り返さなくても
43デフォルトの名無しさん:2007/08/23(木) 03:54:26
mysql向けに、文章のエスケープ処理をしてくれるようなモジュールってありませんか?
44デフォルトの名無しさん:2007/08/23(木) 07:47:34
こういう書き方って合法的?

>>> def a():
...    yield 1
...    return
...    yield 2
...
>>> for x in a():print x
...
1
>>>
45デフォルトの名無しさん:2007/08/23(木) 08:02:14
法ってパーサのことかい?
ならSyntax Error起こさないならOK

それとも標準記法のことかい?
なら到達不能コードがあるからNG
46デフォルトの名無しさん:2007/08/23(木) 08:03:16
別に問題ないだろうけどidleさんはタブ補完してくれなかったから従うべきだ
47デフォルトの名無しさん:2007/08/23(木) 10:03:01
Cで作られたプログラムからpython関数を使い
その関数がが実行元のプログラムの関数を使うことはできますか?

Cからpython、pythonからCで作られた関数の呼び出しは載ってるのですが
往復してきたのはどうするのか載って無いんです
48デフォルトの名無しさん:2007/08/23(木) 12:10:47
>>47
Cで作った実行バイナリ単体の関数は他から利用することはできません。
その関数を切り出してライブラリ化すればPythonと実行元のプログラム
両方から使うようにすることができます。

こういう意味?
49デフォルトの名無しさん:2007/08/23(木) 12:41:26
50デフォルトの名無しさん:2007/08/23(木) 12:59:41
>>48
そんな感じです。ライブラリ化だとマルチプラットフォーに影響あるからpythonを呼ぶしかないんですね・・・
gameのスクリプトを作れるかなーと思ったのですが
51デフォルトの名無しさん:2007/08/23(木) 16:29:06
52デフォルトの名無しさん:2007/08/23(木) 18:32:55
>>51
あーこれはできそうですね・・・ありがとうございます
53デフォルトの名無しさん:2007/08/25(土) 14:16:09
jpeg、pngファイルのコメントの読み書きができるライブラリってありますか?
PILのマニュアルにはそのような記述がなかったので、皆様のお智慧を拝借したいです
54デフォルトの名無しさん:2007/08/25(土) 19:10:46
>>53
PNG はわからないけど、JPEG ならこれで

from PIL import Image
img = Image.open(JPEG_FILE)
print img.app['COM']

コメントは参照できる。ただ書き込みはできない(と思う)。
可能ならばプラグインを書いてみては?
55デフォルトの名無しさん:2007/08/25(土) 21:19:36
Pythonで特定の文字列をHTML実体参照等に置き換えるのに手頃な方法は
ありますか。
以下のような仕様のものが(あれば)欲しいです。

・元となる文字列はunicodeとする
・&や< > や引用符のようなヤバげなものは当然置き換える
・目的エンコーディングでカバーできない文字はなるべく実体参照で
 置換える。実体参照が未定義の場合は数値文字参照で置き換える
56デフォルトの名無しさん:2007/08/25(土) 22:19:46
>>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)
57デフォルトの名無しさん:2007/08/25(土) 22:23:20
>>56
トンクス
考えてみるとフェールバックじみた処理になるのでえらい面倒かなと
思えてきました
UTF-8にするんなら無用な仕事ですし、ASCIIならまだ簡単ですが……
ちょっとどうするか考えて見ます
58デフォルトの名無しさん:2007/08/25(土) 23:14:50
「iPod!」逆さにしても「iPod!」
59デフォルトの名無しさん:2007/08/25(土) 23:27:52
>>58
すごい!!
じゃあ逆さにして地面に叩きつけたらどうなるんだろう!!!
知りたい!!!知りたい!!!
60デフォルトの名無しさん:2007/08/25(土) 23:28:45
>>58
ゆでたまご先生もびっくり!
61デフォルトの名無しさん:2007/08/26(日) 00:02:55
ほんとだー
62デフォルトの名無しさん:2007/08/26(日) 01:53:04
oの位置が違う
63デフォルトの名無しさん:2007/08/26(日) 06:39:28
位相同型だよ
64デフォルトの名無しさん:2007/08/26(日) 07:41:43
iP0d!
6553:2007/08/26(日) 12:11:01
>>54
お返事ありがとうございました。意外に無いものなのか。。。。
66デフォルトの名無しさん:2007/08/26(日) 12:13:52
欲しい有用な機能に関して目ぼしい実装が無いなあってのは
チャンスだぜえ
67デフォルトの名無しさん:2007/08/26(日) 12:57:26
    ∧_∧
    ( ・∀・) ワクワク
  oノ∧つ⊂)
  ( ( ・∀・) ドキドキ
  ∪( ∪ ∪
    と__)__)
68デフォルトの名無しさん:2007/08/26(日) 21:34:58
Cのプログラムは***.oファイルで提供されているときにpythonからCの関数を呼び出したいんですが何かよい方法ないでしょうか?
69デフォルトの名無しさん:2007/08/26(日) 21:40:04
ヘッダファイルがあるかどうかで困難さが違ってくるな
70デフォルトの名無しさん:2007/08/26(日) 21:53:21
ヘッダファイル作りました。自分のプログラムなので
swigっていうの使えばいいんでしょうか?
71デフォルトの名無しさん:2007/08/26(日) 22:01:47
自分のプログラムなら何でoしかねぇんだよ
手書きでもswigでもboost.pythonでも好きに汁
72デフォルトの名無しさん:2007/08/26(日) 22:22:14
Windows上でPythonのプログラムを長時間動かしてると、いつのまにか
実行プライオリティが勝手に下げられてて困っています。
どうしたら良いのでしょうか? Pythonの話題じゃ無い気もしますが…
73デフォルトの名無しさん:2007/08/26(日) 22:30:58
どんな感じでプライオリティーが下がるの???
74デフォルトの名無しさん:2007/08/26(日) 23:46:44
>どんな感じでプライオリティーが下がるの???
pygameのタイマを使って一定時間間隔(1秒)である処理を実行させてます。
しばらく(数時間くらいだった気が)ほおって置くと、時間間隔が
バラバラと変動するようになってしまいます。

異常に気付いてウィンドウを前面に出すと、また正常に戻るんですが…
75デフォルトの名無しさん:2007/08/26(日) 23:51:24
プロセスのプライオリティーとは関係ないわけね?
76デフォルトの名無しさん:2007/08/27(月) 22:42:37
>>75
プライオリティは見ていませんでした(爆
74の現象から、プライオリティが下がったに違いないと
推測していました(ええ加減ですいません。再現確認をする
機会が中々つくれないもので)。

Windowsのプロセス管理の基礎知識等を勉強してから
出直してきます…
77デフォルトの名無しさん:2007/08/27(月) 23:17:54
(爆
78デフォルトの名無しさん:2007/08/27(月) 23:38:54
テレホ時代
79デフォルトの名無しさん:2007/08/29(水) 16:44:19
「habu」 - Python版PlaggerでRSSを加工する
http://journal.mycom.co.jp/articles/2007/08/29/Python_habu/index.html
80デフォルトの名無しさん:2007/08/29(水) 21:24:52
all, any より and_all, or_all とかの方が分かり易いんだけんども
81デフォルトの名無しさん:2007/08/30(木) 00:06:30
>>79
http://www.liris.org/tech/program/habu/

python の人たちに言いたい。

いくらpythonだからといって気持ち悪い蛇の写真をトップページに載せないで。。。
開いた瞬間にキモくて閉じた。

マスコット重要。
82デフォルトの名無しさん:2007/08/30(木) 00:20:30
これはまあ、駄目な人は駄目だろうなあw
IronPython本の表紙の鉄の蛇っぽいのも駄目な人多いかね?
後は蛇関係ないけど初めてのPythonの表紙のねずみとか
83デフォルトの名無しさん:2007/08/30(木) 00:31:20
クックブックはウサギだった。
どうも蛇に食われる動物を載せるらしい。
84デフォルトの名無しさん:2007/08/30(木) 00:34:14
それを考えるとJavaのコーヒーは旨そうだ。
RubyとPerlは何か宝石っぽい。Shellは海っぽい。
Firefoxは可愛らしくて、Thunderbirdは何か人形っぽい。

うん。重要だ。Pythonも可愛いイメージキャラ作ればいいのに。
いや、可愛いとまでいかなくてもdaemon君とかopenbsdのトゲ野郎くらいの愛嬌を・・・
85デフォルトの名無しさん:2007/08/30(木) 00:35:04
たぷるたん?
86デフォルトの名無しさん:2007/08/30(木) 00:39:47
>>82
これか。キモイなw
http://www.amazon.co.jp/dp/479733939X

みんPyは結構普通だったよなーと思って見返してみたら・・・蛇がいるんだね。
ぶどう(マスカット)だと思ってた。。。
87デフォルトの名無しさん:2007/08/30(木) 00:41:00
もう羽生名人でいいじゃん
玄人志向っぽく
88デフォルトの名無しさん:2007/08/30(木) 00:45:30
羽生選手のアップでもいいよ。
89デフォルトの名無しさん:2007/08/30(木) 01:16:36
バカ歩きを希望。
90デフォルトの名無しさん:2007/08/30(木) 01:33:19
たぷるタンか。何もかも懐かしい・・・・・。
91デフォルトの名無しさん:2007/08/30(木) 03:01:39
>>81
蛇かわいいじゃん
92デフォルトの名無しさん:2007/08/30(木) 09:12:25
>>91
本人乙。
93デフォルトの名無しさん:2007/08/30(木) 09:32:07
スペイン宗教裁判でひとつ
94デフォルトの名無しさん:2007/08/30(木) 12:25:00
95デフォルトの名無しさん:2007/08/30(木) 13:36:57
SPAM缶とかどうよ
96デフォルトの名無しさん:2007/08/30(木) 14:00:09
>>94
Zope関係者ウザい.
97デフォルトの名無しさん:2007/08/30(木) 17:01:02
PIL初めて触ったんだけど,
いろいろ便利なのはわかった.

だけど順々にピクセルを見て,その平均値をとったり,
そういうことをやりたいんだけど,
ピクセルごとの色情報(?)を受け取る関数はどれですか?
98デフォルトの名無しさん:2007/08/30(木) 17:06:17
PILといえばアンジー&ルビー
9997:2007/08/30(木) 17:09:34
dirしてみたらgetpixelっていうのがあって,
試してみたらできました
100デフォルトの名無しさん:2007/08/30(木) 17:14:24
>>97,99
ニヤニヤwwwwww
101デフォルトの名無しさん:2007/08/30(木) 19:26:09
>>86
どれどれ、まぁ、蛇くらい大丈夫だろう、と思って見たが、


これはキモイwww
トグロ巻きすぎw
102デフォルトの名無しさん:2007/08/30(木) 19:40:13
やっぱ不評もあるんだなあIronPython本
一見してかっけえええええええと思っちゃった俺はマイノリティだったのかも知れん
そして>>81のサイト画像小さくなってるね
103デフォルトの名無しさん:2007/08/30(木) 19:59:30
別に気持ち悪くなかったけど
104デフォルトの名無しさん:2007/08/30(木) 20:30:07
>>86
蛇というより、寄生虫にみえた…
105デフォルトの名無しさん:2007/08/30(木) 20:43:55
Amazon.co.jp: Francesco Tehrani: 洋書
http://www.amazon.co.jp/s?ie=UTF8&search-type=ss&index=books-us&_encoding=UTF8&field-author=Francesco%20Tehrani&page=1

イメージキャラは、もうコイツでいいじゃね。
愛称は「デコスケ」な。
106デフォルトの名無しさん:2007/08/30(木) 21:02:31
107デフォルトの名無しさん:2007/08/30(木) 21:04:52
おでこのメガネで、デコデコ…

No Starch Press Home Page
http://nostarch.com/frameset.php?startat=python

コレか…目次を見る限りだと悪くはなさそうだけど、
このページだと発売が2008年の2月になってるな…
108デフォルトの名無しさん:2007/08/30(木) 21:05:35
また伸びたのか・・・。
109デフォルトの名無しさん:2007/08/30(木) 21:46:22
胸が大きいのか…
110デフォルトの名無しさん:2007/08/30(木) 23:34:59
実践ぱいそんの萌え絵をスルーするなよおまいらwww
111デフォルトの名無しさん:2007/08/30(木) 23:44:35
>>106
あーやっぱpythonから連想するのはキッチリしてそうなメガネ女子かー。
112デフォルトの名無しさん:2007/08/31(金) 00:13:27
鞭が似合いそうなむっちりタイツなおねぇさんだな
113デフォルトの名無しさん:2007/08/31(金) 02:35:21
つまり蛇女萌え、と。
114デフォルトの名無しさん:2007/08/31(金) 17:06:12
>>90
あの頃に戻りたいよ
115デフォルトの名無しさん:2007/08/31(金) 17:34:28
>>114
おまえは相変わらずうだつが上がらないな(´;ω;`)
116デフォルトの名無しさん:2007/08/31(金) 20:07:38
Gentoo使ってるからPythonのお勉強でもしよっかなと思って来てみたら

何、この糞スレ?
117デフォルトの名無しさん:2007/08/31(金) 20:11:21
まともな話題を振ればまともなレスが返って来るかもよ
118デフォルトの名無しさん:2007/08/31(金) 22:17:54
インスタント・ハッキングの練習2なんだが
while b:はどういう意味?
なんでwhile b==0:じゃないの?
119デフォルトの名無しさん:2007/08/31(金) 22:33:05
>>118
b が真と評価される間は、そのブロックを実行する。
b が 0 になると偽と評価される。
120デフォルトの名無しさん:2007/08/31(金) 23:08:02
>119
while b==0:じゃ何も起こらないのか。バカだな俺。
リファレンスマニュアル7.2と5.10に書いてありました。
読み方から勉強します。ありがとう。
121デフォルトの名無しさん:2007/09/01(土) 02:09:28
Python 3.0a1 Release: August 31st, 2007
http://python.org/download/releases/3.0/
122デフォルトの名無しさん:2007/09/01(土) 08:31:17
キタコレ
123デフォルトの名無しさん:2007/09/01(土) 11:49:07
wktk
124デフォルトの名無しさん:2007/09/01(土) 12:25:21
formatに{0}、{1}とか使えるらしいのが個人的にはちょっと嬉しいな
C#みたいだけど
125デフォルトの名無しさん:2007/09/01(土) 13:05:25
>>120
落ち着け。
b==0がTrueならwhileは無限ループになる。
b==0がFalseなら何も起きない。

リファレンスよりチュートリアルを先に読め。
126デフォルトの名無しさん:2007/09/01(土) 13:33:13
あのチュートリアルは初心者にはイミフだと思うぞ
他の言語の経験があるならともかく
127118: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:のほうが分かりやすいですね。
チュートリアルはインスタント・ハッキング終わってから読むことにします。
128デフォルトの名無しさん:2007/09/01(土) 14:23:14
!= のこともたまには思い出してね
129デフォルトの名無しさん:2007/09/01(土) 19:54:31
厳密には違うのかなー?
130デフォルトの名無しさん:2007/09/01(土) 20:12:43
入門書嫁。
131デフォルトの名無しさん:2007/09/01(土) 22:51:59
ドモルガンの定理って重要だよな…とか言ってみる。
132デフォルトの名無しさん:2007/09/01(土) 22:56:41
NANDだけあれば事足りるよね
133デフォルトの名無しさん:2007/09/01(土) 23:39:14
tarfile が相対パスのチェックをしなから困るってzdnetが言ってた
http://japan.zdnet.com/news/sec/story/0,2000056194,20355532,00.htm
134デフォルトの名無しさん:2007/09/02(日) 00:39:14
そういえば、NANDだけで論理回路を作る実習があったなー、懐かしい。
135デフォルトの名無しさん:2007/09/02(日) 03:27:41
今日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"あいうえお"
136デフォルトの名無しさん:2007/09/02(日) 13:04:21
>>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
すごい!初めて気づいた
はじパイはねずみだったな
138デフォルトの名無しさん:2007/09/02(日) 21:56:50
>>83
俺も初めて気がついた!
139デフォルトの名無しさん:2007/09/02(日) 22:02:25
Win32本はなぜかワニだぞ。
140デフォルトの名無しさん:2007/09/02(日) 22:05:31
それは早合点しすぎだと思う。
パイソンは人間も食べるから、少なくとも
人間より小さい生き物なら何でも食べるから、
人間より小さい生き物がが表紙になってもおかしくないのに
小型動物のねずみとウサギだけが餌になってるっていうのは
人間が主に蛇にやる餌がねずみとかウサギだからだとおもう。
141デフォルトの名無しさん:2007/09/02(日) 22:17:28
youtubeにワニ食ってる動画あったよ
142デフォルトの名無しさん:2007/09/02(日) 22:42:33
>>136
レスありがとうございます。暗黙変換の考え方がわかりました。
sys.setdefaultencoding('cp932')をすると動くようになりました。
pyscripterとか色々IDEを試した結果、最後にeclipseに落ち着きました。
ただ、コマンドプロンプトで、
print sys.stdout.encoding, sys.getdefaultencoding()
を実行すると、
(cp932, ascii)
になって、eclipseで実行すると、
(None, None)
になるんですよね。これから考えると、stdoutのエンコーディングが違うのが
根本的な原因のような気もします(ディフォルトを上書きしてる?)。
この差はどこから生まれるんでしょうか。
143デフォルトの名無しさん:2007/09/02(日) 22:55:59
>>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から直接実行している感じがしてます。
144デフォルトの名無しさん:2007/09/02(日) 23:15:57
Pythonインタプリタの初期化時(Winの場合はsysモジュールの初期化時)に、
標準入出力が端末である場合(isatty()が真である場合)に限って
sys.stdin.encodingやらsys.stdout.encodingやらを設定している。
そうでなければ無設定(None)のままだ。
つまり、リダイレクトされていたりパイプに接続されていたりすればアウトだ。
eclipseから実行した場合も、端末であるとは見なされないのだろうよ。
145デフォルトの名無しさん:2007/09/03(月) 00:05:19
スクリプト言語「Python 3」のα版が公開 海上忍
http://journal.mycom.co.jp/news/2007/09/02/002/index.html
146デフォルトの名無しさん:2007/09/03(月) 01:07:10
>>144
なるほどぉ。そういう作りなんですね。
ということは、eclipseのコンソールがキャラクタデバイスと
見なされていないからなんですね。
きれいに解決するには、eclipseコンソールがisatty()に真を
返すような実装になれば良いと。
147デフォルトの名無しさん:2007/09/03(月) 01:11:39
>>146
Eclipseのことはよくしらんが

Unixの場合はptyなどを用いて実現可能かもしらんが、
Winの場合は難しいだろう
そういう機構が無いしな
それに、Consoleのコードページを取得するのに、GetConsoleACP()のように
モロにWin32 ConsoleベッタリなAPIを用いているから
まあ無理だろう
148デフォルトの名無しさん:2007/09/03(月) 13:21:56
俺には理解出来ないスレだ。みんなホントに凄いね。
ここの住人のレベルまで達するには、やっぱり専門書買って勉強するんですかね。
それとも他の言語に慣れ親しんでいるので付属のhelpでも理解できるのかな。
149デフォルトの名無しさん:2007/09/03(月) 13:42:21
専門書買っても解らない奴から
英語版の help だけで全て理解してしまう奴まで色々
150デフォルトの名無しさん:2007/09/03(月) 14:56:04
>>149の訂正な
入門書も読まないで分かった気になっている厨房から
英語版のhelpを読んで分かった気になっている中に病まで色々
151デフォルトの名無しさん:2007/09/03(月) 14:58:49
敵もいないのに必死さを醸し出す子って痛々しくてさ。
152デフォルトの名無しさん:2007/09/03(月) 15:00:02
151は自分のことをよく知っていて偉いと思った。
153デフォルトの名無しさん:2007/09/03(月) 15:14:03
みんなも早く知ったほうがいいよ。
154デフォルトの名無しさん:2007/09/03(月) 16:17:02
help(中に病)
155デフォルトの名無しさん:2007/09/03(月) 16:22:16
簡単に言や、うなぎパイからアップルパイまで色々ってこった




それから、おっぱいは絶対出すなよ↓
156デフォルトの名無しさん:2007/09/03(月) 16:35:31
>>154
高に病乙.
157デフォルトの名無しさん:2007/09/03(月) 16:50:22

   ( ゚∀゚)  
   し  J  
   |   |  
   し ⌒J

    _ _
   ( ゚∀゚ ) !
   し  J 
   |   |
   し ⌒J
158デフォルトの名無しさん:2007/09/03(月) 17:07:26
155は面白いことを言おうとしたのか?
そうなのか?
そうなのか???
159デフォルトの名無しさん:2007/09/03(月) 17:42:07
おっと、おまいらにはちと高尚過ぎたか……。
160デフォルトの名無しさん:2007/09/03(月) 17:54:23
そうだ、キャラクターうなぎにすりゃいいんじゃね?
もしくはうなぎ犬
161デフォルトの名無しさん:2007/09/03(月) 18:28:37
強いて言うならオヤジギャグだな。
162デフォルトの名無しさん:2007/09/03(月) 19:31:07
オヤジギャグならまだいいよ
オヤジにとっては面白いぶんマシ
163デフォルトの名無しさん:2007/09/03(月) 20:37:15
おっぱいそんスレがこんなことで盛り上がるとは
164デフォルトの名無しさん:2007/09/03(月) 21:19:12
でも胸は小さめのほうがいい>>106
165デフォルトの名無しさん:2007/09/03(月) 22:40:12
上でPython3000のα1が出たと言うとるやつがいるのに
お前らスルーですかそうですか。
166デフォルトの名無しさん:2007/09/03(月) 22:42:42
俺様はようやく2.5.1ですよ
167デフォルトの名無しさん:2007/09/03(月) 22:54:24
入れてみたけど、実はそんなに使ってなかったことに気づきました。
Mercurial は動いているような感じ・・・くらいです。
168デフォルトの名無しさん:2007/09/03(月) 22:55:57
だって仕様自体は既出だし
実用に使うにはまだ早いし
169デフォルトの名無しさん:2007/09/03(月) 23:42:02
pythonが日本で流行ってない理由は、ヘビっぽい名前が原因らしいよ。
「パイチョン」なら間違いなく流行していたって教授が逝ってたし。
170デフォルトの名無しさん:2007/09/03(月) 23:52:30
>>145
その記事微妙だな。もうちょっと頑張って調べて書けよ、という感じだ。
171デフォルトの名無しさん:2007/09/03(月) 23:52:37
そんな半島くさい名前は嫌だ
172デフォルトの名無しさん:2007/09/04(火) 00:06:43
pyてょn
173デフォルトの名無しさん:2007/09/04(火) 00:15:56
インデントのしすぎで画面の横幅が足りません><
174デフォルトの名無しさん:2007/09/04(火) 00:23:33
それは構造が深すぎなんだよ。
アセンブラを見習え。
175デフォルトの名無しさん:2007/09/04(火) 00:36:02
そうそう、横幅が足りなくなったら構造を見直せ、と言うサインだと思うといいよ
176デフォルトの名無しさん:2007/09/04(火) 02:16:19
map の返り値も iterable になるのね

>>> map(ord, '12345')
<itertools.imap object at 0x7fee930c>
>>> list(map(ord, '12345'))
[49, 50, 51, 52, 53]
177デフォルトの名無しさん:2007/09/04(火) 02:54:05
インデント幅を1文字ずつにすれば、深さ数十でもOK。

1ピクセル単位でインデントできるエディタとかあれば、深さ数百にもできるな。
しかもAAも作りやすいというおまけつきw
178デフォルトの名無しさん:2007/09/04(火) 05:31:49
そんな><
179デフォルトの名無しさん:2007/09/04(火) 07:50:09
右端で折り返すのは邪道と聞いて飛んで来ました。
180デフォルトの名無しさん:2007/09/04(火) 10:51:06
>>177
そこまでいくと単にエディタのフォントをプロポーショナルに指定すれば済む気がするw
181デフォルトの名無しさん:2007/09/04(火) 20:40:50
3αを入れてみたが
>>> help(なんか)
がエラーになるので厳しい
うちのXPのせいじゃないよね?
182デフォルトの名無しさん:2007/09/05(水) 06:26:58
全ての凌辱物エロゲーをアンインストールしてから、ここに来なさい。
183デフォルトの名無しさん:2007/09/05(水) 15:03:41
ウチでもやってみた
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
>>>
184デフォルトの名無しさん:2007/09/05(水) 18:22:18
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()
185デフォルトの名無しさん:2007/09/05(水) 18:27:26
line = line.rstrip("\n")
186デフォルトの名無しさん:2007/09/05(水) 18:27:51
line = line.rstrip("\n")
187デフォルトの名無しさん:2007/09/05(水) 18:29:43
うちの野良ビルド 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.
188デフォルトの名無しさん:2007/09/05(水) 18:31:53
なんか気持ち悪い @ 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]
189デフォルトの名無しさん:2007/09/05(水) 18:33:28
二重投稿したかと思った

あと print >>output_file, line, だと間にホワイトスペースが挟まるから、
output_file.write(line) のほうがいい (意図してたことならすまん)
190デフォルトの名無しさん:2007/09/05(水) 18:36:25
>>188
普通じゃね?
191デフォルトの名無しさん:2007/09/05(水) 18:36:57
\200nをrstrip()って何やってんだ?
スペース、0、nを右トリムしてんの?
192デフォルトの名無しさん:2007/09/05(水) 18:39:12
>>185,186

ありがとう。本当に助かったよ。
こんな超基本的なミスに何時間も気付かなかったのが恥ずかしい。

>>189
丁寧なフォローありがとう。
output_file.write(line)の方に変更するよ。

PerlからPythonに変えたばかりなので、いろいろ世話になるかも
しれないけどよろしく。
193デフォルトの名無しさん:2007/09/05(水) 18:54:48
一行野郎登場のよかん
194デフォルトの名無しさん:2007/09/06(木) 02:19:08
>>188
たしかに、第一引数の副作用を期待した書き方だと、mapと書いた時点ではmapされてない
みたいになって多少気持ち悪いかも・・・
しかしまあ、何でもイテレータ化するのが、今回の流行だからしょうがないかも・・・
195デフォルトの名無しさん:2007/09/06(木) 09:07:40
>>188が言ってるのは

imap object を生のまま返されても分からねーよ、
対話モードなら気をきかせろ ウワァァァンヽ(`Д´)ノ
って意味だと思うのだが。

そもそも map に副作用を期待する(さらに値を返さない)のを渡すのは、
C++ クラスオブジェクトのポインタからアドレスを計算して
vtbl とパディングを暗黙に決め付けてアクセスするのと同じくらい悪いことだぞ。
196デフォルトの名無しさん:2007/09/06(木) 10:24:45
188みたいな奴とは仕事したくないな
本質的でないところでアホな質問ばかりされ、時間を無駄につぶされそうwww
197デフォルトの名無しさん:2007/09/06(木) 12:32:37
196は職場でもこんな感じなんだろうな。
198デフォルトの名無しさん:2007/09/06(木) 18:49:41
197は大切な者を盗んでいきました。
このスレの空気です。
199デフォルトの名無しさん:2007/09/06(木) 19:11:11
OpenCV使ってる人いるかな?
C++でやってる人のほうが多そうだけど、
C++のコード、ポインタがいっぱいでこわいんだよなぁ・・・
でもPythonよりは速いだろうし。
200デフォルトの名無しさん:2007/09/06(木) 19:13:58
C++のサンプルコードね
201デフォルトの名無しさん:2007/09/06(木) 21:58:53
197は職場でもこんな感じなんだろうな.
202デフォルトの名無しさん:2007/09/06(木) 22:31:59
いいなぁ就職してて・・・
203デフォルトの名無しさん:2007/09/07(金) 00:49:23
iterator と generator って実装が違うだけで意味的には同じ?
204デフォルトの名無しさん:2007/09/07(金) 00:49:43
選ばなきゃ、それなりにあるだろ。
選ばなきゃな。
205デフォルトの名無しさん:2007/09/07(金) 01:44:14
>>203
意味的にというか使い方はおんなじ気がする・・・
作り方が違うのかな・・・
206デフォルトの名無しさん:2007/09/07(金) 02:49:45
ジェネレータはイテレータを簡単に作るための構文糖衣。
207デフォルトの名無しさん:2007/09/07(金) 02:52:11
http://www.oreilly.co.jp/books/9784873113401/

チュートリアルの和訳か・・・
208デフォルトの名無しさん:2007/09/07(金) 03:13:46
>>207
あいかわらずキモイ表紙だな。
買う気沖ねー
209デフォルトの名無しさん:2007/09/07(金) 03:42:12
2.5かな?しかしこんなもん出すぐらいなら
他にもっと売れそうなのあるんじゃねえかと思うわ
210デフォルトの名無しさん:2007/09/07(金) 05:49:22
>>207
ほー、これは結構売れるんジャマイカ。
パソコンの画面でえ読むのは願い下げだけど印刷するのはメンドウ、
紙媒体の薄い(=さっと読める)入門編があるならそれを買いたい、
という客層は相当数居る希ガス。
211デフォルトの名無しさん:2007/09/07(金) 06:48:48
Chun の Core Python Programming を訳せばいいのに。
212デフォルトの名無しさん:2007/09/07(金) 09:56:03
>>207, 210
本人乙w

タダで読める文章を書籍にして売れるのかねwwwwwwwwwwww
213デフォルトの名無しさん:2007/09/07(金) 10:42:30
>>212
早く宿題しろ


って言われたくなかったら、せめてCCとかDRM論争とか最近の話題は
理解しておこうよ
214デフォルトの名無しさん:2007/09/07(金) 10:45:22
>>213
>せめてCCとかDRM論争とか最近の話題

コモンズとか著作権管理に関係なく売れないだろww
だって無料で読めるんだからwww
215デフォルトの名無しさん:2007/09/07(金) 10:49:49
>>213
本人涙目(wwww
216デフォルトの名無しさん:2007/09/07(金) 11:45:19
つーか、Pyな入門書はすでに飽和状態になってるよ。
これ以上不要。
いまさらチュートリアルの和訳本なんて何考えてるんだか。
そして1200という価格。著者タソの印税はどんだけ低いんだ。
ワーキングプアかよ(藁。
217デフォルトの名無しさん:2007/09/07(金) 11:50:41
和訳の人たちは2.5の翻訳はしないの?
218デフォルトの名無しさん:2007/09/07(金) 12:53:47
ナイス営業妨害w
219デフォルトの名無しさん:2007/09/07(金) 13:06:09
>>213
CCとか言うなら翻訳したのをWebで公開しろよボケがWWWWW
220デフォルトの名無しさん:2007/09/07(金) 13:16:24
入門書で売れてたっぽいのってみんpyくらいじゃないか?
飽和とは言えないような・・・
言語作者のチュートリアルってことで喜ぶ人はいるのかもしれない
そりゃ既にこのスレ見てるような人は買わないだろうがw
221デフォルトの名無しさん:2007/09/07(金) 13:23:12
>217
ここから先は有料です

いや有料でいいから出てくれると嬉しいな…
222デフォルトの名無しさん:2007/09/07(金) 13:29:58
>>220
>入門書で売れてたっぽいのってみんpyくらいじゃないか?

みんぱい以降売れた本がない、という事実を指して飽和と言わずになんと言おう?

>言語作者のチュートリアルってことで喜ぶ人はいるのかもしれない

これはそかも.
Webでも読める内容を金を払ってまで読みたいと思うかは分からないけど.
223デフォルトの名無しさん:2007/09/07(金) 14:23:22
Webでも読める内容を金を払ってまで読みたいと思うかは分からないけど.
224デフォルトの名無しさん:2007/09/07(金) 14:26:20
がふ、書き込み中にエンターキー押してもうた。

> Webでも読める内容を金を払ってまで読みたいと思うかは分からないけど.

電車の中で読めるから、無料で読めるものでも買うことはあるよ。


この本に関しては自分はもういらないけど。
自分は「初めてのPython」は本を買ったよ。Webの内容とかなりかぶってたけど。
225デフォルトの名無しさん:2007/09/07(金) 14:33:13
本家だから安心的なチュートリアル本が一冊あってもいいじゃまいか
付録も面白そうだから出たら立ち読みしてくるよ
この次はProgrammingPythonに期待。できれば夏目さん訳で

「ち」に濁点で「ぢ」とかちょっと引いた
226デフォルトの名無しさん:2007/09/07(金) 15:25:44
E.1 most recent call lastってなんぢゃ

イカくさい...orz...
227デフォルトの名無しさん:2007/09/07(金) 18:05:22
マニュアル和訳は今後は書籍販売になるってことでしょ?
本として売ってる内容をWebで公開するなんてありえないし。
個人的には残念だけど、まぁ仕方ないかなぁ、と。
228デフォルトの名無しさん:2007/09/07(金) 18:16:57
>>227
もう夏休みは終わったよ
229デフォルトの名無しさん:2007/09/07(金) 18:17:37
>>227
何か勘違いしているみたいだけれども
Webにあるやつとは別の訳者による新訳

ちなみに英語版の同様の書籍も出ているけれども
それで Python の本体にチュートリアルが付かなくなった
なんて事にはなっていない
230デフォルトの名無しさん:2007/09/07(金) 18:22:13
イカくさい新訳。
231デフォルトの名無しさん:2007/09/07(金) 19:06:42
Fedora 7 KDE Linux を始めて1週間。python言語を知って3日目・・です。
ウェブブラウザ(urlを指定してHPが表示するIEの原型みたいなもの)をpythonで作れますか?
もしできるなら、参考になるソースなどあるサイトを教えてくれませんか。


232デフォルトの名無しさん:2007/09/07(金) 19:31:23
>>231
wxPythonにwx.html.HtmlWindowとかいうクラスがあるよ
ttp://www.daniweb.com/code/snippet490.html
wxPythonについては自分でぐぐってね
233デフォルトの名無しさん:2007/09/07(金) 19:54:37
grail
http://grail.sourceforge.net/
Grail is an extensible Internet browser.

Pythonでappletが作れるぞ…と夢見てた98年頃のオレ
234デフォルトの名無しさん:2007/09/07(金) 20:00:10
>>231
ごめんなさい自己レスです。Linux上で使うpythonでLinux上で動くプログラム。を書き落としました。
235デフォルトの名無しさん:2007/09/07(金) 20:19:41
>>232 の wxPython が Linux でも動く(はず。俺は Linux 使ってないので)。
236デフォルトの名無しさん:2007/09/07(金) 20:30:22
232、233さん。いいサイトを紹介していただきました。有難うございました。
目標ができました。助かります。
237デフォルトの名無しさん:2007/09/07(金) 20:33:03
テキストブラウザくらいなら自分で作るにはいい練習かも知れんな。
238デフォルトの名無しさん:2007/09/07(金) 22:24:46
239デフォルトの名無しさん:2007/09/07(金) 22:33:21
>>233
FirefoxがPython乗せるので、他のメジャーブラウザがそれに追従すれば、、、
誰かがpython-pluginを各ブラウザ向けに作れば、、、
Jythonがもっと使えるようになれば、、、
240デフォルトの名無しさん:2007/09/08(土) 03:53:54
pythonのライブラリを書いてるんですが、
ライブラリ側で保存しておきたいデータってどこに保存しておけばいいんでしょか?
適当に Lib\site-packages 以下に保存しておいて大丈夫?
241デフォルトの名無しさん:2007/09/08(土) 10:16:55
/var/tmp
242デフォルトの名無しさん:2007/09/08(土) 10:59:33
>>240
モジュールでなくクラスとして実装して、データを保存するメソッドを作るべき。
243デフォルトの名無しさん:2007/09/08(土) 13:24:15
/var/tmp だと忘れた頃に消える(w on RedHat Linux
244デフォルトの名無しさん:2007/09/08(土) 14:02:29
>>240
何でライブラリ側で保存したいデータが出てくるんだ?
245デフォルトの名無しさん:2007/09/08(土) 14:49:33
>>237
WindowsでのVBやDelhpiでは、ベテランの好意により入門者向けに解説した「メモ帳を作ってみよう」や「WebBrawserの初めの一歩」などのサイトをよく見かけますが、
Linuxのそれもpythonの日本語のページを探してもなかなか見つかりません。
英語ページは数行翻訳するうちにめまいがして頭痛がしてきます。
まだ、「変数」「配列」「マップ」「スライス」・・・基礎の基礎が重要なことは分かりますが、なにかプログラムの形が見えて保存したり読み込んだりしないと正直眠くなります。

Linuxといえば、サーバーをいじくるベテランの方々が大半だと思いますが、私のようにWindows Vistaに見切りをつけてLinuxに流れ込んでくるド素人が増えるかもしれません。
そうすると、当然デスクトップユースです。
正直Linuxのデスクトップ環境はこれからだと思います。
プログラム関係はpythonがとっつきやすいような気がしました。

ところで、Linux環境でのpython使いの皆さんは、どのようなIDEをお使いですか?
Linux環境では、優れたエディタがたくさんあるような気がしました。
私は、Kataを使ってみましたが、いいのかわるいのかまだ分かりません。







246デフォルトの名無しさん:2007/09/08(土) 14:59:46
ヴぃm
247デフォルトの名無しさん:2007/09/08(土) 18:51:05
>>246
VI/VIMの紹介ページを読みました。
上級者の使うエディタみたいですね。
pythonのお勉強レベルのド素人には敷居が高いと感じました。

有難うございました。
248デフォルトの名無しさん:2007/09/08(土) 19:22:01
環境はFedora7 KDEです。
エディタKateでpythonのプログラムを記述して
Kateの画面下半分にあるターミナルにソースを表示させたままファイルに保存したうえで実行させてみるのに毎回
$ python [ファイル名.py] と入力して実行させていますが
手入力しないで実行させることはできませんか。
ツールの「コンソールへ送る」ではないかとヘルプを読んでもうまくいきません。
249デフォルトの名無しさん:2007/09/08(土) 19:45:01
KDEスレで聞いてこい
KDEスレ Part6
http://pc11.2ch.net/test/read.cgi/linux/1126775147/
250240:2007/09/08(土) 19:57:17
>>241,243
消えるからだめじゃん…と思ったけれども
保存しておきたいのは息の長いキャッシュだから大丈夫か…な

>>242
やっぱりそれが一番妥当かのう

>>244
ライブラリを利用するプログラム側で個別に作成すると重いので、
中央でまとめてキャッシュしておきたいデータがあるのです。

そもそも Linux だと Lib\site-packages に保存するのは、
パーミッションでダメじゃんと気付いた。
$HOME や %APPDATA% に保存する手もあるな。

というわけで、ありがとうございました。参考になりました。
251デフォルトの名無しさん:2007/09/09(日) 01:17:07
>>247
上級者とか素人とかくくる時点で向いてないよ
252デフォルトの名無しさん:2007/09/09(日) 01:26:56
IronPython in Action
ttp://www.manning.com/foord/

アーリーアクセス版。漏れはタダの第一章だけ読んでくるよ!
253デフォルトの名無しさん:2007/09/09(日) 08:06:10
ていうかプログラム云々言う前にLinux初心者ならvimとbashを先に覚えるべき。
いくらGUIやインストーラが良くなって簡単になったとは言え
Linux(PC-UNIX)の魅力は充実したCUIにあるしCUIを知った上でGUIを使えば
両方の良いところを使い分けることが出来、一層便利になるはず。

OS上でプログラミングするわけだから先ずはオペレーティング……あ!?
どうでもいっかw
254デフォルトの名無しさん:2007/09/09(日) 08:36:25
CUI のエディタなら vim より nano の方が簡単




どちらも使ってないが
255デフォルトの名無しさん:2007/09/09(日) 09:05:43
お約束で


>>254
そうnano?
256デフォルトの名無しさん:2007/09/09(日) 10:02:11

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
257デフォルトの名無しさん:2007/09/09(日) 11:15:17
初心者です。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でも同じ結果です。
何か設定が悪いのですか?
258デフォルトの名無しさん:2007/09/09(日) 14:30:44
>>257
UTF-8 は可変長の文字コードで、
ほとんどの日本語は1文字3バイトを使用する。
259デフォルトの名無しさん:2007/09/09(日) 16:07:41
>>257
ascii以外の文字列はプログラム内部ではunicodeで扱ったほうが良いと思う。
260デフォルトの名無しさん:2007/09/09(日) 16:39:27
>>257
× b="月のたまご"
○ b=u"月のたまご"

それじゃせっかく coding:utf-8 しても意味なし

また、u"" の付かないただの文字列に ascii 以外の文字を入れたいのなら
文字を直接入れずに \xhh 形式のエスケープシーケンスで入れた方が
ソースのエンコーディングに影響されないので良
ttp://www.python.jp/doc/release/ref/strings.html
261デフォルトの名無しさん:2007/09/09(日) 16:55:15
258さん 259さん 260さん、本当に有難うございました。
これで二日悶々としました。今夜は眠れます。
262デフォルトの名無しさん:2007/09/09(日) 16:56:35
StringIOだとunicodeのままで読み書きできるけど
cStringIOだと8bitに変換されてしまうんだねえ

こういうのってソース見るしかない?
263デフォルトの名無しさん:2007/09/09(日) 16:58:17
Python3000リリースマダー
264デフォルトの名無しさん:2007/09/09(日) 17:38:29
>>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.
265デフォルトの名無しさん:2007/09/09(日) 18:12:21
>>264
2バイト文字を入れたいんだろ?
utf-8 指定してどうするんだよ

b=u"月のたまご".encode("shift-jis")

とでもするか、260の言うように\xhh 形式のエスケープシーケンスで入れるか
行頭のソース・エンコード指定を shift-jis にでもしないと駄目だろ
266デフォルトの名無しさん:2007/09/09(日) 21:21:06
>>263
α1なら出たよ
finalはあと一年くらいかかる予定らしいよ
267デフォルトの名無しさん:2007/09/10(月) 05:18:15
>>58-116
一週間……。
268デフォルトの名無しさん:2007/09/10(月) 12:46:18
python関連でお勧めのブログありませんか?
269デフォルトの名無しさん:2007/09/10(月) 17:50:57
常山日記あたりかな
でもここは古典的な「Weblog」なので
リンクがあるだけでそこ自体に内容は無いけれど
270デフォルトの名無しさん:2007/09/11(火) 06:11:28
「みんなの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
>>269
ありがとうございます
272デフォルトの名無しさん:2007/09/11(火) 12:27:48
>>270
teminal のシェルは何?
スクリプトをファイルに保存して実行したらどうなる?
273デフォルトの名無しさん:2007/09/11(火) 12:37:13
>>270
まず、pythonのバージョンは?
274デフォルトの名無しさん:2007/09/11(火) 12:47:39
275デフォルトの名無しさん:2007/09/11(火) 15:20:27
>>270
コンソールでそれやると環境によってまちまちな結果になる
それを注記していないその本が入門書として不親切
気にするな
276デフォルトの名無しさん:2007/09/11(火) 15:40:58
4chan BBS - Evolution of a Python programmer
http://dis.4chan.org/read/prog/1180084983/

あなたはどの段階?
277デフォルトの名無しさん:2007/09/11(火) 15:49:13
@tailcall?
278デフォルトの名無しさん:2007/09/11(火) 16:23:31
>>270,275
なんという予定調和!!!
279デフォルトの名無しさん:2007/09/11(火) 18:18:50
>>275
>それを注記していないその本が入門書として不親切

ちゃんと書いてあるよ
275の頭がおかしいだけ
気にするな
280デフォルトの名無しさん:2007/09/11(火) 19:03:00
>>270
とりあえず186ページまで読んでみるんだ
おもいっきり書いてあるから
281デフォルトの名無しさん:2007/09/11(火) 19:06:48
みんPy批判すると必ず基地外あつかいされるんだよな。
何でだろうね?>>作者様
282デフォルトの名無しさん:2007/09/11(火) 19:08:39
俺もこの本持ってるけどUTF-8での出力に関して
MacOSXなどの一部の環境では〜
とこれでもかっていうぐらいハッキリと書いてあるよな
何の確認も無しで 不親切扱いされた本は可哀想だなw
283デフォルトの名無しさん:2007/09/11(火) 19:09:22
そういう意味深な疑問を作者にぶつける奴が現れるのが
楽しいからじゃね?
284デフォルトの名無しさん:2007/09/11(火) 19:36:58
いつの間にか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がほしい。
285デフォルトの名無しさん:2007/09/11(火) 19:47:40
次は一気に、3かな・・・・
286270:2007/09/11(火) 20:14:29
皆さん親切にありがとうございます。
私のせいで荒れてしまったようで申しわけない

p168〜p188まで読んでネット漁りはしたのですが
encode()で解決しなくて環境変数いじるの躊躇して書き込みました

bash python2.44 OSX10.4.9でしたごめんなさい

>>272>>275
ファイルに保存して実行したら本の通りインデックス6になりました
コンソールでやるのと保存して実行するので変わるんですね、これから頭に入れておきます
printの方はやはり環境変数弄るしかないようですね

無知な質問にレス下さってありがとうございました
287270:2007/09/11(火) 20:49:27
printの方もファイル保存してから実行
print ユニコード文字列.encode("utf-8")でいけました

encode()してからprintしてた・・・どこまでアホなんだ・・・
これですっきりいきました。皆さん感謝
288デフォルトの名無しさん:2007/09/11(火) 23:26:08
>>281
批判じゃないな
あからさまに書いてあることも読めないで本を不当に評価しているだけだ
そういうことをするやつのことを
「頭がおかしい」と正しく状況を説明してやるのは親切というものだぜ

不快に感じるのはオマエの頭がおかしいからだよwwwwwwwww
289デフォルトの名無しさん:2007/09/11(火) 23:42:41
何でこんな話し方になっちゃうの?
290デフォルトの名無しさん:2007/09/11(火) 23:51:14
みんぱい批判する人を基地外扱いすると、なんで作者呼ばわりされるの?
どんだけ狭い世界に住んでいるんですか?
291デフォルトの名無しさん:2007/09/12(水) 00:05:19
>>290
みんぱいを批判する人を基地外扱いするのが地球上に作者しかいないことが
ダイジョーブ博士によって証明されているから。
292デフォルトの名無しさん:2007/09/12(水) 00:05:38
いや、その、・・・返す方もどうして攻撃的になっちゃうんですか・・・・
293デフォルトの名無しさん:2007/09/12(水) 00:13:56
だって永久凍土なんだもん
294デフォルトの名無しさん:2007/09/12(水) 00:27:02
このスレを読むとキチガイには何を言っても無駄だと言うことがよく分かるねWWW
295デフォルトの名無しさん:2007/09/12(水) 00:27:04
どうせ批判するんだったら具体的にいこうよ

みんPy読んで一番ひどいと思ったのは、424ページ
> ElmeentTreeを使うと、XMLやHTML文書の構造をElementと呼ばれるオブジェクトに
> 変換することができます。既存のXMLやHTMLを読み込んでPythonに取り込むだけ
> でなく、新しく作ったElementオブジェクトを使ってXMLやHTMLを書き出すこともできます
ElementTree使ったことないんだったら本に載せるなと
296デフォルトの名無しさん:2007/09/12(水) 00:30:04
このスレを読むとキチガイは自らの行動でキチガイぶりを証明すると言うことがよく分かるねwwwww
297デフォルトの名無しさん:2007/09/12(水) 00:33:03
なにか嫌なことでもあったの?
298デフォルトの名無しさん:2007/09/12(水) 00:37:54

                     |\
┌──────────┘- \
│  気の触れた方が          \
│                     /
└──────────┐- /
      ヽ(´ー`).ノ       |/
        (  へ)
        く

                  - = ≡三                    |\
               - = ≡三  ┌──────────┘- \
               _ = ≡三    │                     \
                ̄ = ≡三    │     いらっしゃいます       /
               - = ≡三  └──────────┐- /
        (´ー`)        - = ≡三                     |/
      ( ヽ ヽ)
       /  >
299デフォルトの名無しさん:2007/09/12(水) 03:36:04
流れをぶった切って質問。
Python2.5.1 を Win にインストールしたところ、
タスクバー右端に Python2.5 という文字と小さい
ボタンが表示されるようになったのですが、非表示に
する方法はありますか?
「ここを読め」とかで構いません。
300299:2007/09/12(水) 05:45:58
ごめん。
単にタスクバー右クリックから消せました。
301デフォルトの名無しさん:2007/09/12(水) 09:51:36
module1.func1を完全に再定義したつもりで
--module2.py--
from module1 import *
def func1
 print ....
のように書いたのですが、module1.pyの中のfunc1が呼ばれる場合
があるのです。これは何故でしょうか?
--module2.py--
from module1 import *
def func2
 print ....

func1=func2
と書いても同じでした。
302301:2007/09/12(水) 09:53:56
ああ、すいません括弧とセミコロン抜けてます。
急いで書きすぎた。
303デフォルトの名無しさん:2007/09/12(水) 10:17:22
module2をimportしてないからじゃね?
304301: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の書き方では再定義にならないということでしょうか?
どう書けばいいですか?
305デフォルトの名無しさん:2007/09/12(水) 11:02:32
お前みたいなアホはPythonの名前空間についてもっとよく勉強するべきだ。
入門書嫁。
306デフォルトの名無しさん:2007/09/12(水) 11:08:16
Pythonオワタ・・・

50倍以上の高速化を達成したRuby1.9が年内に登場
http://itpro.nikkeibp.co.jp/article/NEWS/20070909/281502/
307デフォルトの名無しさん:2007/09/12(水) 11:11:49
10倍も水増しすんな。南京大虐殺かよw
308デフォルトの名無しさん:2007/09/12(水) 11:12:58
http://pc11.2ch.net/test/read.cgi/tech/1099804004/l50

こっちでどうぞ。

明確な仕様のない言語で、VMを入れ替えて何が起こるか見物だな。
大勢にとってはRoRが動けばいいんだろうけど、果たして動くまでどのくらいかかるのかな。
309デフォルトの名無しさん:2007/09/12(水) 11:12:58
なんで?
310デフォルトの名無しさん:2007/09/12(水) 12:08:05
>>306
こんなくだらないものに税金を使いすぎ
311デフォルトの名無しさん:2007/09/12(水) 17:12:47
思春期みたいなエネルギッシュな噛み付き方で
おじさんまぶしいわぁ
312デフォルトの名無しさん:2007/09/12(水) 17:42:57
だってpythonは一気に3000だから!
313デフォルトの名無しさん:2007/09/12(水) 17:52:09
ダッキューンってな感じで3000ですから
314デフォルトの名無しさん:2007/09/12(水) 18:05:04
315デフォルトの名無しさん:2007/09/12(水) 18:13:18
>>314
初心者だから分からないんだけど、これ読んだらタメになるの?それともダメになるの?
316デフォルトの名無しさん:2007/09/12(水) 18:20:22
「はじめに」の時点でいきなり猛烈な抵抗感があるな。
317デフォルトの名無しさん:2007/09/12(水) 18:26:54
お前らパイパイ弄ってんのか、ホント変態だな。
318デフォルトの名無しさん:2007/09/12(水) 18:48:06
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)))))
319デフォルトの名無しさん:2007/09/12(水) 18:49:01
ファイルを開くにはfileよりopenのほうがいいってさっき知った
ずっとfile使ってたなあ
320デフォルトの名無しさん:2007/09/12(水) 18:50:54
> 例えば、emacs等のエディタの自動インデントにおいては、
> インデントでブロックを表すというのは不便な仕様です。
10年プログラマをやってて Emacs が何かをまだ理解していないらしい。
321デフォルトの名無しさん:2007/09/12(水) 18:59:38
>>315
初心者にはこれっぽっちも役に立たん
チュートリアルを細切れにして8割捨てて残りを適当に並び替えた感じ
322デフォルトの名無しさん:2007/09/12(水) 19:04:02
>>314
ここまで適当の文章をよく公開してるなwwwww
323デフォルトの名無しさん:2007/09/12(水) 19:13:52
>もしかすると本当のPythonistaからお叱りを受けるような内容も含まれるかもしれませんが、その点はTBやコメントでご教授頂けると幸いです。
>もしかすると本当のPythonistaからお叱りを受けるような内容も含まれるかもしれませんが、その点はTBやコメントでご教授頂けると幸いです。
>もしかすると本当のPythonistaからお叱りを受けるような内容も含まれるかもしれませんが、その点はTBやコメントでご教授頂けると幸いです。
324デフォルトの名無しさん:2007/09/12(水) 19:44:22
× Pythonを使うからには、この強力なドキュメント機能を使わないわけにはいきません。
○ Pythonを使うからには、この強力なドキュメント機能を使わない手はありません。
325デフォルトの名無しさん:2007/09/12(水) 21:05:30
数学屋なら、PythonじゃなくてHaskellに行きそうなのにと思うのは偏見だろうか。
つか、この人Perlの記事も書いてるな。
いや、何を書こうが使おうが自由なんだけどさ。
326デフォルトの名無しさん:2007/09/12(水) 21:16:16
cities = [ '福岡','広島','大阪','名古屋','東京','札幌' ]

for i in range(6):
print cities[i],

#やっとこれだけ出来た
327デフォルトの名無しさん:2007/09/12(水) 21:22:02
for i in cities: print i

で出来ちゃうんだけどな
328デフォルトの名無しさん:2007/09/12(水) 23:01:24
>>304
setattr(mod,'func1',func2)
329デフォルトの名無しさん:2007/09/12(水) 23:16:42
>>328
それをやりたくないんだろ
330デフォルトの名無しさん:2007/09/12(水) 23:26:40
じゃあ、何がやりたいんだ?
331デフォルトの名無しさん:2007/09/13(木) 00:09:54
>>328
それは無理じゃね
332デフォルトの名無しさん:2007/09/13(木) 01:00:01
>>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))
333デフォルトの名無しさん:2007/09/13(木) 13:17:43
open って file のシノニムじゃなかったの?
obsolute 扱いで3000では消えるんだと思ってた。
334デフォルトの名無しさん:2007/09/13(木) 13:51:25
こういう風に使うから open の方が統一がとれる気もするんだよね。
obj = module_name.open(name, ...)
335デフォルトの名無しさん:2007/09/13(木) 14:16:57
現状では別に統一取れてないと思うが
同じアーカイバ系でもtarやgzipにはopenエイリアスがあり
zipやbzip2にはないなど、てんでバラバラ

StringIOやsocketのように、file-like objectを作るけれどもopen()で
作成するのが自然とは思えない(し、そうなっていない)ものもあるし
336デフォルトの名無しさん:2007/09/13(木) 14:58:38
http://mail.python.org/pipermail/python-dev/2004-July/045921.html
英語あんまり読めないんだけど、openはファクトリ関数であって
必ずしもfileのインスタンスを返すとは限らない(ようにしたい)ってことか?
open = fileだったのは今までの当座の実装であったと。
本当にfileクラスのインスタンスを作成したいなら今まで通り
fileコンストラクタが使えるということ?
337デフォルトの名無しさん:2007/09/13(木) 15:39:42
>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)").

コンストラクタとして使うべきじゃない?
338デフォルトの名無しさん:2007/09/13(木) 17:52:49
空行 を '---' で置換するにはどうしたらよいですか?

data = '---'.join(data.split("\n"))

と書くと、空行以外の行にも、区切り線'---'が入ってしまいます orz
339デフォルトの名無しさん:2007/09/13(木) 17:58:13
正規表現\n{2,}を置換するとか
340デフォルトの名無しさん:2007/09/13(木) 17:59:53
data = '---\n'.join(data.split("\n\n"))

こう?
341338:2007/09/13(木) 18:21:50
自己解決スマソ。
data = '\n---\n'.join(data.split('\r\n\r\n'))

でうまくできました。改行コードのとこで splitに失敗してたのね orz
342デフォルトの名無しさん:2007/09/13(木) 20:07:54
Python 3000 では open(xxx, "r") と open(xxx, "rb") で違うオブジェクトが返却されるんじゃなかったっけ?
343デフォルトの名無しさん:2007/09/13(木) 20:10:08
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
344デフォルトの名無しさん:2007/09/13(木) 20:13:12
>>343
>>> file=open

オレが復活の儀式を行ってやったよ。
345デフォルトの名無しさん:2007/09/13(木) 20:35:58
はいになりました
346デフォルトの名無しさん:2007/09/13(木) 23:21:59
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)
347デフォルトの名無しさん:2007/09/14(金) 07:32:50
dictionary['key'].append('out')

はdictionary['key']を評価し終わってから(つまり__getitem__が終了してから)、その返り値のリストに対して、.append('out')を呼び出すので、
__getitem__を弄ってもチェックは出来ない。

リストもmylistで定義するのが一番簡単だと思われる。
348デフォルトの名無しさん:2007/09/14(金) 07:36:23
それ以前に普通のpython使いなら
assert(len(filter(lambda x: x in allowed, v)))
なんていうことは書かない。
普通だったら、
for x in v:
   assert x in allowed
349デフォルトの名無しさん:2007/09/14(金) 07:37:59
あ、ちょっと待てよ、意味違うなぁ・・・
350デフォルトの名無しさん:2007/09/14(金) 10:13:35
少なくともlenは不要
351デフォルトの名無しさん:2007/09/14(金) 11:06:37
スライス[start:stop]が、区間[start,stop]ではなく、区間[start,stop)になった理由って何だっけ?
352346:2007/09/14(金) 11:51:26
結局リストをサブクラスしました。lenは確かにいりませんね。
ありがとうございました。
353デフォルトの名無しさん:2007/09/14(金) 11:57:51
>>351
L がリストとして

L = a[:len(L)]

とか書けるようにじゃないかな
あるいは a[:] と a[0:len(a)] が一致するように、という説明でもいいけど
354デフォルトの名無しさん:2007/09/14(金) 17:47:39
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'
と表示します。
解決方法が分かりません。なにかインストールモジュールが不足しているのでしょうか??
お願いします。
356デフォルトの名無しさん:2007/09/14(金) 18:02:37
インタプリタがAIを搭載して話しかけてくれます。
357デフォルトの名無しさん:2007/09/14(金) 18:28:06
>>355
ググってみたら、こんなのがあった。
ttp://coding.derkeiler.com/Archive/Python/comp.lang.python/2006-10/msg05634.html
FedoraCore 5 だと動くけど FedoraCore 6 じゃ動かないらしい・・
358新人:2007/09/14(金) 21:04:53
>>357
ありがとうございます。
6で動かないなら7でも動かないのでしょうね。
BindのAttributeErrorの件はGoogleでもたくさん引っかかるのですがどれも理解できませんでした。
引き続き勉強しますが新人では荷が重いです。
では。
359デフォルトの名無しさん:2007/09/14(金) 21:06:57
wxPython のバージョンは?
360デフォルトの名無しさん:2007/09/16(日) 03:26:55
文法ですが、
@って何に使うんでしょう?
記号をなるべく排除した文ベースの言語だって聞いたけど・・・
361デフォルトの名無しさん:2007/09/16(日) 04:23:30
Decorators for Functions and Methods
ttp://www.python.org/doc/2.4.4/whatsnew/node6.html
362デフォルトの名無しさん:2007/09/16(日) 07:46:22
def foo(cls):
   pass
foo = synchronized(lock)(foo)
foo = classmethod(foo)

コレが、

@classmethod
@synchronized(lock)
def foo(cls):
   pass

こう書ける。
363デフォルトの名無しさん:2007/09/16(日) 08:12:59
3000からはclassに対しても使える予定。
PEP-318を読むと、導入に至った経緯が分かる。
364デフォルトの名無しさん:2007/09/16(日) 20:36:21
L = ['foo', 'bar', 'baz']
[ s for s in L if re.match(r'ba', s) ]
をもっと手軽にする方法はありますか。
Perlのgrepみたいなのを考えています。
365デフォルトの名無しさん:2007/09/16(日) 21:10:15
これ以上はないような気がする。
perlと違って、
・正規表現(を囲む部分?)を短く書けない
・リストの要素を関数に適用する場合の「一時的な仮変数名」を省略できない
だから。
366デフォルトの名無しさん:2007/09/17(月) 06:49:33
re.grep(r'ba', L)
みたいなのがないかなと思ってました。
なさそうということなので、自分で作ることにします。
ありがとうございました。
367デフォルトの名無しさん:2007/09/17(月) 10:22:19
A, B, Cはクラス
aobj = A()
bobj = B()
cobj = C()
lst = [aobj, bobj, cobj]
という状況で
lst[1]がクラスBのオブジェクトかどうか判定したいときはどのように書けばよいのでしょうか?
Javaの
if (lst[1] instanceof B) {...}
と同じことがしたいのです。アドバイスお願いします。
368デフォルトの名無しさん:2007/09/17(月) 10:28:48
isinstance(lst[1], B)
369デフォルトの名無しさん:2007/09/17(月) 11:27:59
>>368
ありがとうございます。できました。
370デフォルトの名無しさん:2007/09/17(月) 16:52:49
>>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をロードしようとして・・・以下繰り返しになってしまいますか?
372デフォルトの名無しさん:2007/09/17(月) 18:23:53
試してみれば?
373デフォルトの名無しさん:2007/09/17(月) 18:53:24
うまくいかなかったです
モジュールbでaの関数呼ぼうとしたところで定義されてませんエラー
設計が悪いのかも・・・
374デフォルトの名無しさん:2007/09/17(月) 19:12:05
---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回表示されるみたい、(しかも微妙に異なる
なんかこの辺の話題どっかに在った気がするけど、忘れた、・・・
375デフォルトの名無しさん:2007/09/17(月) 20:23:47
>>373
実験的な興味の質問じゃなくて、実際に何かプログラム作ってるんだったら
設計を見直すべきだと思う。
376デフォルトの名無しさん:2007/09/17(月) 22:10:28
python学び始めて
tkinterでウィンドウ表示するくらいまで勉強したんだけど、
次どんなのを勉強したらいいですか?
377デフォルトの名無しさん:2007/09/17(月) 22:16:06
好きなもの何でも作れ
378デフォルトの名無しさん:2007/09/17(月) 22:37:54
ニコニコ動画のダウンローダとかちょうどいい課題かも
379デフォルトの名無しさん:2007/09/18(火) 01:03:34
>>376
まったく役に立たないものを勉強したんだねwww
380デフォルトの名無しさん:2007/09/18(火) 01:13:33
標準ライブラリにwxWidgetsの追加キボン
381デフォルトの名無しさん:2007/09/18(火) 02:01:55
標準ライブラリにPygameの追加キボン
382デフォルトの名無しさん:2007/09/18(火) 02:06:22
標準ライブラリに
wxPython
decorator
pysco
追加キボン
383デフォルトの名無しさん:2007/09/18(火) 02:07:45
プログラムのデバッグをしたいんだけどお勧めのIDEはなんかある?
384デフォルトの名無しさん:2007/09/18(火) 02:11:36
誰か「お勧めIDE一覧」をFAQに追加してー
385デフォルトの名無しさん:2007/09/18(火) 02:14:06
デバッガーが欲しいのかIDEが欲しいのかよく分からんな。
386デフォルトの名無しさん:2007/09/18(火) 02:19:23
range と xrange の関係はずっとこのまま?
387383:2007/09/18(火) 02:50:42
>>385
欲しいのはGUIデバッガーです。
388デフォルトの名無しさん:2007/09/18(火) 04:14:51
>386
Python3.0ではrangeがxrange相当になってxrangeは消えるとさ。
ttp://www.artima.com/weblogs/viewpost.jsp?thread=208549
389デフォルトの名無しさん:2007/09/18(火) 04:16:14
で、Visual Studioでデバッグできるようになるのはいつ?
390デフォルトの名無しさん:2007/09/18(火) 09:34:11
今日の今日までxrangeはジェネレータだと思ってたorz
391デフォルトの名無しさん:2007/09/18(火) 09:38:50
xrangeはジェネレータができる前からあったんだぜ。
392デフォルトの名無しさん:2007/09/18(火) 09:40:22
これから xrange 復活の呪文をとなえます

>>> xrange = range
393デフォルトの名無しさん:2007/09/18(火) 10:02:01
ついでに旧rangeも復活させときますね

>>> def range(*v): return list(xrange(*v))
394デフォルトの名無しさん:2007/09/18(火) 10:08:09
2進数採用か。
でも 0b00110000_01000000 みたいな記法が出来ないと見づらいがな(´・ω・`)
というか、デバドラ書いたりするC/C++で却下されまくりこそ問題だけど。

8進数の仕様変更は妥当かな。
0435 こんなの8進数だと気づかないで流し読みしちゃうし(0o0)
395デフォルトの名無しさん:2007/09/18(火) 12:10:19
>>394
8進は大昔のCからそういう表記だったけど。
396デフォルトの名無しさん:2007/09/18(火) 12:18:20
そのCの表記を判りづらいと思う人もいるってことさ
397デフォルトの名無しさん:2007/09/18(火) 12:47:19
オレは知っている。394は四次元世界から来たのだと。
398デフォルトの名無しさん:2007/09/18(火) 12:52:23
現実って26次元くらいらしいよ
399デフォルトの名無しさん:2007/09/18(火) 13:06:00
キモいよオッサン
400デフォルトの名無しさん:2007/09/18(火) 13:07:02
398\(゚o゜)バキ
401394:2007/09/18(火) 13:37:17
int i = 0o123;
大昔からそうだったってgccコンパイル通らん。
どのコンパイラ?
402デフォルトの名無しさん:2007/09/18(火) 13:43:55
文脈読んだ。↑の無しね。
人を異次元生物にしないでくれ。
俺は善良な触手なんだから。
403デフォルトの名無しさん:2007/09/18(火) 13:55:44
>>394
>デバドラ書いたりするC/C++で

C++でデバドラ書く能無しどこにいるんだよ。実例を挙げてみなさい。
404デフォルトの名無しさん:2007/09/18(火) 14:03:09
tkinterって何がダメなの?教えてください!!!!!!!!!!!!!!!!!!!11
405デフォルトの名無しさん:2007/09/18(火) 14:29:28
wxPythonの方がGUIの部品が多くてかっこいいらしい
406デフォルトの名無しさん:2007/09/18(火) 14:33:05
そんな理由かよwwww
407デフォルトの名無しさん:2007/09/18(火) 14:34:06
犬厨にはわからないかもしれないがOSのネイティブアプリっぽく見えないなら
そんなツールキットに存在価値はない
408デフォルトの名無しさん:2007/09/18(火) 14:36:17
何を作るかによるだろ。
客に使わせるわけではないようなラッバーGUIとかなら手軽な方がいいし。
おまえ友達いないだろwwww
409デフォルトの名無しさん:2007/09/18(火) 14:38:19
tkinterは日本語入力できない、ってあったような・・
410デフォルトの名無しさん:2007/09/18(火) 15:07:44
>>403
Symbianとか。
あと2進数使えるとうれしいのはSystemCだな。
411デフォルトの名無しさん:2007/09/18(火) 17:59:49
403涙目wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
412デフォルトの名無しさん:2007/09/18(火) 18:10:57
このスレってまともな質問もなければまともな回答もまったくないね
413デフォルトの名無しさん:2007/09/18(火) 18:15:33
今、連番ファイルの簡単なGUIダウンローダをTkinterを使って作ってる。
ところでthreadモジュールのスレッドを終了させるにはどうすればいい?
ファイルをダウンロードするスレッドを走らせたあとで、GUIフォームの
URLの欄を間違ったことに気づいたり何かしたときに、スレッドを停止さ
せられる仕様にしたいんだが・・・
414デフォルトの名無しさん:2007/09/18(火) 18:30:59
>>409
日本語は問題無いと思います。
415デフォルトの名無しさん:2007/09/18(火) 18:58:17
>>410

はいはいSymbianね。他にもC++でデバドラ書いてる実例があれば
挙げても構いませんよ。
416デフォルトの名無しさん:2007/09/18(火) 19:00:05
イタタ
417デフォルトの名無しさん:2007/09/18(火) 19:01:03
開き直ったwwwwwwww
結局ただの荒らしかwwwwwwwwwww
418デフォルトの名無しさん:2007/09/18(火) 19:23:08
>>413
ダウンロードスレッドに対して「ダウンロードを中止して終了せよ」と通知する仕組みを設ければよい。
排他制御を施したキューでメッセージを授受するのが定石だと思われ。
419デフォルトの名無しさん:2007/09/18(火) 19:33:15
>>418
やってみる。・・・もとは簡単なCUIアプリだったのにGUIのフロントエンドを
作ろうした途端にスレッドやら排他制御やら。大変だ〜。
420デフォルトの名無しさん:2007/09/18(火) 19:53:51
irvineで間に合ってます
421デフォルトの名無しさん:2007/09/18(火) 19:54:48
最近ブラウザでエロ画像なんて見てないな・・・
422デフォルトの名無しさん:2007/09/18(火) 20:28:04
P2P!!!P2P!!!
423デフォルトの名無しさん:2007/09/18(火) 20:51:45
>>416-417
空前の馬鹿発見。
>>403を良く読め。俺は「どこにいるのか」と訊いているんだ。
なのに能無しの>>410は、日本語もろくに読めないせいで、ブツのほうを書いて自己満足してやがる。
Symbianを生み出した人間達が今どこにいるのか、を書かなきゃ、回答したことにならないんだよ。
だから>>415でテキトーにあしらってやったんだ。教育的指導としてな。わかったかカス。
424デフォルトの名無しさん:2007/09/18(火) 20:55:36
いっしょうけんめいかんがえたんだね
えらいね
がんばったね
じんせいもおなじくらいがんばろうね
425デフォルトの名無しさん:2007/09/18(火) 20:56:04
外基地は放置で
426デフォルトの名無しさん:2007/09/18(火) 20:57:09
なんでそんなに元気なんだよ
つかWindowsでもC++でデバイスドライバ書けないことはないらしいぞ
話に聞いたことがあるって程度だが
あとUMDFというのがあってだな
427デフォルトの名無しさん:2007/09/18(火) 20:58:43
いくら>>424が外基地だからって、放置呼びかけは可哀相だろ。
「ネットに書き込むこと」と「人生」が排他の関係にあると思ってる間抜けだからって、ハブしちゃいけない。
428デフォルトの名無しさん:2007/09/18(火) 21:03:46
これはモノホンだwwww
429デフォルトの名無しさん:2007/09/18(火) 21:06:26
>>427
「くだらない妄想を垂れ流すことと」と「人生を頑張る」ことは
排他関係にあると思うけどなあ(プゲラw
430デフォルトの名無しさん:2007/09/18(火) 21:08:48
( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
431デフォルトの名無しさん:2007/09/18(火) 21:09:02
さぁ、おまえら、早くPythonのお勉強をする作業に戻るんだ。
432デフォルトの名無しさん:2007/09/18(火) 21:09:54

                     |\
┌──────────┘- \
│  気の触れた方が          \
│                     /
└──────────┐- /
      ヽ(´ー`).ノ       |/
        (  へ)
        く

                  - = ≡三                    |\
               - = ≡三  ┌──────────┘- \
               _ = ≡三    │                     \
                ̄ = ≡三    │     いらっしゃいます       /
               - = ≡三  └──────────┐- /
        (´ー`)        - = ≡三                     |/
      ( ヽ ヽ)
       /  >
433デフォルトの名無しさん:2007/09/18(火) 21:10:38
Pythonで真性キチガイを駆除するコードはどう書きますか?wwww
434デフォルトの名無しさん:2007/09/18(火) 21:20:03
>>389
Iron
435デフォルトの名無しさん:2007/09/18(火) 22:01:01
使いやすいデバッガが出てこないのは
そもそもコア開発者達がデバッガを必要としてないんだと思う。
436デフォルトの名無しさん:2007/09/18(火) 22:29:32
ぶっちゃけ Python プログラミングにデバッガって要る?
個人的な印象だけど、やっかいなバグに何日も悩んだ経験がCではあるのにPythonではない。
なんでだろう。
どちらもエディタで書いてコマンドラインで実行するスタイル。
Cの場合、デバッガはほとんど使わずprintfの大量挿入でバグ取りしている。

思うにPythonのトレースバックが(例えば)gdbのwhereコマンドに相当していて、
あとはprint文の大量挿入で用が足りるからデバッガの出る幕がないという感じ。

大方そんなところなんでは。
437デフォルトの名無しさん:2007/09/18(火) 22:32:07
pdbは便利だと思うがなぁ。
あと、マルチスレッドプログラミングしてるとたまに困る。
438デフォルトの名無しさん:2007/09/18(火) 22:38:13
いまどきCでprintfデバグはちょっとなあ

pythonは例外やらreprやらが便利なので、確かにデバッガなくても
あんまり困らないかも
439デフォルトの名無しさん:2007/09/18(火) 22:53:18
>>429
こととと?
そんな興奮すんなよ。
お前の書き込みがくだらないのはわかってるから大丈夫だよ。

俺の簡潔な質問の意味さえ正しく理解できなかったのは確かに馬鹿丸出しだし、
それを指摘しただけで意味不明の興奮状態に突入するのは痛すぎるけど、匿名なんだから
お前がこの過ちから何かを学び取れれば、お前の生活には大したダメージは無いし、結果オーライだよ。
440デフォルトの名無しさん:2007/09/18(火) 23:01:59
KY
441デフォルトの名無しさん:2007/09/18(火) 23:03:27
キチガイは妄想の中のバグをデバッグしつづけたりするんだろうか…。
442デフォルトの名無しさん:2007/09/18(火) 23:05:00
やめなよ
443デフォルトの名無しさん:2007/09/18(火) 23:11:44
>>439
基地外の質問の意味は残念ながら理解不能だぜww
444デフォルトの名無しさん:2007/09/18(火) 23:45:19
>>443
言い訳する前に日本語を勉強し直したほうがいい。

>>441
かもしれないなぁ。こいつ大丈夫だろうか。
445デフォルトの名無しさん:2007/09/19(水) 00:04:01
地元で一番大きな本屋に行ってPyhonの本を探したが無かった
Ruby,C,PHP,JAVAはあったけど 金が無いんで立ち読みしたかった
[ 田舎]
446デフォルトの名無しさん:2007/09/19(水) 00:05:58
ソースコードデバッガは、プログラミングの勉強に効果があると思うんだ。
447デフォルトの名無しさん:2007/09/19(水) 00:14:34
どんなによくできたデバッガを使っても
キチガイの頭の中にある不具合はなおせないんだぜwwwwwwww
448デフォルトの名無しさん:2007/09/19(水) 00:52:06
>>426
>あとUMDFというのがあって

ユーザーモードドライバね。それはありかも。
実はそれをPythonまたはPython+Cで書くのが有望でないかと思う
今日このごろ。

それもC++で書くと、この能無し!と罵る人もいるので気をつけると
いいかもしれません。
449デフォルトの名無しさん:2007/09/19(水) 01:07:34
無駄にスレが消費されてるね。連番ダウンローダできた。
フラグのためのクラス変数を追加して、さらにCUIバージョンで定義していた
クラスのメソッドをちょっと変更して、"停止"に対応するボタンが押されたら
例外を送出するようにした。結局、キューとかは使わなかった。でも
教えてくれた人ありがと
450デフォルトの名無しさん:2007/09/19(水) 01:58:26
お知恵を拝借させて下さい 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'
451デフォルトの名無しさん:2007/09/19(水) 02:03:57
No such file or directory: 'someTextFile'
和訳:someTextFileというファイルまたはディレクトリは存在しません
someTextFileを実際にあるファイルのパスに置き換えれば動くよ。
452デフォルトの名無しさん:2007/09/19(水) 03:30:20
例えばスクリプトファイル自体とかね。

fi=open("someTextFile")
 ↓
fi=open("hiyouji18.py")
453デフォルトの名無しさん:2007/09/19(水) 07:24:56
いちおう言っとくと、例題では readlines() 使ってるけど普通は
for line in fi::
    print line
これでいい
454デフォルトの名無しさん:2007/09/19(水) 07:43:50
::
455デフォルトの名無しさん:2007/09/19(水) 14:38:19
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' として登録される
456デフォルトの名無しさん:2007/09/19(水) 15:48:43
sys._getframe(1).f_code.co_name
457デフォルトの名無しさん:2007/09/19(水) 16:10:22
>>456
ありがとうございます。
望むものが得られました。
458デフォルトの名無しさん:2007/09/19(水) 17:05:58
Python3000のprintは素晴らしく使いづらいな
459デフォルトの名無しさん:2007/09/19(水) 19:19:21
python3000ってなに?
460デフォルトの名無しさん:2007/09/19(水) 19:30:53
461デフォルトの名無しさん:2007/09/19(水) 19:37:58
b=int(key[1:2])
ValueError: invalid literal for int() with base 10: '-'
なんてエラーが急にでるようになったんだけどどうしたらいいですか?
462デフォルトの名無しさん:2007/09/19(水) 19:41:37
「key」の中身は何なの?
463デフォルトの名無しさん:2007/09/19(水) 19:43:33
文字列
464デフォルトの名無しさん:2007/09/19(水) 19:47:39
なるほど、数字じゃなくて-が入ってたのがわるいみたいでした。
465デフォルトの名無しさん:2007/09/19(水) 19:58:56
pythonってCのgotoみたいなのないの?
466デフォルトの名無しさん:2007/09/19(水) 20:29:13
ない。おそらく今後も、GOTOそのものが追加されることは無い。
ただcall/ccが何かのきっかけでついかされることはなくもなくもない、と思う。
467デフォルトの名無しさん:2007/09/19(水) 20:43:35
エラー・例外からのリトライとか
シェルスクリプト的な書き捨てコードであると便利なのにな。
gotoあれば一発なのにわざわざ無様なフラグ追加してwhileとかでインデントさせられると
敗北感に苛まれてしょうがない
468デフォルトの名無しさん:2007/09/19(水) 20:56:13
Pythonでgotoが欲しいと思ったことってほとんどない気がするなあ。
たぶんgotoが必要だと感じた時点でコードの構成を変えてるんだろうなあ。
関数/メソッドに細分化してgoto→returnにしたりcallableオブジェクトを辞書の値にして分岐したり。
469デフォルトの名無しさん:2007/09/19(水) 20:57:04
今までPythonでgoto欲しくなった事はないな。
ローカル関数やジェネレータ使うし。
470デフォルトの名無しさん:2007/09/19(水) 21:41:49
>>467
ヽ(´Д`)人(´Д`)ノ 
俺もエラー処理のためにgoto欲しいよ。
堅くすればするほど見にくくなって保守性が落ちていく。

いらない云う人はどーやって書いてるん?
471デフォルトの名無しさん:2007/09/19(水) 21:51:34
try 〜 raise 〜 except でとばすんじゃない?
472デフォルトの名無しさん:2007/09/19(水) 22:21:08
エラー処理なら素直に例外使えば
473デフォルトの名無しさん:2007/09/19(水) 22:34:23
>>460
その記事は微妙www
474デフォルトの名無しさん:2007/09/19(水) 22:52:31
>>460
互換性なくなっちゃうのか…
折角python覚え始めたけど別の言語にするかな…
475デフォルトの名無しさん:2007/09/19(水) 22:59:32
こんな感じ?
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
476デフォルトの名無しさん:2007/09/19(水) 23:11:35
デストラクタがないオブジェクト指向言語なんてあるの?
477デフォルトの名無しさん:2007/09/19(水) 23:13:01
>>474
こういう勘違い君が現れるくらい微妙な記事ってことか.
478デフォルトの名無しさん:2007/09/19(水) 23:15:31
そもそもまだα版じゃないか
479デフォルトの名無しさん:2007/09/19(水) 23:16:49
>>476
GC系の言語はデストラクタが仮に存在しても、それが呼び出されるかどうか
なんて普通は保障されてないでしょ
だからJavaも全く似たようなコードになる

C#はusingが使えるから多少マシだが
480デフォルトの名無しさん:2007/09/19(水) 23:17:05
>>475-476
C++は有って、Javaは無いんだっけ。
それとも仕様変わった?
481デフォルトの名無しさん:2007/09/19(水) 23:18:15
2.5 なら

from __future__ import with_statement
from contextlib import closing

with closing(open("test.txt")) as fp:
  print fp.read()

とできる
482デフォルトの名無しさん:2007/09/19(水) 23:21:43
階層が深くなるから>>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
483デフォルトの名無しさん:2007/09/19(水) 23:36:23
>>480
GCがある言語のデストラクタは何時よばれるかわからないのであまり使われていない。
484デフォルトの名無しさん:2007/09/19(水) 23:40:28
リソースを解放する必要があるようなオブジェクトは
それ用のメソッドを大抵もっているので呼べばいい。ディストラクタに期待するのは間違い。
メモリのことはあんま気にすることはないなあ。
メモリを使い切ることが予想される場合には省エネ設計をする。
485デフォルトの名無しさん:2007/09/19(水) 23:51:40
それをどう呼ぶかなんだよなぁ。
例外をポンポン投げられても困る。
IndexErrorやStopIterationとかは例外でいいと思うんだけど。
486186: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)
487デフォルトの名無しさん:2007/09/19(水) 23:54:38
>>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()
488487: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()
489デフォルトの名無しさん:2007/09/20(木) 00:00:41
Pythonのgcは参照カウンタだから破棄タイミングは予測できるんじゃね?
他の実装は良く知らないけど
490デフォルトの名無しさん:2007/09/20(木) 00:05:07
>>487-488
?(゚∀゚≡゚∀゚)?
491デフォルトの名無しさん:2007/09/20(木) 00:06:42
>>489
デコレータやメタクラスが保持してるかもよ
492デフォルトの名無しさん:2007/09/20(木) 00:14:31
おっぱい
493デフォルトの名無しさん:2007/09/20(木) 00:29:30
とりあえずwith構文のありがたみがよく分かった。
494デフォルトの名無しさん:2007/09/20(木) 00:41:30
withおっぱい
495デフォルトの名無しさん:2007/09/20(木) 00:49:24
>>451-453
ありがとうございました 何とが実行出来ました
メモ帳はトラブルの発生原因となる問題が多いそうで、Collmintを使用しました
作成したプログラムを単独で作動するアプリケーション形式にするにはどうしたらいいのでしょうか?
496デフォルトの名無しさん:2007/09/20(木) 00:51:50
っpy2exe
497デフォルトの名無しさん:2007/09/20(木) 04:38:52
>>475はリソースの解放時(input.close()やoutput.close())にエラーが発生してもただしく動く。
>>482はリソース解放時(release0(), release1(), release2())にエラーが発生すると正しく動かない。
release2() # ←これがエラーになるとrelease1()とrelease0()が実行されない
release1()
release0()
>>486>>488も同じバグを持ってる。
リリース解放時にはエラーが発生しないと仮定してかまわないなら、>>488の書き方が単純でよろしい。
ただこれはtry except finally が一続きだから、python2.5以降じゃないとシンタックスエラーになる。
498デフォルトの名無しさん:2007/09/20(木) 04:47:18
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をほしがる必要はないと思う。
499デフォルトの名無しさん:2007/09/20(木) 05:35:18
withがもうあるんだからそれ使えでFAだな
500デフォルトの名無しさん:2007/09/20(木) 06:16:51
close の例外は飛んできても対処できないから
自動的に捨てる関数にやらせればok
501デフォルトの名無しさん:2007/09/20(木) 07:30:33
複数個のファイル開くときに
開いたファイルを逐次リストにappend()して
finallyでは、その時点でリストに入ってるファイル全てにclose()をかける
という風に書いたことはある
502デフォルトの名無しさん:2007/09/20(木) 07:33:35
# 具体的には
filelist = []
try:
  input = open("foo", "r")
  filelist.append(input)
  output = open("bar", "w")
  filelist.append(output)
  # 処理
finally:
  for f in filelist:
    f.close()

という感じだが、closeの例外も補足した方がいいかな?
503デフォルトの名無しさん:2007/09/20(木) 08:06:18
PythonってObject.disposeみたいに明示的なリソース開放メソッド名が統一されてないのか?
504デフォルトの名無しさん:2007/09/20(木) 08:10:40
pythonには三項演算子はないんでしょうか?
文字列を
"asdf" + (i == 0)? "" : "zxcv"
みたいにしたいんですが
505デフォルトの名無しさん:2007/09/20(木) 08:24:16
>504
Python2.5以降なら
'asdf' + ('' if i==0 else 'zxcv')
506デフォルトの名無しさん:2007/09/20(木) 08:39:35
>>498
この場合closeでエラーが出たらどうなるの?
握りつぶし?一番下のexcept?

507デフォルトの名無しさん:2007/09/20(木) 08:46:06
もうお前ら独自のオレ言語作れよ。
508デフォルトの名無しさん:2007/09/20(木) 09:03:37
>>506
二回 close() すれば判るやん。
509デフォルトの名無しさん:2007/09/20(木) 09:05:18
…ごめん今の無視して。頭がぶぴょにってた。
510デフォルトの名無しさん:2007/09/20(木) 09:23:28
>>504
'asdf' + ((i != 0) and 'zxcv' or '')
511デフォルトの名無しさん:2007/09/20(木) 09:36:46
>>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
512デフォルトの名無しさん:2007/09/20(木) 09:37:35
×>>498
>>497
513490:2007/09/20(木) 10:01:08
いまだに違いが分からない俺を助けてくれ
514デフォルトの名無しさん:2007/09/20(木) 10:03:16
文字ベースのチュートリアルじゃなくて
ひたすらサンプルがずらずら並んでて
コメントでコードの説明してるような
入門サイトってないですか?
515デフォルトの名無しさん:2007/09/20(木) 10:54:24
>514
標準ライブラリのソースがあるだろ。大抵のものは揃ってる。
516デフォルトの名無しさん:2007/09/20(木) 11:09:57
>>515
そうそう、
標準ライブラリのソースはクックブックよりよっぽど実用的でためになるお。
517デフォルトの名無しさん:2007/09/20(木) 12:30:14
>511 が何を言いたいのかよくわからん...
518デフォルトの名無しさん:2007/09/20(木) 12:47:27
>>511
ここでいう「エラーが発生する」というのは「例外が発生する」ということ。
(try except finally 使って話してるんだからそのくらいわかれよ。)
511のコードは error と表示してるだけで、実際にはなんのエラーにもなってない。
519デフォルトの名無しさん:2007/09/20(木) 13:12:23
エラーが起きたら例外を raise せずに返り値で渡すような関数にしろってこと?
気持ち悪い
520デフォルトの名無しさん:2007/09/20(木) 13:19:12
俺が>>498に対して
「open,write,closeが例外を一切飛ばさずに
グローバル変数errnoに書き込んでたらtry〜は意味ない」
って云ったら馬鹿だと思わないのか?
521デフォルトの名無しさん:2007/09/20(木) 13:20:39
二重否定はわかりにくいのでできる限り避けましょうね。
頭が悪い人の話し方の典型ですよ。
522デフォルトの名無しさん:2007/09/20(木) 13:54:26
いやです
523デフォルトの名無しさん:2007/09/20(木) 14:45:42
頭が悪い上に意固地なんですね。
可哀想に。
524デフォルトの名無しさん:2007/09/20(木) 15:00:32
closeなんて呼ばなくて良いところがLL言語の良いところだと思ってる。
525デフォルトの名無しさん:2007/09/20(木) 15:06:08
cでも呼ばなくていいけどな
526デフォルトの名無しさん:2007/09/20(木) 15:12:30
非同期のライブラリを探してるんだけど
Twistedばっかり出てくる。
みんなこれで満足できるっていうものなの?
527デフォルトの名無しさん:2007/09/20(木) 15:20:32
>>524
すぐ死んで終わるプログラムならどうでもいいのはCでも同じ
っつかそれなら、よほど大量のメモリを使わない限りはGCすら要らん

一方長いあいだ張り付いているプログラムなら、どんな言語だろうが
リソースリークは避けるべきだろ

つまり言語は関係ない
528デフォルトの名無しさん:2007/09/20(木) 15:25:20
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()
530デフォルトの名無しさん:2007/09/20(木) 16:21:59
うむ、いい時代になった


そしてprintデバッグ・機能下調べがやりづらい時代がやってくる訳だな
]λ.....
531デフォルトの名無しさん:2007/09/20(木) 17:23:07
>>526
自分で判断できないレベルなら手を出さないのが吉
532デフォルトの名無しさん:2007/09/20(木) 17:49:07
>>526
StackLessPython
533デフォルトの名無しさん:2007/09/20(木) 17:50:46
いや、手近にはasyncoreがあるけど
ほかの比較する対象物が検索に引っかからなくて
534デフォルトの名無しさん:2007/09/20(木) 18:07:12
>>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 の狭間でのデータ化けを心配する必要がないので楽だ。もっと使われても良いと思う。
536デフォルトの名無しさん:2007/09/20(木) 20:56:36
>>519
逆だろ。
みんな、エラーが起きたら例外が発生することを前提で話してる。
>>511だけが、例外を発生させてない。
気持ち悪いのは511==519だけ。
537デフォルトの名無しさん:2007/09/20(木) 21:46:16
>>535
これも便利そう。
大学もFortranなんかの講義はやめて
こういうやつを教えればいいのに。
538デフォルトの名無しさん:2007/09/20(木) 21:57:11
でもNumPyとnumpyとnumarray(もううろ覚え)の選択で苦しみそうだ。
というか、結局どれがいいやら私が分からなかった。
539デフォルトの名無しさん:2007/09/20(木) 23:45:27
おっぱい!!
540デフォルトの名無しさん:2007/09/21(金) 00:16:37
guiアプリケーションをつくるぜ!!!
541デフォルトの名無しさん:2007/09/21(金) 00:55:49
  _  ∩
( ゚∀゚)彡 おっぱい!おっぱい!
 ⊂彡
542デフォルトの名無しさん:2007/09/21(金) 01:10:56
>>538
同感。結局 f2py を使いたいので numpy を使ってる
543デフォルトの名無しさん:2007/09/21(金) 02:14:42
>>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 みたいなやりかたはキモい、と
544デフォルトの名無しさん:2007/09/21(金) 02:38:19

    _  ∩
  ( ゚∀゚)彡 おっぱい!おっぱい!
  (  ⊂彡
   |   | 
   し ⌒J
545455:2007/09/21(金) 08:30:40
デコレータをいじっていてようやく気づいたのですが
Pythonにとって class は syntax sugar にしか過ぎないのでしょうか?
546デフォルトの名無しさん:2007/09/21(金) 08:32:46
>>505-510
ありがとうございます
547デフォルトの名無しさん:2007/09/21(金) 08:54:48
>>543
じゃあおまえのもともとの発言>>519がおかしいんだろ。

エラーのときは例外を発生させることを前提で話してるときに、>>511がおかしなことを言い出したから>>518でそれを正した。
そしたら
>>519
>エラーが起きたら例外を raise せずに返り値で渡すような関数にしろってこと?
だれもそんなことを言ってないのに、またおかしなことをいいだした。
話の流れでは、エラー時には例外を発生させることが前提。その逆のことをいってるのは>>511>>519(と>>543)だけ。
同一人物かどうかは知らん。

なにが逆なのか分かった?
548デフォルトの名無しさん:2007/09/21(金) 08:59:01
>>545
2.1まではそうだったかも知れないけど、2.2からは違う。
549455:2007/09/21(金) 09:47:33
>>548
ttp://www.python.org/dev/peps/pep-0252/
ttp://www.python.org/dev/peps/pep-0253/
2.1->2.2の変更点はこの辺みたいですね。
読んでみることにします。
550デフォルトの名無しさん:2007/09/21(金) 09:51:13
>>547
いや本当に逆の意味が分からん
俺も「エラー時には例外を発生させることが前提」であって、
「その逆のことをいってる」>>511気持ち悪い、と言ったんだが

俺はこう推測した:
  511は疑似コードで、実際には releaseX() 内でなにか例外が発生する処理をしているが、
  それを握り潰して (try: 〜 except: pass か何か) 失敗の情報は err に乗せて返す

んで、518がそれを分かってないと思ったから、511の意味(の推測)
>エラーが起きたら例外を raise せずに返り値で渡すような関数にしろってこと?
を書いた

そのうえで、
例外を発生させるのが前提の話のときに、
その前提にそぐわない、例外を隠蔽するような511のやりかたは気持ち悪い
と思った
551デフォルトの名無しさん:2007/09/21(金) 09:58:45
あれ?
その推測でいくと、>>511は本質的には、3つの try 文を 3つの releaseX() に切り分けただけか?

まあいいや
俺の推測が飛躍しすぎだったかもしれん
552デフォルトの名無しさん:2007/09/21(金) 10:17:58
で、結局どれがベストアンサー?
553デフォルトの名無しさん:2007/09/21(金) 10:55:28
with, numpy
554デフォルトの名無しさん:2007/09/21(金) 11:12:21
基地外が紛れ込んでいる悪寒。
555デフォルトの名無しさん:2007/09/21(金) 12:01:10
お、俺じゃねえよ
556デフォルトの名無しさん:2007/09/21(金) 12:02:13
みんな難しい話してるねぇ
フゥー
557デフォルトの名無しさん:2007/09/21(金) 21:20:34
>>550
じゃあ>>519>>511へのレスだということ?>>518じゃなくて?

わかるかよそんなこと。>>519だけみれば、直前の>>518へのレスかと思うだろ。だから519がとんちんかんなことをいってるようにみえた。
直前へのレスじゃないなら相手先をちゃんと書けや。話をかき乱すだけじゃぼけ。
558デフォルトの名無しさん:2007/09/21(金) 21:47:20
わかるだろw
559デフォルトの名無しさん:2007/09/21(金) 22:43:12
ゆとり相手するにはエスパー必要
560デフォルトの名無しさん:2007/09/21(金) 22:56:20
キチガイ警報?
561デフォルトの名無しさん:2007/09/21(金) 23:00:58
お前ら、そんなに元気なら3000の陰に隠れていじけている2.6を構って上げて下さい。
562デフォルトの名無しさん:2007/09/21(金) 23:37:22
質問
1:今日の日付を取得して、
2:そこから年数を1926年分引く
という処理で
today = datetime.date.today()
で1は出来るのですが
年数を引くにはどうすれば良いのでしょう
年だけ計算したい点がわからないです
よろしくお願いします
563デフォルトの名無しさん:2007/09/21(金) 23:48:47
today.year - 1926
564デフォルトの名無しさん:2007/09/22(土) 00:33:31
引き算できました
ありがとうございます!
これでいつばあちゃんに今年は昭和何年か
聞かれても大丈夫
565デフォルトの名無しさん:2007/09/22(土) 01:15:48
それ、-1925だからw
566デフォルトの名無しさん:2007/09/22(土) 07:18:53
>>371
>>374
>>375
あたりの話題で同じ問題かかえてるんですが、もしモジュールaからモジュールbの機能使いたくて逆にモジュールbでもモジュールaの機能使いたいってときPythonでどう書くんでしょう?
Cだとただ単にincludeすればすむはなしですが、pythonのimportはモジュール読み込むとき実行までしてしまうので問題が起きてしまいます。

aもbも一つのモジュールに含めてしまえば問題ないと思うんですが巨大なファイルができてしまいます。
あと大規模なpythonプログラムってクラスごとにモジュールファイルを作るってのは一般的なのでしょうか?
567デフォルトの名無しさん:2007/09/22(土) 09:24:53
> Cだとただ単にinclude
include guard があるから
568デフォルトの名無しさん:2007/09/22(土) 10:12:30
>>566
import時に実行して欲しくないコードは

if __name__=='__main__':

ブロックに押し込めばいいんじゃね?
ていうか入門書嫁
569デフォルトの名無しさん:2007/09/22(土) 17:44:10
PythonをわざわざVC++で野良ビルドしてみたが、なんかcygwinのより遅ぇ。
野良ビルドだからか?
cygwinの死ぬほど遅いラッパーシステムコールを使うようなコードなら
流石にネイティブのが速いだろうけど、なんかStringIOとかが普通に遅い。
VC++のmalloc()が遅いのかな……
570デフォルトの名無しさん:2007/09/22(土) 20:17:28
プロファイルとってみろ
571デフォルトの名無しさん:2007/09/22(土) 20:19:41
>>570
hotshotでプロファイルを取った結果、StringIOのread()やらwrite()やら
seek()やらで有意な差がついていた。
たまたま今回はそうだが、結局は文字列処理、リスト処理のような
プリミティブな処理において速度差があるんだと思う。
それ以下には潜ってない。

デフォルトの配布では最適化オプションが-O2だったのを-Oxに変更してみたが
有意な差は得られなかった。
572デフォルトの名無しさん:2007/09/23(日) 02:28:10
binary data をパースしてる最中、hex 1A を読む込むあたりで、
file pointer が吹っ飛ぶ現象が
おきてるのですが、win32 + python2.5.1 とかではあたりまえなんでしょうか?

573デフォルトの名無しさん:2007/09/23(日) 02:37:22
バイナリモードでopenしていないとか
574デフォルトの名無しさん:2007/09/23(日) 02:45:25
ありがとございました.... orz
スレ汚しごめなさい....
575デフォルトの名無しさん:2007/09/23(日) 16:32:31
プログラミングをやってたら誰でも一度は経験するベタな過ちだわな
576デフォルトの名無しさん:2007/09/23(日) 16:40:01
C実装が漏れ出ている
やっちゃった系実装。
577デフォルトの名無しさん:2007/09/23(日) 19:13:16
外部のソフト使いたくてsubprocess.Popen()を使って起動したら
ターミナルがフォーカス奪われてしまいこまってます
奪われず起動する方法ってありますか?うしえてください
578デフォルトの名無しさん:2007/09/24(月) 03:39:50
質問です。

import urllib;
print urllib.quote( "日本語" );

この文を、pythonのコマンドラインから実行した場合と、
モジュール(test.py)に書き出して、python test.pyとで実行した場合に
違う文字列がアウトプットされます。原因が全くわかりません。
なぜでしょうか?
579デフォルトの名無しさん:2007/09/24(月) 03:56:18
コマンドラインから実行する場合の文字コードと
test.py の文字コードが違うからじゃね?

(全然関係ないけど行末の ; は不要だよん)
580578:2007/09/24(月) 05:12:17
レスありがとうございます。
具体的にはどのように解決すればいいのでしょうか?
581デフォルトの名無しさん:2007/09/24(月) 05:39:39
何を使って「コマンドラインから実行」してるのか、具体的にかかないと
582デフォルトの名無しさん:2007/09/24(月) 05:49:07
リテラルの文字コード関係の質問は定期的に来るなあ。
583578:2007/09/24(月) 06:15:48
すんません。
なんかいろいろ調べてたんですが、
print repr( "あ" );
とした場合、
pythonのコマンドライン(pythonのインタープリタ)のアウトプットは
'\xe3\x81\x82'
モジュールから実行した場合は
'\x1b$B$"\x1b(B'
とアウトプットされます。urllib.quoteの結果の違いもこれかと思います。

モジュールから実行した場合も前者の用にアウトプットさせたいです。
584デフォルトの名無しさん:2007/09/24(月) 10:52:43
>>583
コンソールの文字コードがUTF-8なのはわかるけど
そのモジュールはどんな文字コードで書いたの?
("あ" が '\x1b$B$"\x1b(B' になるというのが謎)
coding 宣言はしてないの?
585デフォルトの名無しさん:2007/09/24(月) 12:25:51
'\x1b$B$"\x1b(B' は iso2022jp でしょ
586デフォルトの名無しさん:2007/09/24(月) 12:43:16
ああほんとだ。無知ですまん>>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
587デフォルトの名無しさん:2007/09/24(月) 13:40:46
すみません、すみません
お勧めの入門本は何ですか?
すみません、すみません
588デフォルトの名無しさん:2007/09/24(月) 13:41:30
みんpy
589デフォルトの名無しさん:2007/09/24(月) 14:57:14
すみません ごめんなさい ゆるしてください ゆまそ めんごめんご ゆるしてちょんまげ
パイソンのクラスの作り方について詳しいホームページをおねがいします。
590デフォルトの名無しさん:2007/09/24(月) 14:59:19
>>588
すみません、すみません
みんなのぱいぱい注文しました
すみません、すみません
591デフォルトの名無しさん:2007/09/24(月) 15:26:13
win用のUTF-8コンソールって何がお勧めですかね?
592デフォルトの名無しさん:2007/09/24(月) 15:35:29
ぱてぃ
593デフォルトの名無しさん:2007/09/24(月) 15:57:02
python のサンプルコードってどこにあるん?
594デフォルトの名無しさん:2007/09/24(月) 16:02:21
まずは標準ライブラリのぞいてみろ。
応用編なら ttp://aspn.activestate.com/ASPN/Python/Cookbook/ とか。
あとは、気になるモジュールでぐぐれば、何か出るだろ。
595デフォルトの名無しさん:2007/09/24(月) 20:25:14
標準ライブラリってどこにあるんですか?
そこにサンプルコードがあるんですか?
596デフォルトの名無しさん:2007/09/24(月) 20:53:34
>>595
「標準ライブラリ」っていうのは、 sys とか os とか、Pythonをインストールするとすぐに使えるようになる同
梱ライブラリ集のことだよ。
ライブラリ自身のコードもPythonで記述されてるから、どうやって実装されてるか中身を除くと勉強になる。

windowsなら、 c:\Python24\Lib あたりを探せば入ってる。
Linuxなら、たぶん /usr/lib/python だろう。

ドキュメントはここ
http://www.python.jp/doc/nightly/lib/
597デフォルトの名無しさん:2007/09/25(火) 00:21:28
598デフォルトの名無しさん:2007/09/25(火) 01:02:08
>>586
ありがとうございます。
できました。
599577:2007/09/25(火) 20:54:55
subprocess.Popen()の後にtime.sleep()で待ってから
GUI窓を開いて入力をそっちに移すことで強引に解決しますた
600デフォルトの名無しさん:2007/09/26(水) 12:46:03
おっpy
601デフォルトの名無しさん:2007/09/26(水) 19:40:07
おっpy
602デフォルトの名無しさん:2007/09/26(水) 20:14:12
x, y = 12415, [-28, -20, 48, -48, 28, -20, 15, -36, 16, 57, -2593, 0]
while y:
    print unichr(x),
    x += y.pop(0)
603デフォルトの名無しさん:2007/09/26(水) 22:20:56
>>602
み っ く み く に し て あ げ る ♪
604デフォルトの名無しさん:2007/09/26(水) 23:21:34
pop(0)の0がイケてない。
605デフォルトの名無しさん:2007/09/27(木) 00:21:19
reduceは3000でなくなるんだっけ?

def foo(a, b):
print unichr(a),
return a + b
reduce(foo, y, x)
606デフォルトの名無しさん:2007/09/27(木) 00:50:28
左か右かよく分からないから困る
607デフォルトの名無しさん:2007/09/27(木) 02:00:48
for z in y: print unichr(x),; x += z
608デフォルトの名無しさん:2007/09/27(木) 07:02:53
インスタンス変数名をtypoしたときにエラーになるような仕組みってありますか。
たとえば

class Foo(object):
 def __init__(self):
  self.x = 0
  self.y = 0

foo = Foo()
foo.x = 10
foo.y = 20

とあるときに、

foo.z = 30

がエラーとなってほしいなーと。
609デフォルトの名無しさん:2007/09/27(木) 08:30:51
__slots__ = ["x", "y"]
610デフォルトの名無しさん:2007/09/27(木) 09:46:36
>>605
reduceは3000で消える。
代わりにfoldlとfoldrになる。
といいなと思った。
611デフォルトの名無しさん:2007/09/27(木) 22:36:58
これってバグかな? みみっちぃけど。2.5.1内
def a():
 print 'abc',
 raw_input('')#ここで何か入力してBackspace
 print 'abc',
 raw_input(' ')#空文字でなければ大丈夫
612デフォルトの名無しさん:2007/09/27(木) 22:54:29
f = os.popen('command')
s = f.read()
でコマンドを実行し、その結果を取得できますが、stdout だけしかとってこれないようです。
stdout と stderr の両方を取ってくるにはどうしたらいいですか。
なお stdout と stderr を別々に取ってくるのではなく、両方を区別せずに、コマンドの結果を取ってきたいです。
613デフォルトの名無しさん:2007/09/27(木) 23:08:01
>>612
subprocess か os.popen4 ?
614デフォルトの名無しさん:2007/09/27(木) 23:38:59
>>612
Unixなら
os.popen('ls -l 2>&1')
とかでおk
615デフォルトの名無しさん:2007/09/27(木) 23:39:04
>>613
os.popen4() がまさに欲しいものでした。どうもありがとうございます。

あと別の質問なのですが、あるクラスの親クラスを調べるにはどうしたらいいでしょうか。
例えばValueErrorの親クラスを知りたいとき、ValueError.__class__ は違いますし、ValueError.__parent__ とかそういうのもなさそうだし、困ってます。
616デフォルトの名無しさん:2007/09/27(木) 23:48:44
__bases__
617デフォルトの名無しさん:2007/09/28(金) 00:15:00
>>616
ValueError.__bases__
で親クラスの一覧がとってこれるみたいです。ありがとうございます。
しかし dir(ValueError) しても __bases__ は見当たらないのですが、どういうことでしょうか。
618デフォルトの名無しさん:2007/09/28(金) 06:57:37
dir(ValueError.__class__)ってすると出て来るね
619デフォルトの名無しさん:2007/09/28(金) 07:03:07
__bases__はtypeが大元だから
620デフォルトの名無しさん:2007/09/28(金) 12:35:11
>>608

class Foo(object):
 __slots__ = ('x', 'y')
 def __init__(self):
  self.x = 0
  self.y = 0

621デフォルトの名無しさん:2007/09/28(金) 18:25:41
lxmlでのhtmlのパース時に、
<script>タグのようにに内部がCDATAと解釈されるものを与えた場合、
パースツリーのelementのtext要素には元のタグの内容がそのまま入るのですが、
tostring()やtounicode()を用いてシリアライズすると、そのようなタグの中身
であっても、エンティティ参照などでエスケープされてしまうようです。
そういうことをされては困るのですが、何か良い方法はあるでしょうか。

ちょっと調べただけでは良く分からなかったので、treeをwalkしつつtext部分を
リストにぶっこ抜きして、elementのtext要素を一旦ダミーデータに置換して
シリアライズ、その後で保存していたリストを用いてダミーと再置換、
という手で逃げることは出来ましたが、いかにもadhocで汚いように思います。
622デフォルトの名無しさん:2007/09/28(金) 21:35:36
もしよろしければ…
Python上で得られたJavascriptコードを動作させることは可能でしょうか。
ちなみに以前、必要に迫られて既に存在したPython表記のスクリプトに手を入れて
正常に動作する物を作ったことはあります。一応アセンブラ、Cとかは一通り趣味レベルで勉強済みです。
623デフォルトの名無しさん:2007/09/28(金) 22:06:10
日本語を勉強したほうがいいよ
624デフォルトの名無しさん:2007/09/28(金) 23:00:13
>>622
>Python上で得られたJavascriptコードを動作させることは可能でしょうか。
悪いが、JavaScriptコードがどこで得られたのか、
また、そのコードどこで動作させるのか文意から読み取れない。

>ちなみに以前、必要に迫られて既に存在したPython表記のスクリプトに手を入れて
>正常に動作する物を作ったことはあります。
「Python表記のスクリプト」とは何を表すのかよくわからない。
「Pythonで書かれたJavaScriptインタプリタ」の意味にも取れるが
第1文と矛盾しているように感じる。
625デフォルトの名無しさん:2007/09/28(金) 23:09:41
タテヨミナンジャネ
626デフォルトの名無しさん:2007/09/29(土) 00:06:59
>>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()に渡してみたらとか
思ったけれど、なんか落とし穴がありそうで・・・
627デフォルトの名無しさん:2007/09/29(土) 00:23:20
>>626
> こういうことですよね。

ちがうと思われ。
628デフォルトの名無しさん:2007/09/29(土) 05:22:22
629デフォルトの名無しさん:2007/09/29(土) 08:59:24
>>621
エンティティ参照程度なら、reでなんとかなるだろ。
630デフォルトの名無しさん:2007/09/29(土) 09:23:37
>>626
意図は汲み取っていただいたようですが、
あなたの貼り付けたものはどちらも & に見えます。自分の環境では。
後者は &amp; という意味でしょうか。

>>629
おっしゃる意味が分かりませんが、>>621で述べたように
私はエレメントツリーのトラバーサルをわざわざ
行って(ここはXPathでもいいでしょうが)、__REPLACED_CDATA__のような
データに置換え(もとのデータはリストに保存しておく)、
tostring()やtounicode()でシリアライズ後、その文字列に対して
reで置換しました。
出来ればそういういかにも実装依存の汚い仕事はやりたくない、という話です。

DOMやElementTreeにしてくれるツリーパーサが要らないのならHTMLParserで
いいのですが、このケースでは、ツリーパーサが欲しかったのです。
他に良いツリーパーサ(XPathが使えるものが望ましい)があるのなら、
そちらに乗り換えますが。
631デフォルトの名無しさん:2007/09/29(土) 10:33:23
そんな面倒な置き換えなんかしなくても、script要素が入っているオブジェクトの
tostringをラップすればいいと思ったんだが。それでだめなの?
あと、この場合reよりstringの方がいいかも。
632626:2007/09/29(土) 10:40:48
>>630
> 後者は & という意味でしょうか。
です。エスケープ処理してから貼り付けるの忘れてました。

HTMLパーサならBeautifulSoupか、
ElementTreeAPIの使えるElementSoupを試してみるとか。
ただ両者ともXPathは使えないです。
ほんとはlxmlで一本化できればいいんですけど・・・。
633デフォルトの名無しさん:2007/09/29(土) 11:29:03
>>631
自分はPythonに関してはほぼ素人ですので、
そういうことが出来るのなら、やり方を教えていただけませんか。

lxmlのエレメントオブジェクトはCモジュールで実装されている実装詳細で、
__str__や__repr__は単にクラス名とアドレスを返すだけです。

個々のエレメントにはtostring()というメソッドは実装されていません。
シリアライズはlxml.etreeがやる仕事で、これは与えられたエレメント
以下のサブツリーを再帰的にシリアライズします。

>>632
なるほど。ツリーパーサでXPathが使えないのは正直痛いですねぇ。
634デフォルトの名無しさん:2007/09/29(土) 11:57:23
確かめないで書くけど、4Suiteはどうかな?
635デフォルトの名無しさん:2007/09/29(土) 12:09:56
Python で GUI といえば wxWidgets が、
画像ファイルサポートといえば PIL が有名ですが、
これらのライセンスを詳しく日本語訳したサイトはありませんか?

こちらのソース非公開で商用利用できるかどうかが知りたいのですが。
636デフォルトの名無しさん:2007/09/29(土) 12:18:43
wxWidgets ライセンスについては
http://www.geocities.co.jp/SiliconValley-Cupertino/8526/wxWindows/license.html
に解説があるけど、これが最新版の wxWidgets についても当てはまるのかと、

PILについては
http://www.pythonware.com/products/pil/license.htm
の日本語訳が。。。。
637デフォルトの名無しさん:2007/09/29(土) 14:59:05
wxWidgetsはDemo落して見た方がはやいよ
638デフォルトの名無しさん:2007/09/29(土) 16:07:44
0xffを-1と表示させたいんですが
どうすればいいですか?
639デフォルトの名無しさん:2007/09/29(土) 16:33:43
>>> import struct
>>> print struct.unpack("b", struct.pack("B", 0xff))[0]
-1
640デフォルトの名無しさん:2007/09/29(土) 17:17:59
>>635
一般論として、ライセンスの条項は原文で理解するべきだと思うよ。
和訳はあくまで参考。間違いがあってライセンス違反になっても言い訳できない。
読んで分からなければ、分かる人に頼るべき。
641デフォルトの名無しさん:2007/09/29(土) 17:59:34
python 2.5 を windowsXPで使ってます。
スクリプト内に os.getcwd() を書き、IDLEで開き、実行すると、
スクリプトファイルのあるディレクトリが返りますが、
タスク(スケジューラ)でスクリプトファイルを指定して、自動起動したとき、
os.getcwd() で返るのは、 c:\windows\ になってしまいます
この時に、スクリプトファイル自身があるディレクトリを取得する方法はありますでしょうか?
642デフォルトの名無しさん:2007/09/29(土) 18:18:33
ありますね
643デフォルトの名無しさん:2007/09/29(土) 18:23:03
>>641
sys.argv[0]で取得できないかな?
644デフォルトの名無しさん:2007/09/29(土) 18:40:45
できました ありがとう
645デフォルトの名無しさん:2007/09/29(土) 19:09:39
>>639以外はないの?
646デフォルトの名無しさん:2007/09/29(土) 19:24:59
>>638
a=0xff; ~255 ^ a
647638:2007/09/29(土) 20:36:20
>>639
ありがとうございます
648622:2007/09/30(日) 08:22:09
>>624
>悪いが、JavaScriptコードがどこで得られたのか、
Pythonの処理で外部より得られたテキストコードを前提にしてます

>また、そのコードどこで動作させるのか文意から読み取れない。
PythonにJavaScriptを動作させるライブラリかなにかがどこかにないかと思いまして。
外部に渡すとか、
最悪自前でPython上で動くJavaScriptサブセットインタプリタを書こうかとも考えてます。
もっとも根本的に別の手段を使うことも考えてはいますです。

>「Python表記のスクリプト」とは何を表すのかよくわからない。
>「Pythonで書かれたJavaScriptインタプリタ」の意味にも取れるが
>第1文と矛盾しているように感じる。
ぶっちゃけiriaのスクリプトだったり…
649デフォルトの名無しさん:2007/09/30(日) 08:48:43
SpiderMonkeyつかえばいいんじゃないか?
放置されてて使えるかわからないけど、python-spidermonkeyってあるね。

自分でCとかを使って、SpiderMonkey使うモジュール作るなら、
ttp://module.jp/blog/techtalk5.html
とか参考になる。

ttp://www.adaptive-enterprises.com.au/~d/software/see/
はアプリ埋め込み用JavaScriptの実装
See Alsoみると、他のオープンな実装のリンクがあるよ
650デフォルトの名無しさん:2007/09/30(日) 21:49:45
Pythonの日本語ドキュメントのchmファイルはありませんか
正直探したけど見つかりません
651デフォルトの名無しさん:2007/09/30(日) 21:52:44
http://www.python.jp/pub/doc_jp/Python24jp.chm
にありました!正直ごめんなさい!

でもリンク辿ってても一向に見つからなかったのは何でだろう・・・
(python jp chmでググったらchmファイルへのURLが直接あった)
652デフォルトの名無しさん:2007/09/30(日) 23:07:54
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]
653デフォルトの名無しさん:2007/09/30(日) 23:19:15
**kwargsを使えばいいんじゃね?
654デフォルトの名無しさん:2007/09/30(日) 23:21:22
>>652
*argsで間違った数の引数を全部エラーにすればいい。
655デフォルトの名無しさん:2007/10/01(月) 06:37:52
タプルで受け取るわけだからlenで数数えるとか
656デフォルトの名無しさん:2007/10/01(月) 21:13:48
正攻法は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)
657656:2007/10/01(月) 21:18:19
すまん、「>>655で」は「>>654,655で」のつもりだった。
658デフォルトの名無しさん:2007/10/02(火) 08:57:49
正攻法どころかオナニーくさいぞw
659652: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)'
660デフォルトの名無しさん:2007/10/02(火) 16:55:36
質問失礼します。

TypeError: text must be set to a wide string.

こういうエラーが出るのですが、何が原因でしょうか?
分かる方お願いします。
661デフォルトの名無しさん:2007/10/02(火) 17:46:19
>>660
書いてあるじゃんw
662デフォルトの名無しさん:2007/10/02(火) 18:57:36
                             |
                             |
      ∩___∩             |
      | ノ  _,  ,_ ヽ        ((  | プラプラ
     /  ●   ● |         (=)
     |    ( _●_)  ミ _ (⌒)   J  ))
    彡、   |∪|  ノ
⊂⌒ヽ /    ヽノ  ヽ /⌒つ
  \ ヽ  /         ヽ /
   \_,,ノ      |、_ノ
663デフォルトの名無しさん:2007/10/02(火) 20:06:11
ピリオドを付けてsplit()とかpop()とかread()を使うのってオブジェクト思考使ってるってことですか?split()とかpop()とかread()とかの招待ってclass:で作れる奴と同じですか???それでそれをインポートして使えるようにしているだけですか??
664デフォルトの名無しさん:2007/10/02(火) 20:06:55
ピリオドを付けてsplit()とかpop()とかread()を使うのってオブジェクト思考使ってるってことですか?
split()とかpop()とかread()とかの招待ってclass:で作れる奴と同じですか???
それでそれをインポートして使えるようにしているだけですか??
665デフォルトの名無しさん:2007/10/02(火) 20:21:45
はい、そうですよ。
666デフォルトの名無しさん:2007/10/02(火) 20:24:46
>>665
考えがすっきりしましたありがとう
667デフォルトの名無しさん:2007/10/02(火) 21:54:02
いやいや、そうとも言い切れません。
668656:2007/10/02(火) 22:56:33
>>659
それもいいですね。

IDLEを使ってるから、補完されるときにNullObjectって表示されるように
>>656みたいにしてたんですけども。
669デフォルトの名無しさん:2007/10/03(水) 22:53:37
[[1,2,3], [4,5,6], [7,8,9]] のリストから
[[1,2], [4,5], [7,8]] を得たいんです。
forを使えば出来ますが、1行で記述可能であれば
教えてください。
670デフォルトの名無しさん:2007/10/03(水) 22:57:33
a = [[1,2,3],[4,5,6],[7,8,9]]
b = [0,1]
[ [ t[i] for i in b ] for t in a ]
671デフォルトの名無しさん:2007/10/03(水) 23:04:36
[ [x,y] for x,y,z in a ]
672デフォルトの名無しさん:2007/10/03(水) 23:09:23
>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> [i[:2] for i in a]
[[1, 2], [4, 5], [7, 8]]
673デフォルトの名無しさん:2007/10/03(水) 23:11:55
>>> 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]
675デフォルトの名無しさん:2007/10/03(水) 23:46:49
>>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]]
676デフォルトの名無しさん:2007/10/03(水) 23:55:53
>>670-674
参考になります。有難うございました。スライス記法とか何か便利な関数があるのかと思いまして質問しました

>675
aの個数が固定ではないんです。
677デフォルトの名無しさん:2007/10/04(木) 00:17:10
>>676
例の出し方がいまいちだったな。
各要素の始めの2個を取り出したいのか、最後以外を取り出したいのかで
>>672>>674のような違いがでてくるからな。
678デフォルトの名無しさん:2007/10/04(木) 00:30:51
リスト内包表記を好んで書いてる人が多いけど、mapを使う人は少数派なのかな?

a = [[1,2,3],[4,5,6],[7,8,9]]
b = map( lambda x: x[:2], a )
print b
679デフォルトの名無しさん:2007/10/04(木) 01:18:07
英語人じゃないので内包表記よりも
関数表記なmapでいい

と思っていたが、
最近は内包表記に慣らされてきたw
680デフォルトの名無しさん:2007/10/04(木) 02:11:21
dictから要素を削除するのは dict.pop(key, None) でよい?
681デフォルトの名無しさん:2007/10/04(木) 02:31:06
そんな難しいことしなくても del a_dict[key] でいいんじゃまいか
682デフォルトの名無しさん:2007/10/04(木) 03:30:20
説明不足でした。
delだと、keyがないときにKeyErrorが発生します。
keyかないときは例外を発生されるではなく、単にNoneを返すようにしてくれたほうがよかった気も質す。
683デフォルトの名無しさん:2007/10/04(木) 05:53:05
>>678
マップはPython3000にはない
684デフォルトの名無しさん:2007/10/04(木) 07:01:54
消す消すと言ってたけど、結局残したでしょ。
685デフォルトの名無しさん:2007/10/04(木) 07:34:46
>>684
そうなのか
686デフォルトの名無しさん:2007/10/04(木) 11:04:26
filterも残り、reduceだけが消えた、 今のとこ
687デフォルトの名無しさん:2007/10/04(木) 11:41:02
敢えて消す理由がわからん
mapもfilterもlist内包で普通に代用できるが
reduceは(少なくとも簡単には)代用できんように思える
688デフォルトの名無しさん:2007/10/04(木) 11:45:53
そういう厄介なものだからこそ早いめに芽を摘んでおいたのかもしれん。
689デフォルトの名無しさん:2007/10/04(木) 12:12:32
lambda も消えるんだっけ?
690デフォルトの名無しさん:2007/10/04(木) 12:18:27
Guidoはlambdaが嫌いみたいで最初は消そうとしたが
代替物がないので残ることになった

というのが経緯。
691デフォルトの名無しさん:2007/10/04(木) 12:40:27
lambda中途半端だよね。
692デフォルトの名無しさん:2007/10/04(木) 12:58:42
直前に名前付き関数つくるのがpythonicだと思うけど
それを代替案としてうけいれられない方々もいるってことか。
693デフォルトの名無しさん:2007/10/04(木) 13:33:33
functools.partialじゃ引数の指定できないときとか
ドキュメントの引数の名前と実際の名前が違ってて調べるのマンドイ時だけど

あとは)の連続になるのが嫌なときとか
694デフォルトの名無しさん:2007/10/04(木) 17:09:34
>>692
スコープが違うから難しいんじゃない
695デフォルトの名無しさん:2007/10/04(木) 18:57:43
lambdaが中途半端なのは事実だが、無いよりはマシだと思う
でもこういう発想はどちらかと言えばPerl的かもな……

lambdaの中で副作用の無い式しか書けないことも、クロージャから
レキシカル変数を参照はできても変更できないことも、なんだか中途半端だ

そういう場合は関数オブジェクトを作れ、がPythonの解かもしらんが、それを
推し進めると、Javaのようになってしまう気がする
696デフォルトの名無しさん:2007/10/04(木) 21:19:23
無名関数を作りたいことはあるよね。sort()関数のソート順指定とか。
そういうときに使うlambdaの代替手段がない,ということじゃないのかなあ。
697デフォルトの名無しさん:2007/10/04(木) 21:36:13
ワンライナーで変数使いたいからlambda使ったりするなと言うことだろ
698610:2007/10/05(金) 01:38:43
reduceは消えて当然
右からか左からか分からない
699デフォルトの名無しさん:2007/10/05(金) 02:52:23
>>687
http://www.artima.com/weblogs/viewpost.jsp?thread=211200
でこういっとるよ。

because almost all code using reduce() is less readable than the same thing 
written out using a for loop and an accumulator variable.

読みやすさの問題らしい。
700デフォルトの名無しさん:2007/10/05(金) 07:10:58
ワンライナーに貢献しやすい機能は出来るだけ消したいんだろうな。
まあ消すと言っても、importすれば同等の機能は使えるみたいだし、いいんじゃない?
701デフォルトの名無しさん:2007/10/05(金) 08:11:58
googleであるワードを検索して、それにヒットしたサイトを次々と巡回して
その検索ワードの特徴を示す単語を抽出し、出現単語とその頻度を
txtまたはcsvファイルに出力するプログラムを作りたいんですけど
どうすればいいでしょうか?何かアドバイスお願いします。
702デフォルトの名無しさん:2007/10/05(金) 08:48:22
Pythonって内部コードがUnicodeなのに,Windowsでファイル名を取得する時に
UNICODEファイル名を拾って来る訳じゃ無いんだね.
非日本語なWindowsで日本語ファイル名のファイルが扱えなくて困ってしまった.

結局他のスクリプト言語使ったけど.
v3.xxでは改善されてますか?
703デフォルトの名無しさん:2007/10/05(金) 09:28:37
>>702
unicodeでファイル名を拾ってくるように指示すればいいじゃん
704デフォルトの名無しさん:2007/10/05(金) 09:43:04
?
705702:2007/10/05(金) 09:57:38
>>703
レスどうも.
へぇ,出来たんだ. ヘルプを斜め読みしてすいません.

os.listdir(u"C:/")
こんな感じかな. いま試せないので今度やってみる.
706デフォルトの名無しさん:2007/10/05(金) 10:39:23
>>701
> その検索ワードの特徴を示す単語

の定義がわからん。
707デフォルトの名無しさん:2007/10/05(金) 22:24:12
pythonには、いわゆる定数ってないの?cの#defineとかc++の
constみたいなやつ。もし無いとしたら、その理由はなんか
あるんですか。あった方が圧倒的に便利だと思うんだけど。
708デフォルトの名無しさん:2007/10/05(金) 22:29:22
タプル使えば良いんじゃね?
709707:2007/10/05(金) 22:43:45
http://blog.webshark.co.jp/skyfish/2007/04/post_5.php
すいません。ググったらすぐに答えらしきものがでてきました。
なぜ定数が無いのかはイマイチよく解りませんでしたが。
710デフォルトの名無しさん:2007/10/05(金) 23:12:53
rubyがYARVでPerlやPythonより速くなると喜んでる悲しい人たちがいますが、
Pythonは高速化する予定とかあるの?
711デフォルトの名無しさん:2007/10/05(金) 23:26:47
アプリに組み込む用途だと、速さで有利なstacklessを採用するってのは聞いた事はある。
あと、IronPythonはCPythonより高速とか、JythonはJVMのパワーアップのおかげで
CPythonより高速とかいう話はあるが、殆どの人はCPythonで十分と思ってるんじゃない?

つか、ベンチで○○より遅いよ!という人はいるけど、
CPythonが遅くて本当に困っている人ってあんまり見かけた事無い。
ML見てると、時々出て来るけど、Guideもあまり興味はなさそう。

いつかParrotが実用に耐える代物になれば、動作速度の問題はそっちで解決するんじゃね?
712デフォルトの名無しさん:2007/10/06(土) 00:10:42
>>710
Twitterの遅さを見るとRubyは使いたくないなあと思うます。
713デフォルトの名無しさん:2007/10/06(土) 00:36:51
parrotなんて完成する見込みないでしょ
714デフォルトの名無しさん:2007/10/06(土) 01:16:05
>>711
都市伝説を信じてしまう騙されやすい人ハッケソwwww
715デフォルトの名無しさん:2007/10/06(土) 01:36:56
>>710
psyco使うと数倍速くなることがある
pypyはどうなってんだろ?
716デフォルトの名無しさん:2007/10/06(土) 01:37:00
バッチ処理みたいのに使ってるんだけど、早いに越したこと無いよ?
JAVA並みに早くなってほしいな。
717デフォルトの名無しさん:2007/10/06(土) 02:07:08
>>715
pypyは高速化のためのプロジェクトなのか?
718デフォルトの名無しさん:2007/10/06(土) 03:54:47
ぱいぱい?
719デフォルトの名無しさん:2007/10/06(土) 08:36:01
>>715
知ったかぶりハズいwwwwwwwwwwwwwwww
720デフォルトの名無しさん:2007/10/06(土) 10:04:34
自分で計算ゴリゴリするプログラムや、非常にシビアなレスポンスタイムや
スループットを要求される類のプログラムなら問題だろうが、最初から
そんなもんはPythonで書かんだろ。
今時のプログラムの多くはどうせネットワークだのI/Oだのがボトルネックなん
だしな。

IronPythonはアセンブリをngenしといてもまだ起動がのろすぎると思った。
ちっとばかり実行時間が速いのかもしれないが、俺にはそっちのが問題だ。
721デフォルトの名無しさん:2007/10/06(土) 10:22:46
>>716
Matzにっき(2007-06-28)
http://www.rubyist.net/~matz/20070628.html

これ見て思うに速度と可読性はトレードオフだと
思う俺がいる
722デフォルトの名無しさん:2007/10/06(土) 10:33:25
rubyとpythonどっちが好きとかはあまりないつもりだったけど、
認定試験とかはじめたから・・・
723デフォルトの名無しさん:2007/10/06(土) 10:41:41
認定試験とか、全然ハッカーっぽくないよな。なんかマイクロ豚が
考えそうな事だ。
724デフォルトの名無しさん:2007/10/06(土) 12:23:12
まあ Ruby はさっさと JIS にでもなればいいんじゃないか
725デフォルトの名無しさん:2007/10/06(土) 12:29:32
さっきTwistedを弄りはじめたのだけれど、
いわゆるハーフクローズを扱うにはどうすればいいのかな。

サンプルのechoserver.pyを試してみたんだが、
クライアント側がshutdownによってハーフクローズを行い、その結果として
FINを受け取ると、送信すべきデータが残っていてもそれを破棄して
クローズしてしまう。
726デフォルトの名無しさん:2007/10/06(土) 12:34:01
>>721
そうかなあ。高級言語である関数型言語にもコンパイル型のはあるし、
コンパイルすればインタプリタよりは全然速いし。
OCamlなんかはJavaより速いようだけれども。
727デフォルトの名無しさん:2007/10/06(土) 13:23:53
Paul Grahamの文章を読んだ時にも似たようなことを思ったが
Matzはすこし自分に引き寄せて語りすぎだな

ある言語に「どんなことが可能か」と「どんなことが簡単にできるか」というのは
違うし、ある言語であることが簡単に出来たからといって
あらゆることが簡単にできるわけでもない

見方によっては、XMLはLispのS式の劣化再発明だろう
プログラムの構文木だのデータだのを実行に組み立てたり書き換えたり
読み込んだりする能力を云々するのなら、Lispにまさるものはないということになる
そういう面だけを言えばな
728デフォルトの名無しさん:2007/10/06(土) 14:37:23
>>717
昔、
http://www.python.org/pycon/dc2004/papers/27/
と書いてあったんで、そのうち速くなるのかな…と
でもまだCPythonより遅いみたいだね
729725: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()
730デフォルトの名無しさん:2007/10/06(土) 22:46:50
>>716
それって処理系に依存しないところで
早さが決まってないか?
731デフォルトの名無しさん:2007/10/06(土) 23:10:05
  _
( ゚∀゚)!
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]])

ド低脳の俺には再帰で書くのが精一杯。でもこの関数の再帰のオーバーヘッドが無視できないプログラムを書いているので

助けてスーパーハカー
733デフォルトの名無しさん:2007/10/07(日) 05:36:40
>>732
Stackless Python
734デフォルトの名無しさん:2007/10/07(日) 10:26:23
別にスーパーハカーでも何でもないけど、こんなんでいいの?
単にリストをコピーしまくってるから遅いんじゃないのって気もするけど。

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
735デフォルトの名無しさん:2007/10/07(日) 12:48:12
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]])

=>全ての組み合わせ
737デフォルトの名無しさん:2007/10/07(日) 13:14:29
>>735
def setcolor_rgba(self, a, *args)

setcolor_rgba(a, *rgb)
738デフォルトの名無しさん:2007/10/07(日) 13:54:36
>>734のコード見りゃどうやればいいか分かるだろ
後は自分でやれよ
739デフォルトの名無しさん:2007/10/07(日) 16:46:41
早とちりしてました。正常に動作します。ありがとうございました
740デフォルトの名無しさん:2007/10/07(日) 18:10:18
>>730
確かに原因の半分以上は処理系以外の部分で起こってるだろう。
でも、取り巻いてる環境が悪いことに違いないんじゃないかな。
741デフォルトの名無しさん:2007/10/07(日) 19:01:47
python 2.5.1で

>>> round(2.55, 1)
2.6000000000000001
>>> round(3.33333, 1)
3.2999999999999998

となってしまいます。上の例の場合、それぞれ「2.6」、「3.3」を出したいのだけど、どうすればいいのでしょうか?
round()関数はこういう用途ではない?
742デフォルトの名無しさん:2007/10/07(日) 19:22:31
>>741
いや、そもそも小数点型がそういう用途ではない。
外面を整えればいいだけなら文字列に変換すればいいが、
厳密に計算させる必要があるならdecimalでも使え。
743デフォルトの名無しさん:2007/10/07(日) 19:38:47
>>741
表示が問題なだけなら
"%.1f" % round(2.55,1)
とかでいいだろ
文字列になっちまうが
744デフォルトの名無しさん:2007/10/07(日) 23:33:27
pythonでWindowsのプロパティごとファイルをコピーする方法はある?
copy2だとプロパティはコピーされませんよね。
745デフォルトの名無しさん:2007/10/07(日) 23:40:17
>>744
その前に、「出来るWindows」って本を買ってきたほうが良いぞ。
746デフォルトの名無しさん:2007/10/08(月) 00:24:54
ACLのことかExtended AttributesのことかStreamのことか
747デフォルトの名無しさん:2007/10/08(月) 00:29:34
Extended Attributesだとしたら、手動でも全部を読むのは難しいんじゃないの?
748デフォルトの名無しさん:2007/10/08(月) 07:15:54
>>741
>>> round(2.55, 1)==2.6
True
>>> round(3.33333, 1)==3.3
True
>>> 2.6
2.6000000000000001
>>> 3.3
3.2999999999999998
749デフォルトの名無しさん:2007/10/08(月) 07:21:07
>>735
素直にやるなら
def setcolor_rgba(self, rgb, a)じゃないのか?
*arg は「可変」引数であって、rgbの長さは明らかに可変じゃない
750デフォルトの名無しさん:2007/10/08(月) 16:13:30
>>735
> setcolor_rgba(rgb[0], rgb[1], rgb[2], a)
> ってやるしかない?

俺だったら気にせずそう書くか、あるいは

r, g, b = rgb
setcolor_rgba(r, g, b, a)

かな。
751デフォルトの名無しさん:2007/10/08(月) 16:52:51
def setcolor_argb(self, a, r, g, b):
  return setcolor_rgba(self, r, g, b, a)

とでもしといて
setcolor_argb(a, *rgb)
でいいんじゃね
752デフォルトの名無しさん:2007/10/08(月) 17:02:40
うわ
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
がエディタ上で構文エラー扱いになってうざい
754デフォルトの名無しさん:2007/10/09(火) 00:16:32
>>753
エラーにならない
755デフォルトの名無しさん:2007/10/09(火) 02:15:41
うちもエラーにならない
Eclipse 3.2.2
PyDev 1.2.9
756デフォルトの名無しさん:2007/10/09(火) 03:22:35
>>737
>>751
引数リストの長さが毎回変わる可能性のあるところ以外で可変引数を使うべきではない
*rgbって言いたいだけにしか見えない。
757PILに入ってる気もするけど:2007/10/09(火) 13:17:57
class RGB:
    〜
758デフォルトの名無しさん:2007/10/09(火) 14:38:01
無料レンンタル鯖でpythonの実験が出来るような都合の良いサービスって有りますか?
759デフォルトの名無しさん:2007/10/09(火) 14:46:46
自分のPCにインスコして試せば?
760デフォルトの名無しさん:2007/10/09(火) 15:29:57
>>758
実験を許してる所は無いんじゃないかな…
自分は Windows + Apache + Python の自宅環境で実験してからアップロードするけど
761デフォルトの名無しさん:2007/10/09(火) 16:06:55
VMware + Linux or FreeBSD
762デフォルトの名無しさん:2007/10/09(火) 17:15:47
>>753
Pydev Package Explorerから
Properties -> PyDev - project type
763デフォルトの名無しさん:2007/10/09(火) 19:13:03
>>758
land.toってのが無料でpython(2.4らしい)が使用可能らしい
xreaは無料でpython可能みたいだけど今募集してない
実験内容がもう決まってるなら、有料サービスの無料お試し期間で実験という手も・・・、
764758:2007/10/09(火) 22:52:57
本音を言うと、実験とかじゃなくて、本サービスを始めたいんです。しかも無料で。
でも、とてもアマちゃんな考え方だと、だんだん自覚してきたので、海外の有料鯖を本気で探してみます。
765デフォルトの名無しさん:2007/10/09(火) 22:54:42
・・・
766デフォルトの名無しさん:2007/10/10(水) 02:27:51
バス停に20人の生徒が並んでいます。たかし君は前から5人目、
ひろこちゃんは後ろから8人目。たかし君とひろこちゃんの間に
いる生徒の人数は何人か?

とかいう問題をやってたのだけどpythonで解くとどうなりますか?
番組だとひろこちゃんが前から12番目だから len([5:12]) みたい
に解いてました。小学2年生の問題で悩んでる俺d
767デフォルトの名無しさん:2007/10/10(水) 02:46:33
後ろから8人目って前から13人目じゃね?俺の日本語の取り方がおかしいのか?
768デフォルトの名無しさん:2007/10/10(水) 02:46:38
・・・まあ・・・頑張ってね・・・
769デフォルトの名無しさん:2007/10/10(水) 07:39:56
c = range(1,21)
len(c[5:-8])
でいいんじゃね
770デフォルトの名無しさん:2007/10/10(水) 09:39:01
20 - 5 - 8
でいいんじゃね
771デフォルトの名無しさん:2007/10/10(水) 11:54:31
先週末pyscripterとeclipseを落として使い比べてたとき
どちらかでビルトインオブジェクトやクラスの引数とドキュメンテーション文字列のみの
一覧をモジュール単位で(エディター部と確か専用ペインにアイコン付で)表示出来たんですがどうやったのか忘れてしまいました

どちらのソフトでどうやったら表示出来るんでしょう
pyscripterのtools->source code views->documentationではありません
属性やクラスのアイコンの記憶からはpyscripterの方だったと思うんですが
772デフォルトの名無しさん:2007/10/10(水) 16:26:45
>>770
だよなあ。たかし君ごと前を、ひろこちゃんごと後ろをブチ殺せば、二人の間の奴らだけ生き残る。
その表現はあまり感心しないぞ
774デフォルトの名無しさん:2007/10/10(水) 21:38:05
小学生が大量殺人。動機は「算数の問題を解きたかった」
775デフォルトの名無しさん:2007/10/10(水) 22:15:17
>>771
やりたいこといまいちよくわからないけど、Code Exploreで
左側のペインにClass一覧とか関数一覧は表示される > PyScripter
776デフォルトの名無しさん:2007/10/11(木) 00:48:37
なんとかして文字列の中から2つ以上並んだスペースを1つのスペースに置き換えることって出来ないかなあ?

「あ_い___うえ____お」→「あ_い_うえ_お」
こんな感じで。
一度、スペースで切り分けて、スペースを除去してからスペースを一つつけてつなぎ合わせるしかないのかな???
777デフォルトの名無しさん:2007/10/11(木) 00:56:14
# -*- coding: sjis -*-
import re
re_space = re.compile(u"_+")
s, n = re_space.subn(u"_", u"あ_い___うえ____お")
print s
print n, u"回\u75f4\u6f22しますた(ぉぃ"
778デフォルトの名無しさん:2007/10/11(木) 01:02:59
>>777
正規表現を使うのか。ありがとう!
779デフォルトの名無しさん:2007/10/11(木) 04:45:36
EclipseでPydevを使ってるんですが、日本語がどうしても使えません
だれか使えた人はいますか?
780デフォルトの名無しさん:2007/10/11(木) 05:07:41
((x0, y0), (x1, y1), (x2, y2), ...)
っていうシーケンスから
(x0, x1, x2, ...) と (y0, y1, y2, ...) の二つのシーケンスを生成するような
関数が標準ライブラリにあったような気がするんだけど、、なんだっけ?
与えられた座標の組から、最小のX、最大のX、
最小のY、最大のYをみつけだしたいんだけど
どうもエレガントに書けないんだ
781デフォルトの名無しさん:2007/10/11(木) 06:45:28
すみません。
スレッドの実行を、CPUのコアを指定して実行することはできないのでしょうか?
782デフォルトの名無しさん:2007/10/11(木) 07:15:52
>>780
zip()かな?

>>781
CPythonでは出来ない。
783デフォルトの名無しさん:2007/10/11(木) 07:18:11
>>780
リスト内包じゃ駄目なのけ?
784デフォルトの名無しさん:2007/10/11(木) 08:54:31
その表現はあまり感心しないぞ
785デフォルトの名無しさん:2007/10/11(木) 10:50:43
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])
786デフォルトの名無しさん:2007/10/11(木) 13:24:22
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)
787786:2007/10/11(木) 21:52:34
ごめん。>>780>>782をちゃんと読まずに脊髄反射だった。
a = [(0,1), (8,4), (4,0), (5,9)]
zip(*a)
788デフォルトの名無しさん:2007/10/11(木) 23:11:07
二つの辞書をマージする標準関数ってある?
地道に
for k, v in dict2.items():
 dict1[k] = v
ってやるしかない?
789デフォルトの名無しさん:2007/10/11(木) 23:18:39
>>788
dict1.update(dict2)
790デフォルトの名無しさん:2007/10/11(木) 23:18:49
dict1.update(dict2)
791デフォルトの名無しさん:2007/10/11(木) 23:22:59
792デフォルトの名無しさん:2007/10/11(木) 23:23:32
>>789-790
ケコ━━━━(・∀・)人(・∀・)━━━━ン
793デフォルトの名無しさん:2007/10/11(木) 23:42:47
あるオブジェクトがstringかlistか見分けるにはどうすればよいでしょうか?
794デフォルトの名無しさん:2007/10/12(金) 00:00:24
isinstance
type
795793: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

796デフォルトの名無しさん:2007/10/12(金) 03:54:50
すみません。どうか教えてください。

hoge()は、「u."ほげほげ"」のように、テキスト以外に文字コードの情報が返ってきます。
print hoge()
のように使う分には「ほげほげ」と表示されて便利なのですが、foo[]のようなものに対し、
while 1
foo = foo + hoge()
このようなことをしていくと、[u."ほげほげ".u."ほげほげ".u."ほげほげ".u."ほげほげ"・・・・]となります。
(蛇足ですが、print fooをすると「u."ほげほげ"」が並びます。)

もし、[ほげほげ,ほげほげ,ほげほげ,ほげほげ・・・・]という配列を得たい場合、元のhoge()に手を加えずに対処するとしたらどうすればよいのでしょうか?
797デフォルトの名無しさん:2007/10/12(金) 04:52:32
>>796
u"ほげほげ"みたいな文字列はprintすると
出力先にあった変換が適宜されて"ほげほげ"となるけど
配列(list)ではそうならないだけです。
出力のちがいだけなのでちゃんと配列としては取得できています。

要素ごとに
for e in foo: print e
なんてすると"ほげほげ"……と出ますから。

どうしてもprint fooで期待している出力がほしいなら
標準の配列(list)を拡張したクラスをつくって
その__str__()メソッドを変更すればいいはずです。
foo.__str__()を行えばなんとなくわかると思います。
798デフォルトの名無しさん:2007/10/12(金) 11:22:59
u."ほげほげ"の意味がわからん。どういう表現?
799デフォルトの名無しさん:2007/10/12(金) 11:59:39
目かディスプレイかフォントが悪くて
なんて書いてあるかよく見えてないんじゃね?
800デフォルトの名無しさん:2007/10/12(金) 12:12:15
>>796
ちゃんと動くコード例と実際の出力例をコピペして質問し直す方がよい希ガス。
801デフォルトの名無しさん:2007/10/12(金) 18:08:33
素人用にチュートリアル載せてくれる有志のサイトはありがたいんだけど
基本的にリストの中身は元のオブジェクトの山椒で元のオブジェクトに変更
を加えるとリストの内容も変わってしまうとはっきり赤太字で書いてほしいよ
以前pythonを習得するのに超絶クールなテトリスゲームを作ってみたんだが
ブロックの配列がめちゃくちゃになって原因が分からず苦労したのよ
とりあえずリストをタプルに変換したりすると解決したからもういいけど
あれ不要な混乱もたらしてるからマジでさ勝手に山椒になるのは便利だと思うけど
そこんとこはっきりさせておいてよな?????????????????
802デフォルトの名無しさん:2007/10/12(金) 18:14:04
>>801
>元のオブジェクトの山椒で

山椒だったとは知りませんでした!
ありがとうございました!!!
803デフォルトの名無しさん:2007/10/12(金) 18:24:20
山椒うまいよな。タケノコ食べたくなる。

>801
何書いても誰かどっかでハマって、結局赤太字だらけになると思うよ。
804デフォルトの名無しさん:2007/10/12(金) 18:29:39
つまり、Pythonは小粒でもぴりりと旨い、と。
805デフォルトの名無しさん:2007/10/12(金) 18:38:47
どっちかってと大粒な気もするが
(言語仕様だけなら小さい方なのかな)
806デフォルトの名無しさん:2007/10/12(金) 18:59:29
>>801
俺も、4年ほど前の研究日誌というかメモ書きみたいなのを読みかえしてみると、
「パイソンが便利そうなので使ってみた。」とあり、次の日、
「意図せぬうごき。何時間も無駄にした。配列の複製がまずい?言語のバグか?」とある。
さらにその次の日に「指しているアドレスが同じだ。コピーのしかたがわからない。まさかforループ?」と。
その後へこたれてしばらくPythonを使わなかった記憶がある。
807デフォルトの名無しさん:2007/10/12(金) 19:01:14
航海日誌みたいだな
808デフォルトの名無しさん:2007/10/12(金) 19:21:13
httplib2のhelpを見ようとしたら例外が発生するんだけど俺だけ?
import httplib2
help(httplib2)

IndexError: list index out of range
809デフォルトの名無しさん:2007/10/12(金) 19:30:01
手元の
Python2.5.1(Win32) + httplib2-0.3.0
だと問題なくヘルプでた。
810デフォルトの名無しさん:2007/10/12(金) 19:49:52
Vistaでも大丈夫かな?
これから勉強したいんだけど。
811デフォルトの名無しさん:2007/10/12(金) 20:17:07
>>810
32Bitだよね。32Bitならpython2.5 + wxpython エディタは
PyScripterで動かしてるよ。インスコも簡単だったよ。
812デフォルトの名無しさん:2007/10/12(金) 21:43:05
>>809
ActivePython 2.5.1 + httplib2-0.3.0なんだけど何でだろ。
ActivePythonとPythonで動作が変わるとも思えんし。
813デフォルトの名無しさん:2007/10/12(金) 21:43:56
>>811
Vista+Pyscripterはすぐ落ちるんで使ってないな。
814810:2007/10/12(金) 21:47:53
>>811
そうです!
できるんだー。ネットで検索したら「PythonはVista未対応」みたいな
掲示板がひっかかったものですから。

ありがとうございます!
815810:2007/10/12(金) 21:50:16
>>813
何をお使いですか?
Vista機以外?
816デフォルトの名無しさん:2007/10/12(金) 22:06:46
>>257->>265‘/少しだけ計算しようと思ったのですが…
bit.って…
817デフォルトの名無しさん:2007/10/12(金) 22:24:19
>>813
Crash on Exit - PyScripter | Google グループ
http://groups.google.com/group/PyScripter/browse_thread/thread/cf3d0a1858449e19/9bf95335abf3239e?lnk=gst&q=vista#9bf95335abf3239e

これだね。IDE上でコードを実行すると落ちるらしい。
俺Pyscripterはエディタというか簡易SourceCode Viewer代わりに
しか使ってないから気がつかなかったよ。できればDoxygenのほうで
Sourceの管理はやりたいんだがDoxygenのPython Parserの精度が
いまいちで('A`)
818デフォルトの名無しさん:2007/10/12(金) 23:06:43
>>815
Vista+XP+ubuntu
819デフォルトの名無しさん:2007/10/13(土) 08:35:56
wxPython + pyOpenGL + PIL をつかったツールを作ったんだけど、
スタンドアロンでも動くように、
python.dll, opengl.dll, glut.dll, と Python 環境をまるごと
ひとつにまとめてみたら 40MB 以上もするのでびっくり。

プログラムが動く範囲ででいる限りファイル削って行ったら
それでも20MBもあるんだけど、こんなもんなのか???
ちなみに wxPyhton(wxWidgets) 部分だけで10MB以上あるんだけど。。。。

こうなったら Python + wxPython をインストール
してもらった方がよっぽど楽なのかなあ
そうすればPyOpenGLとPILのランタイムを同梱するだけで済むし。
820デフォルトの名無しさん:2007/10/13(土) 08:44:59
会社で独自のスクリプトシステム(先進的、専門的な機能は全くない)を使ってる。
そこで上司に提案した。
「Python つかったらどうすかね?」
「それって日本語つかえるの? いや、識別子に。」
「NO」
「じゃだめだな。日本語使えた方が楽だから」

。。。どうにかしてください
ソースいじって日本語識別子つかえるようになるんだったら
考えても良いかもとか言い出して、もうありえないです

プログラム中の2バイト識別子を全部アスキー文字に変換するコンバータ
つくってからもういちど提案してみようかな。なんかすごい無駄な事してる気が。。。

とにかくスクリプトシステムの保守管理がばからしくて仕方ありません。
821デフォルトの名無しさん:2007/10/13(土) 09:22:16
『まるごとPerl』だったか、Perlは識別子に日本語OKとか書いてあった気がする。
Pythonでもそのうち使えるようになるとか
ttp://www.python.jp/pipermail/python-ml-jp/2007-May/004033.html
822デフォルトの名無しさん:2007/10/13(土) 09:29:13
>>819
そんなもんだと思うよ
zipに固めるともうちょっと縮むけどリソースファイルを持ってるモジュールは使えなくなるかも
py2exeのzipextimporter使えばzipから.pydと.dllをインポートできるようになる

NSISとか7z SFXでインストールパッケージにすれば半分くらいになるんじゃないかな
823デフォルトの名無しさん:2007/10/13(土) 09:42:41
>>820
転職すれば?
824デフォルトの名無しさん:2007/10/13(土) 10:33:51
>>820
マ板の「この会社辞めようと思った〜」系のスレに書いた方がいいような気も。
825デフォルトの名無しさん:2007/10/13(土) 17:39:03
python3000使えばいんじゃね?
826デフォルトの名無しさん:2007/10/13(土) 18:01:48
>>820
なでしこでも使かったほうがいいんじゃねーのwww
827デフォルトの名無しさん:2007/10/13(土) 18:03:56
そこで代アニスクリプトですよ!!!
828デフォルトの名無しさん:2007/10/13(土) 18:34:31
日本語みたいに揺らぎが大きい言語を識別子に使おうという神経。
正直信じられないよ。
829デフォルトの名無しさん:2007/10/13(土) 18:46:27
表意文字の漢字最強
830デフォルトの名無しさん:2007/10/13(土) 19:01:43
表意文字と表音文字がごちゃ混ぜの日本語ってとんでもないクソ言語だよね
831デフォルトの名無しさん:2007/10/13(土) 19:29:12
Aさんの書いたdbモジュール:

class インタフェース:
  def 解放(self):
    ...

それを使うBさん:

import db
データ = db.インターフェイス()
...
データ.開放()
832デフォルトの名無しさん:2007/10/13(土) 19:31:35
クラス名やメソッド名はPEP8に則って欲しいな。
833デフォルトの名無しさん:2007/10/13(土) 19:35:42
いちいちコーディングの際に仮名漢字変換なんぞやってられないし
和文用にはロクなスペルチェッカもない
834デフォルトの名無しさん:2007/10/13(土) 19:41:34
>>831
import db
データ=db.インターフェース()

Attribute error (wwwwwwwwwwwww
835デフォルトの名無しさん:2007/10/13(土) 20:01:03
久しぶりにPyPyのページを覘いたら1.0がリリースされていて驚いた。
まったく話題になってないのでまだリリースまで時間がかかるのかと思っていた。

このスレじゃPyPyは誰も使わないし、興味もないのか?
836デフォルトの名無しさん:2007/10/13(土) 20:08:31
>>835
PyPyってネタだろ?
837デフォルトの名無しさん:2007/10/13(土) 22:53:52
pythonでSSLを使った通信を行うにはどうやればいいですか?
httplibのHTTPSConnectionとか使うのかと思ったんですが、
IDやパスワードの指定の仕方などがよく分かりません。
教えていただけるとありがたいです。
838デフォルトの名無しさん:2007/10/13(土) 23:02:01
839デフォルトの名無しさん:2007/10/13(土) 23:19:47
>>827
ttp://www.python.jp/doc/release/lib/module-httplib.html
> 通常、このモジュールは直接使いません

httpsならhttpと変わらずurllib2でいいし
生のSSL接続がほしいならsocket.ssl()をつかいます。

あと838は極端かもしれないけど最低モジュールライブラリ
ttp://www.python.jp/doc/release/lib/
は一読しておいて損はないです。流し読みでも頭の隅には残るでしょ。
840デフォルトの名無しさん:2007/10/13(土) 23:20:43
スマン
>>839>>827>>837
841デフォルトの名無しさん:2007/10/13(土) 23:32:18
日本語識別子に2バイト記号使われた時の
うざさは異常。
せめて2バイト空白文字とか2バイト算術演算記号は使えないようにしてほしい

def ア+B#ア(a):
 print a

アイ%テム = "HELLO"
ア+B#ア(アイ%テム)

とかされたら死ぬ
842デフォルトの名無しさん:2007/10/13(土) 23:55:31
import re as キャハッ♪
import urllib as /^○^\チョッモランマァーッ!

以下ry
843デフォルトの名無しさん:2007/10/14(日) 00:10:21
Djangoのいい解説書ってない?
844デフォルトの名無しさん:2007/10/14(日) 00:14:18
>>838 >>839
ありがとうございます。すみません。
調べ不足でした。
初めはurllib2を使って、ハンドラにadd_passwordでID等を
指定してみてたのですが、うまくできず、他の方法を探しているところでした。
socket.ssl()についてはまだよく分かっていませんが、ID等の指定は
HTTPSHandlerで行うのでしょうか?
845デフォルトの名無しさん:2007/10/14(日) 00:42:23
日本語って、ローマ字表記の日本語にすればいいでしょう。
sou sureba banji kaiketsu.
douon igigo ga ookutemo kini sinai.
846デフォルトの名無しさん:2007/10/14(日) 00:58:28
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
847デフォルトの名無しさん:2007/10/14(日) 01:06:02
mac で見てるとんだけど
>>846
def normpath?(path?)?:
って化けてる。? の部分には本当はどんな文字が?
848デフォルトの名無しさん:2007/10/14(日) 01:25:57
849デフォルトの名無しさん:2007/10/14(日) 01:27:47
>>843
ApressとSamsから今年中に出るよ
850デフォルトの名無しさん:2007/10/14(日) 01:29:37
あと文書の作成日もね。
851デフォルトの名無しさん:2007/10/14(日) 01:56:11
標準出力で改行コード変換が行われてしまうのを防ぎたいのですが、可能でしょうか。
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でその方法がわからない、という状況です。
方法など御存知の方、何卒御教示下さい
852デフォルトの名無しさん:2007/10/14(日) 01:57:52
>>851
# 標準入出力をバイナリモードに変更(Windowsのみ)
try:
import msvcrt
except ImportError:
pass
else:
for fd in (0, 1):
msvcrt.setmode(fd, os.O_BINARY)

これ?
853デフォルトの名無しさん:2007/10/14(日) 13:52:44
>>848
キモ!!!!!!!!!!
なんだこれはww
854デフォルトの名無しさん:2007/10/14(日) 17:05:20
>>853
明示的な型宣言の要望は昔からあったからな、
unicodeを使う理由は、可読性を重視した結果らしい、
識別子だらけになるよりは一文字でビシッと表したほうが結局読みやすくなる、
perl6なんかもすでにunicode演算子導入してるし目新しいことじゃない
855デフォルトの名無しさん:2007/10/14(日) 17:13:24
このsuper()の使い方ってどこが間違ってるんべ?


class Aaa():
def __init__(self):

class Bbb(Aaa):
def __init__(self):
super(Bbb,self).__init__(self)

yyy = Bbb()
856デフォルトの名無しさん:2007/10/14(日) 17:48:17
>>855
ベースクラス
857デフォルトの名無しさん:2007/10/14(日) 19:55:37
>>856
ありがとう!
でも、ちょっとググって見たけどよく分からないぽ・・・・
そもそもこんな感じで使うものではないのかしら?
858デフォルトの名無しさん:2007/10/14(日) 20:22:56
>>857
objectを継承
859デフォルトの名無しさん:2007/10/14(日) 20:36:41
>>836
C,LLVM,JavaSpript,CLI,JVMに変換できるって書いてたけど全部ネタなのか?
860851:2007/10/14(日) 21:43:23
>>852
お返事ありがとうございます。意図した動作になりました!どうもありがとうございました。
861デフォルトの名無しさん:2007/10/15(月) 00:20:50
javascriptの>>>(符号を考えずに右シフト)をPythonで行うにはどうしたらいいでしょうか?
普通の右シフトしかなさそうなので…
862デフォルトの名無しさん:2007/10/15(月) 02:17:13
>>858
サンキュー!
でけたでけた。
863デフォルトの名無しさん:2007/10/15(月) 05:16:02
年月日から曜日を計算しその月のカレンダーを表示する事をプログラムを考えてます
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)

どちらもエラーが出てしまいます。教えて下さいませ
864デフォルトの名無しさん:2007/10/15(月) 05:56:25
from calendar import prmonth
prmonth(1752,9)

#なんでmathモジュールだと思ったの?
865デフォルトの名無しさん:2007/10/15(月) 06:54:38
>>864
初心者な者で・・
出来ました。有難う御座いました。
866デフォルトの名無しさん:2007/10/15(月) 09:08:05
初心者っつーか粗忽者
867デフォルトの名無しさん:2007/10/15(月) 10:19:54
>>> 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?
868デフォルトの名無しさん:2007/10/15(月) 10:29:23
>>867
コピペしたけど我が家では動かんね。
h2という意図せぬオブジェクトが残っているか、
リストのサイズが無理やり整数型になっているかじゃないの?
869デフォルトの名無しさん:2007/10/15(月) 10:37:08
>>848
というより、なんでシオカンアップローダーなんだよw
870デフォルトの名無しさん:2007/10/15(月) 10:49:14
>>867
[l for l in h2 for h2 in h]==[l for in h2]
871870:2007/10/15(月) 10:49:55
間違えた
[l for l in h2 for h2 in h]==[l for l in h2]
872デフォルトの名無しさん:2007/10/15(月) 11:03:50
>>867
逆だ
[l for h2 in h for l in h2]
873867: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 の式でやりたいことができました。
精進してきます。ありがとん。

874デフォルトの名無しさん:2007/10/15(月) 16:57:01
すみません

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と返せるのはなぜなのですか?
875デフォルトの名無しさん:2007/10/15(月) 16:59:13
>>838
リンク踏んだらページがあってびっくりした
876デフォルトの名無しさん:2007/10/15(月) 18:53:09
>>874
うちではそんなエラー起きないな。
877874:2007/10/15(月) 21:35:55
>>876
それはいいこと聞きました。
少し環境を変えていろいろ試してみます。
878デフォルトの名無しさん:2007/10/15(月) 21:38:33
俺んとこでも起きない。
BeautifulSoupは最新版かい?
879874: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
とりあえずこれとは違うものを試してみようと思います。
880デフォルトの名無しさん:2007/10/16(火) 01:37:35
cookielibを使いながらCookieヘッダに任意の文字を書き足す方法ってあるのでしょうか?
どうにもうまくいかない・・・
素直に自力で全部やれってことなのでしょうが・・・
881デフォルトの名無しさん:2007/10/16(火) 03:34:18
>>869
ついついいつもの処をつかってしまったニダ
ケナンチャヨ
882デフォルトの名無しさん:2007/10/16(火) 09:49:42
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」を
決めるにはどうプログラムすればいいのでしょうか?
883デフォルトの名無しさん:2007/10/16(火) 10:08:19
日本語でおk
884デフォルトの名無しさん:2007/10/16(火) 10:20:22
任意のリストからランダムにとりだすってこと?

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のパッケージがなんかうまくいかなかった気がする
886882:2007/10/16(火) 12:25:32
すみません 言葉が足りませんでした
例えば、競馬にオッズがありますが、それに対応(考慮)したランダムな当選を決めるにはどうしたら?
と、いう事です。
887デフォルトの名無しさん:2007/10/16(火) 12:41:23
>>886
倍率を展開した配列作って、そこからランダムでいけない?
888デフォルトの名無しさん:2007/10/16(火) 12:48:21
>>887
すみません 決まったデーターを使用したいです
>倍率を展開した配列
だと、とどうなるのでしょうか?
889デフォルトの名無しさん:2007/10/16(火) 12:50:29
>>887
よく考えたらおっしゃる意味が分かりました
ぜひお願いします。
890デフォルトの名無しさん:2007/10/16(火) 13:15:16
意味が分かったんなら自分で書けるんじゃん
891デフォルトの名無しさん:2007/10/17(水) 16:54:51
Lightweight Language AHP
http://dame.dyndns.org/misc/llahp/
AHPとは - はてなダイアリー
http://d.hatena.ne.jp/keyword/AHP

これおもしろかった
892デフォルトの名無しさん:2007/10/17(水) 17:08:26
母集団の補正ですね
893デフォルトの名無しさん:2007/10/17(水) 17:26:21
これそれぞれの言語に対する回答者のイメージを根拠に診断してるのかな?
なんか意味あるの?
894デフォルトの名無しさん:2007/10/17(水) 17:35:38
他の言語の速さとか変態性とか開発環境とか全然分からんわ
895デフォルトの名無しさん:2007/10/17(水) 19:01:19
>>893
偏見の収集に役立つだろうね
896デフォルトの名無しさん:2007/10/17(水) 19:55:26
http://www.gizmodo.jp/2007/07/iphonepythonapache.html
既出?
面白そうなんだけど
897デフォルトの名無しさん:2007/10/17(水) 20:31:44
まずiphoneがないから・・・
898デフォルトの名無しさん:2007/10/17(水) 21:04:34
>>897
ipod touch
899デフォルトの名無しさん:2007/10/17(水) 22:14:27
PythonでのGUIは何使っていますか?

tkを使おうかと思ったけど、見掛けが標準的なものでないし
wxWedgetだと、配布するとき大変だし、
Qtはライセンスが気に入らないし

これはというものがないですよね
900デフォルトの名無しさん:2007/10/17(水) 22:24:36
GUIで書いたことないから分からんけどwxって配布大変なんだ
GTKもあるよね?それはどうなの?
901デフォルトの名無しさん:2007/10/17(水) 22:26:13
>>899
PyObjC
902デフォルトの名無しさん:2007/10/17(水) 22:28:47
>>900
wxはサイズが50Mぐらいになるらしいよ
903デフォルトの名無しさん:2007/10/17(水) 22:29:03
> Qtはライセンスが気に入らないし
気に入らないのは GPL? Qtライセンス?
904デフォルトの名無しさん:2007/10/17(水) 22:35:00
Pythonは3.0(2.6?)になって結構変更が多いらしいですが、
その辺をまとめたサイト等あれば教えて下さい

特に互換性がなくなる要素など
905デフォルトの名無しさん:2007/10/17(水) 22:45:56
906899:2007/10/17(水) 22:46:59
QtのGPLが嫌いです

PyGTKはチェックしてませんでした、これを使ってみようか検討してみます

PyObjCはMac専用なので、私の環境でた対象外です
907デフォルトの名無しさん:2007/10/17(水) 22:51:57
908デフォルトの名無しさん:2007/10/18(木) 02:20:12
>>902
そんなになるわけないだろ。
5Mぐらいで配布できる。
909デフォルトの名無しさん:2007/10/18(木) 08:58:16
完全スタンドアロンで
Python2.5+wxPython+OpenGL+PIL+msvcr71.dll を含め、
DLLの再コンパイルなどせはず、標準のままの状態で(ただし未使用のファイルは取り除いておく)
zipで最高圧縮かけて 7MB だったよ

910デフォルトの名無しさん:2007/10/18(木) 09:07:10
>>902
マジで50Mすげえな
そんなもん使ってられっかよ!!
911デフォルトの名無しさん:2007/10/18(木) 10:18:09
tkかQtならサイズが小さくなると言うのか?
912デフォルトの名無しさん:2007/10/18(木) 11:48:35
最近、勉強するならTkも悪くないかなと思う俺がいる

Computer Languages History (preview)
http://www.levenez.com/lang/history.html#11
913デフォルトの名無しさん:2007/10/18(木) 12:25:45
>>911
tcl84.dll 650Kぐらい
tk84.dll 800Kぐらい
tkinter.pyd 40Kぐらい

サイズだけ言ったら天地ほども違うんじゃないかな。
wxWidgetsはメガ級のDLLがゴロゴロあって、Python側のスクリプトも
ほぼコンポーネント毎に(つまり大量に)存在する。数えたくも無いぐらいだね。
914デフォルトの名無しさん:2007/10/18(木) 15:38:58
>>909
7MBが本当なら、
wx勉強する気になった。
915デフォルトの名無しさん:2007/10/18(木) 16:05:13
tkはtcl読まなきゃならんし、外観がネイティブじゃない。
機能もwxの方が豊富なのは確かだから数MB位は我慢できるだろう。
916デフォルトの名無しさん:2007/10/18(木) 16:41:17
自分で使うだけならwxでもなんでもいいけど、配布する場合は軽くしたいよね
でも、自分で使うだけなら簡単で標準のtkも悪くなさそう
917デフォルトの名無しさん:2007/10/18(木) 21:00:00
もしMacもってるならPyObjCが最高の開発環境だ。
配布バイナリは小さくてすむし、Cocoaが使えるからエレガント。
918デフォルトの名無しさん:2007/10/18(木) 22:15:15
>>911
Qtだとサイズは縮まないだろ
919デフォルトの名無しさん:2007/10/18(木) 22:27:47
PyPyが動くようになるか、
Pythonコンパイラがあれば配布が楽になるんだが、
誰か作らないかな。
昔はあったんだけどなあ
920デフォルトの名無しさん:2007/10/18(木) 22:36:22
Linuxだったら普通はライブラリとか同梱しないし
Windowsならwin32uiとかvenster使えばいいんじゃねーの
921デフォルトの名無しさん:2007/10/18(木) 22:39:03
そういやPythonがデフォルトで入るディストリビューションってどこらへんなの?

入る・・・・RHELとその互換、Fedora
入らない・・・・Debian系、SuSE系

こんな感じなのか?
922デフォルトの名無しさん:2007/10/18(木) 22:48:57
WTLでGUIを書いてboost.pythonでpythonをembedするのが最強じゃね
923デフォルトの名無しさん:2007/10/18(木) 22:58:20
つIronPython
924デフォルトの名無しさん:2007/10/18(木) 23:31:22
つJython
925デフォルトの名無しさん:2007/10/19(金) 00:06:23
つSamson
926デフォルトの名無しさん:2007/10/19(金) 00:34:32
>>921
Debian系でもPythonは標準でインストールされるよ
927デフォルトの名無しさん:2007/10/19(金) 00:52:10
>>921
Xenを動かすために必要だからかなりのディストリビューションでインストールされるんじゃないのか。
928デフォルトの名無しさん:2007/10/19(金) 12:27:37
ubuntu でも最初から入ってた気がする
929デフォルトの名無しさん:2007/10/19(金) 12:29:49
最近のはPythonが入ってないほうが珍しい
930デフォルトの名無しさん:2007/10/19(金) 14:13:58
pythonでブラウザーで動くjava appletみたいなのを作りたいのですが
何か方法はありますか?
931デフォルトの名無しさん:2007/10/19(金) 14:23:10
似たような質問をどっかで見た気が
932デフォルトの名無しさん:2007/10/19(金) 14:35:34
jythonならブラウザーで動くjava appletそのものが作れるわな。
933デフォルトの名無しさん:2007/10/19(金) 14:41:37
十三日の金曜日ジェイソン
934デフォルトの名無しさん:2007/10/19(金) 17:05:55
http://www.jython.jp/
はどうなってしまったのですか>.<b
935デフォルトの名無しさん:2007/10/19(金) 17:54:34
jythonってSunが支援してはいないよね
将来性が少し心配だよ
936デフォルトの名無しさん:2007/10/19(金) 19:34:05
>>508
二回close()でエラーが発生する?
937デフォルトの名無しさん:2007/10/19(金) 22:52:01
>>935
Rubyサポートしてるからしてないんだろ。
Pythonが広まればJavaに影響があるからしょうがないと思うけど。
938デフォルトの名無しさん:2007/10/20(土) 01:43:15
./
|-/自分のライブラリのディレクトリ/ # DirA
|-/他人のライブラリのディレクトリ/ # DirB
|-/メインのプログラム開発用ディレクトリ/ # DirC

というディレクトリ構造で、
DirCから、DirA/DirB内のモジュールをimportしたいとき、
sys.path.insert( 0, os.path.abspath("../") );
とやってpathに追加してるんですが、これっておかしいですか?
環境変数に追加するのは汚くなりそうなんでやめてます。
939デフォルトの名無しさん:2007/10/20(土) 02:18:43
>>938
正しい。マンドイならhoge.pthをlib/site-packagesにいれとく
ttp://www.python.jp/doc/release/lib/module-site.html
940デフォルトの名無しさん:2007/10/20(土) 02:45:23
こんなんでいいのかな?

import imp
# import ../foo.py
info = imp.find_module("foo", ["../"])
foo = imp.load_module("foo", *info)

PEP328 が実装されれば簡単に出来そうだけど
941938:2007/10/20(土) 03:27:07
>>939,940
あざっす。安心しました
942デフォルトの名無しさん:2007/10/20(土) 04:48:47
Pythonの高速化を誰かやって欲しいな。
そうすればC拡張を使わなくていいから
用途によってIronPythonやJythonを使いやすくなるのに
943デフォルトの名無しさん:2007/10/20(土) 05:00:59
rubyからやり直してこい
944デフォルトの名無しさん:2007/10/20(土) 08:29:13
Cythonなんてだめかい?
945デフォルトの名無しさん:2007/10/20(土) 08:37:57
とりあえずpsycoとか。
946デフォルトの名無しさん:2007/10/20(土) 09:28:25
>>945が import impo に見えた俺は包茎
947デフォルトの名無しさん:2007/10/20(土) 10:19:11
1ファイル1クラスでモジュールを書きたいんだけど、
たとえば graphics パッケージに texture.py があって、
そこで Texture クラスが定義されていた場合に

import graphics
t = graphics.texture.Texture()

てかかなきゃいけなくなるんだけど、
モジュール名とクラス名が必ず一致するというか、
冗長な感じがするのでできれば

import graphics
t = graphics.Texture()

て感じでアクセスできるようにしたいんだけど、できる?
948デフォルトの名無しさん:2007/10/20(土) 10:25:26
import graphics.texture
949デフォルトの名無しさん:2007/10/20(土) 10:26:26
>>946
どうやったら見えるんだとつっこんでみるw
950デフォルトの名無しさん:2007/10/20(土) 11:10:00
>>947
漏れなら texture.py に Texture インスタンスを生成するメソッド new を定義して
from graphics.texture import Texture
t = Texture.new()
とかする

使い慣れてる人は @classmethod するかもしれない
951デフォルトの名無しさん:2007/10/20(土) 12:04:53
>>947
graphics の __init__.py に
from texture import Texture
と書いておくのは駄目?
952デフォルトの名無しさん:2007/10/20(土) 15:49:53
>>945
pyscoなんてもうwindows環境ぐらいしかまともに動かないんじゃない?
953デフォルトの名無しさん:2007/10/20(土) 16:04:07
おまえらproperty使う派?
それとも、setter/getter公開する?
954デフォルトの名無しさん:2007/10/20(土) 16:20:09
setter/getterは作らない。
特に何もなければ、変数を直に触らせて、何らかの処理が必要ならproperty。
python的には、これでいいと思ってる。
955デフォルトの名無しさん:2007/10/20(土) 16:23:44
>>954
変数を直は無いだろ・・・
956デフォルトの名無しさん:2007/10/20(土) 16:34:26
クラスの仕様が流動的な場合はsetter/getterを書いて
最初からかっちりしてる場合は>>954みたいにしてる。
957デフォルトの名無しさん:2007/10/20(土) 18:01:35
>>942
PyPyを試してみなよ
958デフォルトの名無しさん:2007/10/20(土) 18:04:32
>>955
Pythonだったら変数を直でさわるのは問題ないだろ。
作る側が注意するんじゃなくて使う側が注意するのがPython。
変数を直でさわらせないようにしても、変数を隠せないんだから。
959デフォルトの名無しさん:2007/10/20(土) 18:19:15
>>955
貴様、PEP8読んでないな!
960デフォルトの名無しさん:2007/10/20(土) 18:32:25
>>957
動くの?
961デフォルトの名無しさん:2007/10/20(土) 19:12:17
955みたいなスタイルに異論を唱える奴は
自分の能力の低さを露呈していることにいい加減気付よwwww
962デフォルトの名無しさん:2007/10/20(土) 19:37:48
>>961が一番バカそうに見える件
963デフォルトの名無しさん:2007/10/20(土) 19:38:27
スタイルに異論を唱える奴==能力が低い奴
なんて考え持ってる方がやばいと思うけど。
異論を唱えてスキル高いやつなんか大量にいる。
こうやって下の奴に追い抜かされてくんだろうな・・・

明日は我が身か?w
964デフォルトの名無しさん:2007/10/20(土) 20:06:44
ZIPでくれ
965デフォルトの名無しさん:2007/10/20(土) 20:22:44
>>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
966デフォルトの名無しさん:2007/10/20(土) 20:31:13
propertyって継承するとき面倒なんだよね
967961:2007/10/20(土) 20:40:25
スマン、アンカー間違えた
955ではなく954だ
968953:2007/10/20(土) 21:15:12
>>959
参考になった。
>>966
なんで?
969デフォルトの名無しさん:2007/10/20(土) 21:45:00
>>965
へー面白いね。しかし読みにくいw
970デフォルトの名無しさん:2007/10/20(土) 21:54:25
>>> 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']
971デフォルトの名無しさん:2007/10/20(土) 21:55:28
次スレ

Pythonのお勉強 Part21
http://pc11.2ch.net/test/read.cgi/tech/1192884897/
972デフォルトの名無しさん:2007/10/20(土) 21:56:07
pythonにOO的なモノを期待しちゃいけません
973965:2007/10/20(土) 22:00:22
>>970
ぐは
俺の負けです
974デフォルトの名無しさん:2007/10/20(土) 22:04:48
>>972
それはOOの定義によるんじゃないの
OO=カプセル化、ではないのだし
975デフォルトの名無しさん:2007/10/20(土) 22:11:47
>>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'

導出したら再定義しろってことなのかな
976デフォルトの名無しさん:2007/10/20(土) 22:22:35
DjangoってFreeBSDで使えるかな?
977デフォルトの名無しさん:2007/10/20(土) 23:34:06
>>975
getFooではなくfooを公開インタフェースにするんなら、
class BでgetFooなんかじゃなく、fooを再定義すればいいのでは?
978デフォルトの名無しさん:2007/10/21(日) 00:47:50
>>976
CPythonのバージョンがDjangoの動作条件を満たせば動くんじゃない。
979デフォルトの名無しさん:2007/10/21(日) 00:48:35
>>> 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'

こうか
980デフォルトの名無しさん:2007/10/21(日) 00:55:51
>>979
>>> class B(A):
...   def getfoo(self):
...     return 'foo in B'
...     foo = property(getfoo)

これじゃ駄目なのか?
981デフォルトの名無しさん:2007/10/21(日) 11:23:04
少し古い話題だけど、GUIで最強なのは
Jython + Swingだろ
982デフォルトの名無しさん:2007/10/21(日) 11:39:16
Jythonって最新で2.2とかなんだっけ
983デフォルトの名無しさん:2007/10/21(日) 12:10:59
>>982
そうだよ、そして、いつ次のバージョンが出るのかも不明
984デフォルトの名無しさん:2007/10/21(日) 13:00:57
読みは「じゃいそん」でいいのだろうか
985デフォルトの名無しさん:2007/10/21(日) 13:55:31
Jython は 2.2.1 が出ているのに気付かれない要らない子
986デフォルトの名無しさん:2007/10/21(日) 14:21:30
インリンオブJython
987デフォルトの名無しさん:2007/10/21(日) 15:43:26
>>984
ホッケーの仮面つけたままリサイタル開きそうな名前だな。
988デフォルトの名無しさん:2007/10/21(日) 16:27:30
混ぜるな危険w
989デフォルトの名無しさん:2007/10/21(日) 18:21:19
JythonってJrubyみたいにコンパイルしてるの?
990デフォルトの名無しさん:2007/10/21(日) 18:23:56
>>987
素でじゃいそんだと思ってたんだがマジョリティの読み方は何なんだ?
991デフォルトの名無しさん:2007/10/21(日) 18:29:34
>>987
歌もチェインソーも殺人的?
>>990
つか、それ以外に読みようがなくね?
992デフォルトの名無しさん:2007/10/21(日) 18:31:45
ジェイソンじゃないの?
993デフォルトの名無しさん:2007/10/21(日) 18:32:03
>>991
単なる俺読みじゃなくて安心した
994デフォルトの名無しさん:2007/10/21(日) 19:08:59
次スレ
Pythonのお勉強 Part21
http://pc11.2ch.net/test/read.cgi/tech/1192884897/
995デフォルトの名無しさん:2007/10/21(日) 19:35:38
Jythonと書いてジェイソンと読ませるはず
996デフォルトの名無しさん:2007/10/21(日) 19:53:43
pythonでAOPは使える?
997デフォルトの名無しさん:2007/10/21(日) 20:35:29
pythonでlzhのファイルを解凍する方法ってどうするの?
998デフォルトの名無しさん:2007/10/21(日) 21:55:04
>>997
python Lha で検索してみたけど、ライブラリなさそうだね。
外部コマンドとして lhaコマンドを呼び出すしかなさそう。
999デフォルトの名無しさん:2007/10/21(日) 21:59:26
>>997
ctypeを使ってUnlha32.dllを使えばいいんじゃないの
1000デフォルトの名無しさん:2007/10/21(日) 22:02:07
ctypeじゃなくてctypesだ
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。