Pythonのお勉強 Part 26
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/04/29(火) 23:47:08ttp://www.python.org/
ttp://www.python.org/doc/
日本Pythonユーザ会
ttp://www.python.jp/Zope/
ttp://www.python.jp/doc/
FrontPage - Pythonのお勉強
ttp://python.rdy.jp/
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1206876081/
◆関連スレッド
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/
Python Challengeをやろう!
http://pc11.2ch.net/test/read.cgi/tech/1175919288/
Pythonについて(アンチ専用)
http://pc11.2ch.net/test/read.cgi/tech/1203557046/
Pythonに見られるインデントによる制御構造の是非
http://pc11.2ch.net/test/read.cgi/tech/1169473442/
pythonがこの先生きのこるには
http://pc11.2ch.net/test/read.cgi/tech/1167996371/
Eclipse統合M24【Java/C/PHP/Ruby/Python/Perl】(PyDev)
http://pc11.2ch.net/test/read.cgi/tech/1200918324/
【Perl,PHP】LLバトルロワイヤル2【Ruby,Python】
http://pc11.2ch.net/test/read.cgi/tech/1209289408/
デザパタ + Python/Ruby/Smalltalk part2
http://pc11.2ch.net/test/read.cgi/tech/1175959706/
2ch検索: [python]
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
0002デフォルトの名無しさん
2008/04/29(火) 23:47:59乙
0003デフォルトの名無しさん
2008/04/29(火) 23:50:23http://www.amazon.co.jp/dp/4873112109
0004デフォルトの名無しさん
2008/04/29(火) 23:53:00-「 ̄ |
| | | なんかバギしたら>>1乙でた
|| +| ありえん(笑)
.L ‐--‐'ヽ
|l リV _` ≡乙
|cl | ´ヮ ノ/
.l レ l |
/ | +|
0005デフォルトの名無しさん
2008/04/29(火) 23:53:45ttp://python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1
0006デフォルトの名無しさん
2008/04/30(水) 02:49:36ttp://python.rdy.jp/wiki.cgi?page=%C6%FC%CB%DC%B8%EC
0007デフォルトの名無しさん
2008/04/30(水) 18:39:572.5ならカリー化できるみたいよ、
http://d.hatena.ne.jp/kei10in/20080408/1207660199
0008デフォルトの名無しさん
2008/04/30(水) 20:29:06http://pc11.2ch.net/test/read.cgi/tech/1207878910/
0009デフォルトの名無しさん
2008/04/30(水) 21:52:34http://pc11.2ch.net/test/read.cgi/gamedev/1126605105/
0010デフォルトの名無しさん
2008/04/30(水) 22:44:250011デフォルトの名無しさん
2008/04/30(水) 23:15:160012デフォルトの名無しさん
2008/05/01(木) 02:27:16ありがと、ちょう便利。
0013デフォルトの名無しさん
2008/05/01(木) 11:14:250014デフォルトの名無しさん
2008/05/01(木) 12:08:380015デフォルトの名無しさん
2008/05/01(木) 12:47:35なんともいえない。20行程度なら全ソースを貼ってみ。
0016デフォルトの名無しさん
2008/05/01(木) 13:02:04お前がやってみろゴミクズが
0017デフォルトの名無しさん
2008/05/01(木) 13:13:060018デフォルトの名無しさん
2008/05/01(木) 13:14:23何を見て>>13を書いたのか、君の目撃例を出してみれって話だろう。
君が何を見て言っているのかの提示を、どうやって君の話し相手が「やる」んだ?
0019デフォルトの名無しさん
2008/05/01(木) 13:48:090020デフォルトの名無しさん
2008/05/01(木) 14:11:150021デフォルトの名無しさん
2008/05/01(木) 14:15:190022デフォルトの名無しさん
2008/05/01(木) 14:49:370023デフォルトの名無しさん
2008/05/01(木) 15:20:35っていうヘンテコルールが弊社に存在します
0024デフォルトの名無しさん
2008/05/01(木) 15:28:510025デフォルトの名無しさん
2008/05/01(木) 15:31:130026デフォルトの名無しさん
2008/05/01(木) 16:24:420027デフォルトの名無しさん
2008/05/01(木) 16:35:380028デフォルトの名無しさん
2008/05/01(木) 16:42:500029デフォルトの名無しさん
2008/05/01(木) 17:23:200030デフォルトの名無しさん
2008/05/01(木) 17:43:530031デフォルトの名無しさん
2008/05/01(木) 18:07:120032デフォルトの名無しさん
2008/05/01(木) 18:40:07このスレの住人がPython勉強してないみたいなこと言うな自己解決しました。
0033デフォルトの名無しさん
2008/05/01(木) 19:01:45本スレはあっち
0034デフォルトの名無しさん
2008/05/01(木) 19:35:12みたいなデータを
hello['e'], hello['j'], hello['r'], hello['i'], hello['f']
みたいにアクセスするにはどうしたら良いでショッカー
0035デフォルトの名無しさん
2008/05/01(木) 19:53:37ちゃんと import になってたぞ。残念な気分になった。
0036デフォルトの名無しさん
2008/05/01(木) 19:55:51>ちゃんと import になってたぞ
じゃあ買うのよすわ
0037デフォルトの名無しさん
2008/05/01(木) 19:56:190038デフォルトの名無しさん
2008/05/01(木) 20:02:330039デフォルトの名無しさん
2008/05/01(木) 20:03:56イケメンハッカーは神になりそこねたと思うよ.
0040デフォルトの名無しさん
2008/05/01(木) 20:13:52自己解決したんですね。
0041デフォルトの名無しさん
2008/05/01(木) 20:19:27class hoge(list):
def __getitem__(self,x):
if x == 'e':
return self[0]
としても、リストのインデクス0番目が帰ってこない。
print x及びprint type(x)とすると、
入力した値と<type 'str'>と帰ってくるんだが、どういう現象?
0042デフォルトの名無しさん
2008/05/01(木) 20:27:160043デフォルトの名無しさん
2008/05/01(木) 20:29:00self[0]を使うとhoge.__getitem__がもう一度呼ばれるので
return list.__getitem__(self, 0)じゃないと駄目
>>34は普通に辞書を作った方がいいと思うが
0044デフォルトの名無しさん
2008/05/01(木) 20:29:49馬鹿な俺に答えだしてくれてありがとう
0045デフォルトの名無しさん
2008/05/01(木) 20:32:10勉強不足すぎるわ俺
0046デフォルトの名無しさん
2008/05/01(木) 20:45:08hello = {'e': 'Hello', 'j': 'こんにちわ', 'r': 'Здравствуйте', 'i': 'Buongiorno', 'f': 'Bonjour'}
0047デフォルトの名無しさん
2008/05/01(木) 20:53:06def dictize(word):
for k,v in zip(idx,word):
temp[k] = v
return temp
idx = ['e', 'j', 'r', 'i', 'f']
hello = ["hello", "こん", "ズドラストヴィーチェ", "buongiorno", "bonjur"]
hello = dictize(hello) # 識別子hello を 辞書化
hello # 素のhelloリスト (データ)
こんなかんじやね。じこかいけつしました
0048デフォルトの名無しさん
2008/05/01(木) 20:56:05dictizeを用意しなくてもdict(zip(idx,hello))で辞書化できるよ
0049デフォルトの名無しさん
2008/05/01(木) 21:00:220050デフォルトの名無しさん
2008/05/01(木) 21:01:31部品ぽいクラスだったら10行以内とかでも普通。
その辺に転がってるモジュールの中にいくらでも例がある。
要はどういうデータの束に名前を付けるかって言うだけの話なので、
小さいところに名前付けたらクラスも小さくなる
クラス=なんか大物
と思ってる人は、勉強した本が悪い
0051デフォルトの名無しさん
2008/05/01(木) 23:30:230052デフォルトの名無しさん
2008/05/01(木) 23:39:000053デフォルトの名無しさん
2008/05/01(木) 23:40:250054デフォルトの名無しさん
2008/05/01(木) 23:45:230055デフォルトの名無しさん
2008/05/01(木) 23:50:410056デフォルトの名無しさん
2008/05/01(木) 23:53:21It impossible for native English speaker to understand such a terrible English.
0057デフォルトの名無しさん
2008/05/02(金) 00:02:26>>> def f():
... print x
...
>>> f()
global
>>> def f2():
... print x
... x = 'local'
...
>>> f2()
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<stdin>", line 2, in f2
UnboundLocalError: local variable 'x' referenced before assignment
ってなるのは何故?
0058デフォルトの名無しさん
2008/05/02(金) 00:06:130059デフォルトの名無しさん
2008/05/02(金) 00:46:28Why didn't you use a verb in your sentense?
0060デフォルトの名無しさん
2008/05/02(金) 02:27:16f2()内でglobalとして扱うなら、print x の前にglobal x とか入れるんじゃないかな。
0061デフォルトの名無しさん
2008/05/02(金) 03:34:580062デフォルトの名無しさん
2008/05/02(金) 04:28:510063デフォルトの名無しさん
2008/05/02(金) 06:37:46同名のグローバル変数を隠蔽しちゃうってやつだね
JavaScriptも似たような挙動だった気がする
初めてのPythonにはみっちり書いてあったはずから
参照できる人は見てみるのもいいかも
0064デフォルトの名無しさん
2008/05/02(金) 08:21:240065デフォルトの名無しさん
2008/05/02(金) 08:43:420066デフォルトの名無しさん
2008/05/02(金) 08:55:35ちなみに「初めてのPython」はマルチバイト文字列の扱いについてまったく触れてないので、
「まともな入門書」に入りません。
0067デフォルトの名無しさん
2008/05/02(金) 09:15:070068デフォルトの名無しさん
2008/05/02(金) 09:29:03このスレ的にはどうなの?>Jython本
読んだ人感想プリーズ
ネットで読めるのは宗教っぽい妄信的な書評ばっかりで正直キモいと思っているんだが(www
0069デフォルトの名無しさん
2008/05/02(金) 10:20:290070デフォルトの名無しさん
2008/05/02(金) 10:28:51ttp://yoshiori.org/blog/2008/04/jython.php
確かにキモい(www
ていうかこのスレでnishioさんを「天才」とか「イケメン」とか言ってるやつってこいつじゃね?(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0071デフォルトの名無しさん
2008/05/02(金) 10:30:20これはないわwwww
0072デフォルトの名無しさん
2008/05/02(金) 10:33:43無色のネラーだからしょうがないよ(W
0073デフォルトの名無しさん
2008/05/02(金) 11:19:55アッーー!
0074デフォルトの名無しさん
2008/05/02(金) 12:06:04この人は何がしたいんだwwwwwwwwwwwwww
0075デフォルトの名無しさん
2008/05/02(金) 12:33:420076デフォルトの名無しさん
2008/05/02(金) 20:05:06imprtに期待age
0077デフォルトの名無しさん
2008/05/03(土) 17:52:49>ちなみに python 2.3 で末尾再帰版 fact を計算したところ、
>n = 900 までは計算でき、 n = 1000 でスタックが溢れた。
これって本当?
1000でスタックが溢れたら大問題だと思うけど
0078デフォルトの名無しさん
2008/05/03(土) 18:07:35sys.setrecursionlimitで変更も可能
0079デフォルトの名無しさん
2008/05/03(土) 18:10:05それはスタック溢れとは言わないだろ。
0080デフォルトの名無しさん
2008/05/03(土) 18:39:44>>77の記事を書いた人に言ってあげなよ
0081デフォルトの名無しさん
2008/05/03(土) 18:46:510082デフォルトの名無しさん
2008/05/03(土) 18:53:050083デフォルトの名無しさん
2008/05/03(土) 19:31:58エラーメッセージが違うのかなと思って実行してみたけど、
RuntimeError: maximum recursion depth exceeded
と表示された。
0084デフォルトの名無しさん
2008/05/03(土) 19:32:080085デフォルトの名無しさん
2008/05/03(土) 19:43:210086デフォルトの名無しさん
2008/05/03(土) 19:57:34奴らは英語ができない情報ニート
0087デフォルトの名無しさん
2008/05/03(土) 20:13:31これを見た上で「あふれた」と言ったのか?
0088デフォルトの名無しさん
2008/05/03(土) 20:50:26もしかしたら1000に達する前にMemoryError: stack overflowが出たのかもしれない。
0089デフォルトの名無しさん
2008/05/03(土) 22:37:540090デフォルトの名無しさん
2008/05/03(土) 22:52:310091デフォルトの名無しさん
2008/05/03(土) 23:17:05http://www.python.org/dev/peps/pep-3108
0092デフォルトの名無しさん
2008/05/03(土) 23:17:44Ruby では同じ文脈で stack overflow エラーが出るわけだから記事の話の流れからいっても自然だし
Python の sys.setrecursionlimit() の説明でもスタックという表現が使われている。
> setrecursionlimit( limit)
> Set the maximum depth of the Python interpreter stack to limit. This limit prevents
> infinite recursion from causing an overflow of the C stack and crashing Python.
個人的には>>80に同意。
0093デフォルトの名無しさん
2008/05/04(日) 06:52:48あふれた
でいいと思う
0094デフォルトの名無しさん
2008/05/04(日) 13:46:59setrecursionlimitで値を変更するべきだと思うけど
0095デフォルトの名無しさん
2008/05/04(日) 13:49:57溢れたとは言わないだろうな。
0096デフォルトの名無しさん
2008/05/04(日) 14:13:360097デフォルトの名無しさん
2008/05/04(日) 14:24:47なんかちょっと頭のいい人ならすぐできそうな気もするんだが...
(まぁ、俺には難しいんだが...)
0098デフォルトの名無しさん
2008/05/04(日) 14:28:38(中間言語へのコンパイルかもしれないが)、
末尾再帰最適化を採用する事で
どれだけ JIT コンパイルのコストに影響が出るんだろうか。
0099デフォルトの名無しさん
2008/05/04(日) 14:47:23溢れたとは言わないな。「limitに達した」じゃないかな。
0100デフォルトの名無しさん
2008/05/04(日) 14:50:16こんなの見つけた
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/474088
0101デフォルトの名無しさん
2008/05/04(日) 15:04:56言語仕様と下位層による。
Rubyのブロック引数みたいなへんな言語仕様があると面倒だし、
末尾呼び出し最適化を考慮したスタックフレームを持つ機械の機械語や
そのような仮想機械へのコンパイルなら楽。
0102デフォルトの名無しさん
2008/05/04(日) 15:29:590103デフォルトの名無しさん
2008/05/04(日) 16:19:33面白いのを見つけました。でもPythonで書き直すには
どうしたら良いかわかりません…orz
upload.cgi を python で書き直すとしたら
どう書いたら良いでしょうか?どうぞよろしくお願いします.
0104デフォルトの名無しさん
2008/05/04(日) 16:54:210105103
2008/05/04(日) 16:55:34dbm[hash] = id
dbm.close
このへん、わけわからん orz
0106デフォルトの名無しさん
2008/05/04(日) 17:03:55http://www.google.co.jp/search?q=python+dbm
0107103
2008/05/04(日) 18:46:34>>> db=shelve.open("db/id", "c")
>>> db["spam"]=1024
>>> db.close()
>>>
>>> db=shelve.open("db/id")
>>> db["spam"]
1024
こんなかんじですね。どもです。 ほかにdbmは
anydbm, pickle, shelve とか三種類くらいありました。
0108デフォルトの名無しさん
2008/05/04(日) 20:13:52>>> import httplib, urllib
>>> params=urllib.urlencode({'id':1, 'imagedata':"spam"})
>>> headers={"Content-type": "application/x-www-form-urlencoded",
... "Accept": "text/plain"}
>>> conn=httplib.HTTPConnection("localhost")
>>> conn.request("POST", "/cgi-bin/upload_py.cgi", params, headers)
>>> res=conn.getresponse()
>>> res.status
500
ここを見ながら、client側の部分を書いてみたのですが
うまく行きません…どう書いたら良いでしょうか?
0109デフォルトの名無しさん
2008/05/04(日) 20:17:01その upload_py.cgi の方に問題があるんじゃないの?
0110デフォルトの名無しさん
2008/05/04(日) 20:17:460111デフォルトの名無しさん
2008/05/04(日) 20:30:41それはないと思われ。
0112デフォルトの名無しさん
2008/05/04(日) 20:58:44#File.open("data/#{hash}.png","w").print(imagedata)
fname = "%s.png" % hash
file(fname, 'w').write(imgdata)
ここの所が間違ってたみたいでした。w のとこが r になってました。
>>> res.status
302
と、変更したら返されるcodeが 500 から 302 になりました。
200 じゃない…ということは間違ってる…よくわからんです orz
0113103
2008/05/04(日) 21:16:12db[hash] = id
db.close()
>>> import shelve
>>> db=shelve.open('tmp/id')
>>> db["e09f6a7593f8ae3994ea57e1117f67ec"]
'1'
上手くいきますた!
0114103
2008/05/04(日) 21:18:52--#{boundary}\r
content-disposition: form-data; name="id"\r
\r
#{id}\r
--#{boundary}\r
content-disposition: form-data; name="imagedata"\r
\r
#{imagedata}\r
\r
--#{boundary}--\r
EOF
あと、もう一つだけ
バイナリデータをPOSTする場合はこの書式に沿って
組み立てないと駄目なのですか?
0115デフォルトの名無しさん
2008/05/04(日) 22:49:230116デフォルトの名無しさん
2008/05/04(日) 23:22:170117デフォルトの名無しさん
2008/05/04(日) 23:27:570118デフォルトの名無しさん
2008/05/05(月) 01:02:08>>112
302はリダイレクトだよ。レスポンスのLocation:ヘッダに次に読むべきURLが示されている。
詳しくはHTTPの仕様書を読むべし。
>>114
そんな希ガス。ググったら同じ質問をしている使徒を見つけた。一番下にコード例あり。
http://www.velocityreviews.com/forums/t335298-multipartformdata-in-an-http-client.html
emailモジュールにもマルチパートのメッセージを作る機能があった希ガス。
http://docs.python.org/lib/module-email.mime.text.html
この辺を参照のこと。
0119デフォルトの名無しさん
2008/05/05(月) 13:01:330120デフォルトの名無しさん
2008/05/05(月) 13:23:290121デフォルトの名無しさん
2008/05/05(月) 14:02:41プログラム自体は初めてじゃないです。
0122デフォルトの名無しさん
2008/05/05(月) 14:08:07本買うのが好きなら自分で手にとって選ぶのも好きになれ!
0123デフォルトの名無しさん
2008/05/05(月) 14:42:190124デフォルトの名無しさん
2008/05/05(月) 14:53:30THANK YOU!!
基礎は書籍でしっかりやりたいから、自分で見てかうことにするよ
0125デフォルトの名無しさん
2008/05/05(月) 15:13:32もう一つの方は流しすぎ
まあ自分で中身見て選ぶのが一番だけどな。
0126デフォルトの名無しさん
2008/05/05(月) 15:56:100127デフォルトの名無しさん
2008/05/05(月) 15:57:580128デフォルトの名無しさん
2008/05/05(月) 16:51:360129デフォルトの名無しさん
2008/05/05(月) 17:59:55初めてのPythonくらいの内容がないと無駄遣いに終わると思う
0130デフォルトの名無しさん
2008/05/05(月) 18:08:03立ち読みして比べりゃいいじゃん。
0131デフォルトの名無しさん
2008/05/05(月) 18:18:370132デフォルトの名無しさん
2008/05/05(月) 18:39:50そんなに複雑じゃあない
本家のチュートリアルが読めるのであればなおよい
0133デフォルトの名無しさん
2008/05/05(月) 19:25:00だったらJython本しか無い。
0134デフォルトの名無しさん
2008/05/05(月) 20:24:53まず使えるようになることに焦点が合ってるし、内容に間違いが少ないから一番確実。
0135デフォルトの名無しさん
2008/05/05(月) 20:38:55それとも素直に CGIHTTPServer.CGIHTTPRequestHandler つかってテストに使った方がいいかね。
0136デフォルトの名無しさん
2008/05/05(月) 21:12:20MacPortsつかえばすぐ入るんじゃね?
0137デフォルトの名無しさん
2008/05/05(月) 21:19:44Leopard の Apache2 でハマったばかりなんで、晒しとく。
http://pc11.2ch.net/test/read.cgi/mac/1190016804/683-693
洩れは結局 i386 な Apache2 を入れ直した。
0138デフォルトの名無しさん
2008/05/05(月) 21:40:17クソでした。
理由は言うまでもない。
0139デフォルトの名無しさん
2008/05/05(月) 21:42:250140デフォルトの名無しさん
2008/05/05(月) 21:44:12図とか表とかほとんどないし。
文章ばっかり。
内容もあまりぱっとしないよねぇ...。
0141デフォルトの名無しさん
2008/05/05(月) 22:00:55何か作りながらチュートリアルかリファレンスを参照するのが効率的かもね。
0142デフォルトの名無しさん
2008/05/05(月) 22:58:22編集がちょっと丁寧な仕事すればだいぶ違ったと思う
内容的には初心者な俺には勉強になってる
でも中途半端だな、対象読者一体どこだよ、とは思った
Python全然知らないときつくないか?Javaも結構知ってないときつくないか?
0143デフォルトの名無しさん
2008/05/05(月) 23:13:50あの若さでこれだけの仕事したんだから、まあ認めてやってもいいんじゃないか?
0144デフォルトの名無しさん
2008/05/05(月) 23:20:510145デフォルトの名無しさん
2008/05/05(月) 23:22:230146デフォルトの名無しさん
2008/05/05(月) 23:24:270147デフォルトの名無しさん
2008/05/06(火) 00:09:570148デフォルトの名無しさん
2008/05/06(火) 06:21:330149デフォルトの名無しさん
2008/05/06(火) 06:40:46書いてあることがスラスラと頭の中に入ってきて、
まるでコードが踊ってるみたい。
びっくりするようなイノベーションも体験できて、
いいと思うんだけどなあ。
最新の本だから最新のことが載っていて安心だし。
0150デフォルトの名無しさん
2008/05/06(火) 06:42:360151150
2008/05/06(火) 06:48:520152デフォルトの名無しさん
2008/05/06(火) 07:50:200153デフォルトの名無しさん
2008/05/06(火) 07:56:240154デフォルトの名無しさん
2008/05/06(火) 08:36:130155デフォルトの名無しさん
2008/05/06(火) 09:37:43残念だ。
0156135
2008/05/06(火) 12:19:12./configure
vi src/Makefile
LDFLAGS= 行の "-arch i386 -arch ppc" を "-arch x86_64" で置換。
make
file src/.lib/mod_python.so してみると、
src/.libs/mod_python.so: Mach-O 64-bit bundle x86_64
と表示されるので 64ビット版にはなっているようだ。
と、ここまではいい.
sudo /etc/apache2/httpd.conf で
LoadModule python_module libexec/apache2/mod_python.so
って入れてから
httpd -t
やるとシンタックスエラーでるのよね。。。。
って、これ単なる設定の問題か。
>>137
なんて良いタイミング!参考にしてみるよ
0157デフォルトの名無しさん
2008/05/06(火) 17:26:02結局は英語にあたらないと意味が取れない事がよくある。
書籍のチュートリアルの方が日本語がいいし、読みたいところに
すぐ飛べるのでいいと思う。
他言語経験者なら、これ読めばある程度できるようになるんじゃ
ない?
0158デフォルトの名無しさん
2008/05/06(火) 17:32:25ねえなんで本買わせようとすんの?
0159デフォルトの名無しさん
2008/05/06(火) 18:02:060160デフォルトの名無しさん
2008/05/06(火) 18:34:160161デフォルトの名無しさん
2008/05/06(火) 19:06:390162デフォルトの名無しさん
2008/05/06(火) 19:25:07でもチュートリアルの日本語書籍版はチュートリアルの読み方の部分が秀逸なので
立ち読みだけでもしておくといいよ
0163デフォルトの名無しさん
2008/05/06(火) 19:31:36> Webのチュートリアルは日本語の品質がいまいちな部分がない?
>
> 結局は英語にあたらないと意味が取れない事がよくある。
ここなり翻訳者宛のメールなりで問題点を具体的に報告すれば改善されると思われ。
0164デフォルトの名無しさん
2008/05/06(火) 19:33:080165デフォルトの名無しさん
2008/05/06(火) 19:41:130166157
2008/05/06(火) 19:48:43翻訳者あてのメールは敷居が高くても、ここになら書けるなぁと思った。
(でも私は書籍版買っちゃったから今後はWeb版読みに行く事は中々
ないはず)
0167デフォルトの名無しさん
2008/05/06(火) 20:08:55俺は他言語経験者で、公式チュートリアルで入門したけど本も買って勉強したよ。
Mark Lutz の Programming Python の第1版の原著を買った(確か当時は和書が1つもなかった)。
理由は「書籍から入手できる情報」≠「オンラインで入手できる情報」だから。
あと、1冊まるまる最初から最後まできちんと勉強することで「やり終えた!」という充実感があった。
これは結構重要なポイントのような気がする。
絶対本を買うべきだとは思わない。買いたい人は買えばいいと思われ。
ちなみに上記の本には誤植が多かったので読み進めるのと並行して全部メモしておいた。
読み終えたあとにまとめて Mark Lutz に報告したらオライリーの担当者からお礼のメールが来て
オライリーの本から好きなのを1冊プレゼントすると言われた。そんなの初めての経験だったから
意味が分からなくて「お金払わなくていいの?」とか聞いちゃったりして(無論無料で送ってくれた)。
0168デフォルトの名無しさん
2008/05/06(火) 21:29:180169デフォルトの名無しさん
2008/05/06(火) 21:31:30a = b1 + b2の計算を(a,b1,b2はarray)
b1とb2をthreadで計算して,
それぞれ計算終了後に足すというプログラムを作ったんだけど,
普通にb1とb2をメインスレッドで順番に求めて足した方が早かった...
ちなみにb1とb2の計算はダミーのforループ10000回です.
0170デフォルトの名無しさん
2008/05/06(火) 21:43:49ダミーループのような、単純処理を連続的に行う場合は、threadのメリットは少ないと思われ。
有り難味があるケースは、
・入力待ちの間に、他の処理をさせておきたい
・ネットワークを表現する際に、各処理を独立のモジュールみたいに動かしたい
など。
0171デフォルトの名無しさん
2008/05/06(火) 21:45:50第3版が手元にあるけど1552ページある。このサイズをまるまる勉強したとし
たら、尊敬します。すげー。
0172デフォルトの名無しさん
2008/05/06(火) 22:39:53なる。やっぱりそんな気はしてた。。。
サンクス
0173デフォルトの名無しさん
2008/05/06(火) 22:49:58そんなにあったっけと思って書誌情報を確認したら第1版は902ページだった。
0174デフォルトの名無しさん
2008/05/06(火) 23:13:06マルチコアの場合は、計算スレッドを複数に分けてやると速くなったりする
あと計算規模が小さいとスレッドの生成・破棄のコストのせいで
高速化の効果が見えないよ
0175Free Tibet
2008/05/06(火) 23:57:15オライリー信者乙
0176デフォルトの名無しさん
2008/05/07(水) 00:20:38そんな、人類の足引っ張ることしかできない悲しい奴みたいな言い方しないで
前向きに行きましょうよ。
0177デフォルトの名無しさん
2008/05/07(水) 00:24:080178デフォルトの名無しさん
2008/05/07(水) 00:25:340179デフォルトの名無しさん
2008/05/07(水) 08:13:21JythonやIronPythonだと速くなるかも知れない。
CPythonだと複数スレッドを同時に動かせないんで速くならない
0180デフォルトの名無しさん
2008/05/07(水) 11:57:52柴田さんしか居ない状況?
他の人ってあっちの人と話したことないよね
0181デフォルトの名無しさん
2008/05/07(水) 12:01:59んなこたあない
もっと偉い人はいる
多くはないけど
0182デフォルトの名無しさん
2008/05/07(水) 12:02:11あっちの人と話したことがある=Python絡みで信頼のおける日本人
と言う事ならmatz
0183デフォルトの名無しさん
2008/05/07(水) 12:04:010184デフォルトの名無しさん
2008/05/07(水) 12:04:280185デフォルトの名無しさん
2008/05/07(水) 12:04:500186デフォルトの名無しさん
2008/05/07(水) 13:18:23気持ちいいんだもん。
0187デフォルトの名無しさん
2008/05/07(水) 13:57:560188デフォルトの名無しさん
2008/05/07(水) 14:09:25ブレース採用の話しかしてないじゃんかw
そういう意味じゃなくて、
開発者が誰で誰がどれを担当していて
今どのモジュールが開発中もしくは放棄中とか
そういった情報を知ってる日本人のことだよ。
0189デフォルトの名無しさん
2008/05/07(水) 14:15:110190デフォルトの名無しさん
2008/05/07(水) 14:29:11ある程度ならsvnのコミットのログとか
ソースコードのコメント読めば分かるんじゃないか
0191デフォルトの名無しさん
2008/05/07(水) 16:00:25英文を読んでまでのヤル気が必須になってるから
興味もった素人達にとっては敷居が高すぎる。
ただでさえわからないプログラム解説を、わからない英語で解説されるわけだから。
誰か、日本語翻訳サイトつくってよ
翻訳だけの協力でもいいよ、
俺がサーバー借りてサイト作ってもかまわない
サイト作りは出来るから。
なんなら、このスレのみんなでpygame公式サイトの日本語解説版作っていかないかな?
0192デフォルトの名無しさん
2008/05/07(水) 16:03:18話はそれからだ。
0193デフォルトの名無しさん
2008/05/07(水) 16:53:27なんとなくわかるっしょ。
0194デフォルトの名無しさん
2008/05/07(水) 17:47:19>CPythonだと複数スレッドを同時に動かせないんで速くならない
そうなの?俺の持っている本では、
執筆時点(2006?)でフォークはWindowsのPythonでサポートされていない
けど、スレッドはすべてのプラットフォームのPythonでサポートしている・・・
みたいな事かいてあるよ。なのでサポートしていると思うんだけど、違うの?
0195デフォルトの名無しさん
2008/05/07(水) 17:54:040196デフォルトの名無しさん
2008/05/07(水) 18:06:26C記述の拡張コードがマルチスレッドを考慮していないので
Python上ではマルチスレッドでも実質グリーンスレッド状態になる。
ちゃんとしたマルチスレッドな動作を期待するならJythonやIronPythonになるかな。
文脈でわかるのかもしれないけど「スレッド」といってもいろいろ観点があるから。
>>195
まちがっちゃいないけど説明不足でミスリードしちゃいそうだね。
0197デフォルトの名無しさん
2008/05/07(水) 18:13:21俺の理解では、Python のスレッドは交互に動いている。つまり、ある時点において1つのスレッドしか動かない。
だから、同時に(並列で)動くことを期待しているマルチスレッドプログラムは速くはならない。
>>170さんの言うように、あるスレッドが入力待ちをしていて、別のスレッドがGUIを司る、というような
マルチスレッドプログラムならば期待通りに、一見並列に動く。
こういう実装になっているのは、種々のモジュールにスレッドセーフであることを要求するのが困難だから。
間違ってたらゴメス
0198デフォルトの名無しさん
2008/05/07(水) 19:08:58なるほど。私が本のスレッドの説明の最初のとこだけしか読んで
なかったので、勘違いしてました。
もうちょっと読むと>197がいうとおりのような事も書いてました。
「いつでも1つだけのスレッドしか動いていない」って感じで。
現状(2006年?)ではスレッドを複数のCPUに分配できない、み
たいなことも書かれてた。
という事は計算が速くなるわけないですね。>170みたいな用途に
限る、ということか。
0199デフォルトの名無しさん
2008/05/07(水) 19:09:16自分一人の例を全員の例のように敷衍するひとのひとりですね
0200デフォルトの名無しさん
2008/05/07(水) 19:12:07ttp://www.halb-katze.jp/pygt/
0201デフォルトの名無しさん
2008/05/07(水) 19:49:30> 英文を読んでまでのヤル気が必須になってるから
> 興味もった素人達にとっては敷居が高すぎる。
敷居が高過ぎると思ってしまうのは、その人自身の勝手な固定観念なんだけどな
あと敷居が高過ぎると思って、よりつかない人は、そこまでのモチベーションしかないんだと思うよ
人に聞いているようでは、マジで駄目なんだよ
> 俺がサーバー借りてサイト作ってもかまわない
> サイト作りは出来るから。
> なんなら、このスレのみんなでpygame公式サイトの日本語解説版作っていかないかな?
個人的、希望だが、英文のpygameを学習する際に頻出する英単語帳をつくったりとか、
英文を読み解くためのテクとかを、補助ツールを扱うwikiを作ってくれ
頻出する英単語を500語に厳選して、暗記すれば、かなり読み解けると思うよ
調べるためにググる際も英文の方のほうがひっかかるし、内容が高いことが多い
Wikipediaも英語版のほうが内容が豊富だし、すごくマイナー単語も載っているし
英文には、絶対慣れたほうがいいよ
あとわざわざ翻訳すると逆に読みづらくなるし、理解も難しくなる
これは、既出?
http://www.unixuser.org/~euske/doc/pygame/
あと下の本をどういう読み方でもいいから、読んで感想を聞かせてほしいところだね
Amazon.com: Beginning Game Development with Python and Pygame: From Novice to Professional (Beginning from Novice to Professional): Will McGugan: Books
ttp://www.amazon.com/Beginning-Game-Development-Python-Pygame/dp/1590598725/
とりあえず、wikiをつくって、2chに晒してみたら?
協力してくれる人もいるかもしれないよ
0202デフォルトの名無しさん
2008/05/07(水) 19:54:46Rubyも結局1つでしか動かないらしいし。
0203デフォルトの名無しさん
2008/05/07(水) 20:08:340204デフォルトの名無しさん
2008/05/07(水) 20:11:450205デフォルトの名無しさん
2008/05/07(水) 20:17:160206デフォルトの名無しさん
2008/05/07(水) 20:18:59まぁ事後承諾だろうと拒絶されるこたまずないだろうからどーでもいいんだろうけど
ゲーム用にしか聞こえないよなw
0207デフォルトの名無しさん
2008/05/07(水) 20:22:24言語自体は各スレッドにインタプリタを1つずつ用意することで簡単に並列化できると思われ。
問題は膨大な量のライブラリモジュール、特にC等で書かれたライブラリのバインディングだ。
スレッドセーフでないライブラリは統合不可ということになる。つまり言語として制約が大きい。
大域変数でメモリ管理ってのは割とありがちだけど、これはスレッドセーフではないのでNG。
こういうものを除外していくとどんどん言語としての有用性が下がっていく。
代替品の再実装なんてやってられん。PythonにしてもRubyにしてもそんなところだと思われ。
0208デフォルトの名無しさん
2008/05/07(水) 20:24:13ちゃんと調べてはいないけど
0209207
2008/05/07(水) 20:41:33これだと並列化がモジュール内で閉じてるから何も問題ない。
俺はOpenMPで並列化された線形解法ライブラリのラッパを書いてPythonに組み込んだ。フツーに使えた。
ただし、Intel C コンパイラの場合はPython一式を -openmp オプション付きでコンパイルする必要があった。
あと、PythonでMPIプログラムを書いてマルチコア環境で実行するというアプローチもあるね。
これだと真に並列に動作するはず(マルチスレッドプログラミングと同じ要領というわけにはいかないけど)。
Python用のMPI実装にはいくつかあった希ガス。
0210デフォルトの名無しさん
2008/05/07(水) 20:53:31知らなかった
使い勝手は、どうなの?
Python製Wikiエンジン"MoinMoin"、日本語化担当者募集
http://www.python.jp/Zope/PyLog/1210080971
0211デフォルトの名無しさん
2008/05/07(水) 21:09:58比較ページを見つけたけど、いい事しか書いてないなぁ。
まぁMoinMoinのサイトだから仕方ないか。
0212デフォルトの名無しさん
2008/05/07(水) 22:00:43勉強になった。
スレッドセーフなモジュールを分類してかき集めるってプロジェクトがおこっても
良さそうとか思ったけど見つけられなかった。いろいろと難しいことがあるのかな。
0213デフォルトの名無しさん
2008/05/07(水) 22:46:07昔、自サイトでつかってたけど、まあ中の上ぐらいかしら。
設計はそれなりに綺麗で、たとえばpybloxsomとかから
エンジンだけ利用してレンダリング、とか、pyblosxomの
間で相互リンク、とかできた気がする。
ただ、見た目のきれいさとかはないけどね(デフォルトの設定では)
0214Tracの方が良いよな
2008/05/08(木) 00:07:36MoinMoinじゃなくてTracの方がいい
なんて思ってる人は、何かがずれていると自覚したほうがいい。
0215デフォルトの名無しさん
2008/05/08(木) 10:54:55Pythonのソースを表示すると
色分けで表示するってやつかな。
あと微妙に軽い。
欠点として‥登録ユーザじゃないと
ページ変更時刻がUTCで記録されてしまう。
これが地味に嫌だ
0216デフォルトの名無しさん
2008/05/08(木) 13:12:49Displayモジュールの一部しかまだ翻訳してません
ぶっちゃけ翻訳の作法とかよくわからないし・・・
pygame日本語ドキュメント
http://wiki.livedoor.jp/py_gamer/d/FrontPage
手伝ってくれる人がいたら嬉しい
ちなみにMLで聞いてみたところドキュメントもLGPLらしいね
0217デフォルトの名無しさん
2008/05/08(木) 13:41:35今使ってないからなんとも言えないけど、
Config.tz_offset ってのを書換えれば良さそうですが...
(デフォルトのタイムゾーン)
0218デフォルトの名無しさん
2008/05/08(木) 13:43:150219デフォルトの名無しさん
2008/05/08(木) 14:19:37調べたことないけど、スレッドセーフなモジュール(特にC等で書かれた拡張モジュール)は
ほとんど無いんじゃないかなあ。
例えばCでマルチスレッドのプログラム書いてみると分かるんだけど「このコードはスレッドセーフです」って
言い切るのって結構大変。呼び出しているライブラリ関数がスレッドセーフかどうか逐一確かめて回らないと
いけないから。逐次プログラムの一部分だけをマルチスレッド化できるOpenMPがいかに便利かを実感する。
その点、Java は最初からマルチスレッド対応だから楽チン。
マルチスレッドで真に並列動作するPythonを実現するための一番の近道はJythonだろうね。
0220デフォルトの名無しさん
2008/05/08(木) 15:12:06同期とかの方法と、VMのメモリモデルが規定されているだけでしょ。
結局、使うAPIとかライブラリがMT-Safeかどうか調べなきゃいけない。標準のAPIについては大体書いてあるけど。
0221デフォルトの名無しさん
2008/05/08(木) 21:21:29今すぐは無理だけど、暇があったら手伝いたい。
勝手に編集してもいいの?
0222デフォルトの名無しさん
2008/05/08(木) 23:20:40おまいらがんがれ。
wikiで自分が翻訳したページを他人に修正されると、なんか一瞬犯されたような気分
になったりするけどそんなケツの穴の小さいことは気にしないでがんがん翻訳してくれ。
0223デフォルトの名無しさん
2008/05/08(木) 23:26:05気にしてるじゃねーかw
0224デフォルトの名無しさん
2008/05/08(木) 23:56:46"from A import B, C, ..."
という文字列から A, B, C, ... の部分を抜き出したいんだけど、
正規表現のグループマッチングだけでは対処できない?
re.findall("from\s+(識別子)\s+import\s+(, (識別子))*", source) # 識別子=[\w][\w\d]*
ってやって出てきたマッチオブジェクトは
"A"
"B"
",C"
"C"
っていうふうに、カンマ込みででてきてしまう(当たり前だけど)
"A" "B" "C" だけ抜き出したい場合はやっぱりその他の文字列処理しないとだめ?
0225デフォルトの名無しさん
2008/05/09(金) 00:35:110226デフォルトの名無しさん
2008/05/09(金) 00:41:18[A-Z]
0227デフォルトの名無しさん
2008/05/09(金) 00:48:280228デフォルトの名無しさん
2008/05/09(金) 00:56:39おお、こんなべんりなものが!
import re
source = """
from A import BB
from A import CC,DD
"""
print re.findall("\s*from\s+([\w\d]+)\s+import\s+(?:,?\s*([\w\d]+))+", source)
とやってみた。これだと "from 3 import , 4, 5" にもマッチしちゃうけど、
そもそもソースのコンパイルが通る事が前提だから、この簡略化した
判別方法でもOKだという事に気づきました。
が、
上記コードを実行すると
[('A', 'DD')]
という結果になります。期待していたのは
A, BB, A, CC, DD
なんですがグループの繰り返しだけでは取得できないのでしょうか
0229デフォルトの名無しさん
2008/05/09(金) 01:37:49こういうなの↓の方が簡単でよくない?
s = "from foo import a, b , c"
f = s.split()
assert f[0] == "from" and f[2] == "import"
buf = []
for name in f[3:]:
if name == ",":
continue
if name[-1] == ",":
name = name[:-1].strip()
buf.append(name)
print buf
0230デフォルトの名無しさん
2008/05/09(金) 01:41:52\w は数字ともマッチするわけだが。
一回、正規表現について勉強しなおしたほうがいいんじゃね?
0231デフォルトの名無しさん
2008/05/09(金) 01:44:410232デフォルトの名無しさん
2008/05/09(金) 02:32:46結果: ['D']
グループの繰り返しだと、最後だけしか取り出さないみたいだね。
0233デフォルトの名無しさん
2008/05/09(金) 11:44:42>>> re.findall(r'\w', 'ab^cd_ef.gh ij$hi')
['a', 'b', 'c', 'd', '_', 'e', 'f', 'g', 'h', 'i', 'j', 'h', 'i']
>>> re.findall(r'(\w)+', 'ab^cd_ef.gh ij$hi')
['b', 'f', 'h', 'j', 'i']
>>> re.findall(r'\w\b', 'ab^cd_ef.gh ij$hi')
['b', 'f', 'h', 'j', 'i']
0234デフォルトの名無しさん
2008/05/09(金) 16:23:44【岩手県南】一関第一・水沢・花巻北・黒沢尻北高校 [お受験]
0235デフォルトの名無しさん
2008/05/09(金) 17:07:070236デフォルトの名無しさん
2008/05/09(金) 17:26:46岩手のコンビニのバイトは時給620円がデファクトスタンダードだぜ
そして最低賃金が全国最低で自殺率全国2位という素晴らしい県
スレ汚しスマソ
0237デフォルトの名無しさん
2008/05/09(金) 18:44:32いや、君ひとりかもよ?w
俺もここと恐らく俺の他には誰も見ていないであろうスレ(語学板の某マイナー言語のスレ)を
交互に訪れていたらそのスレがおすすめ2ちゃんねるに出たことあるし。
0238デフォルトの名無しさん
2008/05/09(金) 18:49:170239デフォルトの名無しさん
2008/05/09(金) 18:59:25どっちも見たこと無い
0240デフォルトの名無しさん
2008/05/09(金) 22:58:350241デフォルトの名無しさん
2008/05/09(金) 23:03:51死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
0242デフォルトの名無しさん
2008/05/10(土) 02:37:18(バイトコードではなく)テキストで定義
を参照する簡単な方法ってある?それとも
難しい?
>>> def f(x): return x
>>> deffn(f)
f(x):
return x
のような感じで
0243デフォルトの名無しさん
2008/05/10(土) 03:13:59ファイルにあるやつなら insepct.getsource で取れる
0244デフォルトの名無しさん
2008/05/10(土) 04:27:34Parallel Python というパッケージがあるのを知ったので参考までに紹介しとく。
http://www.parallelpython.com/
スレッドじゃなく複数プロセスで並列実行する仕組みらしい。
Python のみで実装されていて非常にシンプルなパッケージ構成になっている。
マルチコア環境の場合はスレッドモジュール風に使える。
クラスタ環境では各ノードで計算サーバ(ppserver.py)をしておく仕組みになっている。
応用プログラムはどちらの環境でも同じにできるっぽい。
手元の共有メモリマシンで付属サンプル(sum_primes.py)を実行したら下のようになった。
素数の和を計算するプログラムなのでプロセス間通信はほとんどないけど、
並列化のオーバヘッドはあるわけで、なかなか良好な結果だと思う。
並列度,実行時間(秒),速度向上率
1, 17.54, 1.000
2, 8.781, 1.998
4, 4.424, 3.965
8, 2.261, 7.759
0246デフォルトの名無しさん
2008/05/10(土) 14:12:25ちゃっちゃとpygameの資料和訳
作業に入れよ。
非国民か?
0247デフォルトの名無しさん
2008/05/10(土) 14:41:50国際人には和訳などいらんのだよ
0248デフォルトの名無しさん
2008/05/10(土) 14:46:02と混ぜっかえしてみる
0249デフォルトの名無しさん
2008/05/10(土) 14:48:20現地の言葉を尊重するのだよと
0251デフォルトの名無しさん
2008/05/10(土) 15:03:20お前らにpygameの未来がかかっている。
0252デフォルトの名無しさん
2008/05/10(土) 15:13:29入力された文字列に正規表現が含まれてる場合にそれをエスケープしたいんだけど、どうやったらいいのかわかりません。
誰か助けてプリーズ・・・
0253デフォルトの名無しさん
2008/05/10(土) 15:16:190254デフォルトの名無しさん
2008/05/10(土) 15:57:14扱い方が理解できりゃオブジェクト名で大体想像できるし
0255デフォルトの名無しさん
2008/05/10(土) 16:08:18試しにpygame.cdromモジュール使ってみたけど対話型シェルから
簡単にトレイの開閉とか再生できておもすれー
かなりよく抽象化されてて使いやすそう
0256デフォルトの名無しさん
2008/05/10(土) 16:10:06re.escapeは試してみた?
0257デフォルトの名無しさん
2008/05/10(土) 16:22:06簡単に訳せる文章、英文でも理解できる文章は、労力をかけて訳してもしょうがないっしょ
邦訳することが目的になっている感じだし、目的が変化している
核となるもの、肝となるもの、大事な概念だけど理解しにくいものを中心に
Pygameに興味のある者が理解しやすい仕組み・しかけをつくるほうが大事
とりあえず、目的・問題の明確化をさせたほうがいいんじゃないの?
0259デフォルトの名無しさん
2008/05/10(土) 19:07:41pygame文書の和訳という使命を帯びた事が証明されたわけだ
0260デフォルトの名無しさん
2008/05/10(土) 19:28:29まだ、何もやってないけど
0261デフォルトの名無しさん
2008/05/10(土) 19:43:09SDLの方のドキュメントを読むと理解できる事も多いよね
0262デフォルトの名無しさん
2008/05/10(土) 20:39:560263デフォルトの名無しさん
2008/05/10(土) 20:44:070264デフォルトの名無しさん
2008/05/10(土) 21:01:380265デフォルトの名無しさん
2008/05/10(土) 21:02:230266デフォルトの名無しさん
2008/05/10(土) 21:04:170267デフォルトの名無しさん
2008/05/10(土) 21:31:230268デフォルトの名無しさん
2008/05/10(土) 21:34:00○〜〜 ○〜〜 ○〜〜
○〜〜 ○〜〜 ○〜〜
0269デフォルトの名無しさん
2008/05/10(土) 21:52:460270デフォルトの名無しさん
2008/05/10(土) 21:54:070271デフォルトの名無しさん
2008/05/10(土) 21:58:250272デフォルトの名無しさん
2008/05/10(土) 22:07:29あとpygame翻訳と最初に騒いだヤツは、もうマルチするなよ
次スレからちゃんとテンプレに追加してやるから
【pygame】pythonでゲーム製作【ぱいがめ】
http://pc11.2ch.net/test/read.cgi/gamedev/1126605105/
>>270
Python + game = Pygame
こういう組み合わせの名前(造語)って代表的なのってなんだろう?
0273デフォルトの名無しさん
2008/05/10(土) 22:25:320274デフォルトの名無しさん
2008/05/10(土) 22:59:170275デフォルトの名無しさん
2008/05/10(土) 22:59:580276デフォルトの名無しさん
2008/05/10(土) 23:30:280277デフォルトの名無しさん
2008/05/10(土) 23:37:22PyPI, PyPy
0278pygame和訳wiki”管理”者
2008/05/10(土) 23:44:290279デフォルトの名無しさん
2008/05/10(土) 23:49:250280244
2008/05/10(土) 23:51:28つまり、マスタが仕事の集合を持っていて、有限個のワーカに1つずつ仕事を割り当てる。仕事を終えたワーカは
マスタから新しい仕事をもらって処理する。これを仕事の集合が空になるまで続ける。
ワーカ間で通信をする機能は提供されていないし、特定のワーカ(たとえば特定のリモートホスト上のppserver.py)に
特定の仕事を割り当てることもできないっぽい。Parallel Python が有効かどうかは実現したい並列アルゴリズムが
マスタワーカモデルに適合するかどうかに依る希ガス。
0281デフォルトの名無しさん
2008/05/11(日) 00:26:060282デフォルトの名無しさん
2008/05/11(日) 00:37:49確認のために毎日一回以上は
pygame関連の話題を出すようにしようぜ
反論がある奴は似非python使いとして認定してやろうぜ
0283デフォルトの名無しさん
2008/05/11(日) 00:40:31具体的には、どういう用途に使えそうなんですか?
0285デフォルトの名無しさん
2008/05/11(日) 01:34:00最も適しているのは並列処理の分野で embarrassingly parallel と呼ばれるカテゴリに属する種々の計算、
すなわち入力データを複数の独立した部分に分割できて、各部分について他から独立して計算が行なえる
タイプの用途に適している。
http://en.wikipedia.org/wiki/Embarrassingly_parallel
Wikipediaに例があがっている。フラクタル計算とか3DCGのレンダリング(例:レイトレーシング)とか力任せの
暗号解読とか色々ある。
並列処理って概して複雑で長時間計算し続ける必要のある応用が多い。そういう応用には C とか Fortran を
使うことがほとんどなんだけど、きちんと動くようになるまでの開発時間が長くてデバッグがたいへんだったりする。
そういう並列プログラムの試作(プロトタイピング)に Python が使えたらいいなーと個人的には思っている。
0286デフォルトの名無しさん
2008/05/11(日) 08:49:01おまえにいいこと教えてあげよう。
市場の中の肉屋さんいって、
「ホースください」頼んでみ。
解体処理した豚の膣の部分がもらえる。
ほんとは金かけて廃棄しないといけない部分だから無料でもらえる。
食い物にはならないから。
この豚の膣が極上。
まあ考えたら膣だからな。
人間のじゃないだけで本物の膣だから、気持ちよくて当たり前。
0287252
2008/05/11(日) 09:30:17\山\田\太\郎て
0288デフォルトの名無しさん
2008/05/11(日) 09:43:58PythonでCPU8個使って並列計算するよりCで書いたプログラムの方が速そうだったり。。。
0289デフォルトの名無しさん
2008/05/11(日) 09:57:09何言ってんだ?
0290デフォルトの名無しさん
2008/05/11(日) 10:28:52あ?ヤンのかコラ
0291デフォルトの名無しさん
2008/05/11(日) 11:21:190292デフォルトの名無しさん
2008/05/11(日) 11:21:53ついでに言うと豚の内臓と人間の内臓はかなり近いらしいね
豚の心臓を人間に移植した話もあるからな
0293デフォルトの名無しさん
2008/05/11(日) 12:13:17羊の膣も極上という話だけどどうなのだろうね?
0294デフォルトの名無しさん
2008/05/11(日) 12:14:24チャッチャとpygame資料の和訳作業に務めろ糞野郎共
0295デフォルトの名無しさん
2008/05/11(日) 14:39:25自分も並列化するときのプロトタイプとしてPythonの並列環境を使ってみたいと
考えているんだけれど、今のところプロトタイプとしての感触はどう?
データ分割の楽な問題ってCとかFORTRANでもOpenMPを注意深く使うだけでも早くなる事が
多いし、MPIでも慣れれば苦労せずに書けるけれど、そうでない、スレーブ間での通信が必要
とかうまく分割できないとかそういう問題はMPIでやろうとするとデバッグが(;゚д゚)
なことになりがちで、そういう用途にPythonのプロトタイプが役に立つなら素晴らしいと思う
実はC並列版とそれほど速度とメモリ使用量が変わらないとかなら最高
C並列版より速ければ神
0296デフォルトの名無しさん
2008/05/11(日) 16:53:12ユーザ側で決められそうな希ガス。問題はワーカ間のプロセス間通信。これが一番面倒なところなんで
自前で実装となると Parallel Python を使ううまみがほとんどない・・・。
やっぱ MPI の Python バインディングあたりが一番現実的な解かなー。でもなんか気が重いんだなー。
もっと Python らしく lightweight なソリューションがないかなー。
>>288
Python の並列プログラムより C の逐次プログラムの方が速そうってことだよね。
そういうことは十分(多分頻繁に)あると思われ。
>>295
残念ながらまだ並列プログラムのプロトタイプ用途には使えてなくて感触を得るところまでいってない。
理由は単純で、Python で手軽に並列プログラミングを実現できる道具を見つけられていないから。
>>209に書いたようにいろいろ試してるんだけどなかなか・・・。
ただ、個人的には Python を並列化のプロトタイピングに使うのは大いに有望だと思っている。
プロトタイピングの場合、欲しいのは並列度やデータ量を上げたときの実行時間の変化であって、
実行速度が多少遅くて実験に時間がかかるとしても知りたいことは分かるはずだから。
プロセス間通信にソケットを使うとすると、データ量が大きくなれば Python でも C 等と同じぐらいの
速度が出る(ハズ)。演算量が多い部分に numpy 等の C/Fortran で書かれた数値カーネルを使うことに
すれば、プロトタイピング用途には十分な速度とメモリ使用量が得られるのではと思う。
0297デフォルトの名無しさん
2008/05/12(月) 01:33:26Linux で wxPython をコンパイルしようとして、
ttp://ymasuda.jp/python/wxpython/installation.html
ここを参考に進めて行ったんだけど、最後の
python setup.py install
を実行したところでむちゃくちゃエラー吐いて止まるんだけど・・・
一部だけエラーを載せるけど、同じファイルのエラーが延々と120行近くでるんだ。
contrib/glcanvas/gtk/glcanvas_wrap.cpp:2739: error: 'wxGLCanvas' was not declared in this scope
contrib/glcanvas/gtk/glcanvas_wrap.cpp:2739: error: 'arg1' was not declared in this scope
contrib/glcanvas/gtk/glcanvas_wrap.cpp:2739: error: expected primary-expression が ')' トークン前にあります
contrib/glcanvas/gtk/glcanvas_wrap.cpp:2739: error: 数値定数の前に expected ';'
「glcanvas_wrap.cpp wxPython」で検索したら英語で色々皆同じ問題にあってるみたいだけど、解決方法を探せなくて(読めなくて)困ってます・・・教えて!エロイ人!
0298デフォルトの名無しさん
2008/05/12(月) 02:10:100299デフォルトの名無しさん
2008/05/12(月) 08:47:31どのディストリ使ってるのか不明なんだけど、
バイナリパッケージでは存在してないの?
0300デフォルトの名無しさん
2008/05/12(月) 17:11:39'hello'と等価なバイト列は'\x68\x65\x6c\x6c\x6f'です。
で、u'hello'と等価なバイト列は、例えば'\xff\xfe\x68\x00\x65\x00\x6c\x00\x6c\x00\x6f\x00'
と思うのですが、pythonで両者の直接変換はできるのでしょうか?という質問です。
u'hello'.encode('utf-16')がほぼ等価ですが、これはあくまでエンコーディングなので、
直接バイト列を得てるわけじゃないのかな、と思った次第です。
0301デフォルトの名無しさん
2008/05/12(月) 17:19:12中身に触る方法はないほうがいいんじゃないかな
0302デフォルトの名無しさん
2008/05/12(月) 17:23:200303デフォルトの名無しさん
2008/05/12(月) 20:12:59文字列はエンコーディングを決めなければバイト列では表現できないよ。
> 'hello'と等価なバイト列は'\x68\x65\x6c\x6c\x6f'です。
ここで実は300さんはエンコーディングとして ASCII を仮定している(ASCII をサブセットとして含む
別のエンコーディングかも知れない)。例えば、もし EBCDIC を仮定していたら別のバイト列になる。
> pythonで両者の直接変換はできるのでしょうか?
エンコーディングが分かっていればご存知の通り unicode() と .encode() で可能。
0304デフォルトの名無しさん
2008/05/12(月) 20:39:430305297
2008/05/13(火) 01:30:38>>298-299
大変申し訳ない。
上記URLの、下記の文をすっとばしてました・・・。
cd $WXDIR (ソースツリーに移動する)
mkdir bld (ビルドディレクトリ bld を作成)
cd bld (ビルドディレクトリに移動)
../configure (configure を実行)
一番最初からやり直したらエラーを吐かなくなったよ。
でも、色々可能性を考えて下さってありがとうございました。
お騒がせしてしまい申し訳ございませんでした。
0306デフォルトの名無しさん
2008/05/13(火) 08:29:09うわ、ビルド方法が面倒くさいね
0307デフォルトの名無しさん
2008/05/13(火) 10:12:52ないほうがいいってことはないでしょ
初心者が文字列操作で使うべき方法として
提示されるかどうかはともかく
0308デフォルトの名無しさん
2008/05/13(火) 11:09:48"u'\\u3042\\u3044\\u3046\\u3048\\u304a'"
>>> unicode('あいうえお').encode('unicode_escape')
'\\u3042\\u3044\\u3046\\u3048\\u304a'
>>> unicode('あいうえお').encode('raw_unicode_escape')
'\\u3042\\u3044\\u3046\\u3048\\u304a'
>>> unicode('あいうえお').encode('unicode_internal')
'B0D0F0H0J0'
好きなのを選べ
0309300
2008/05/13(火) 12:46:51>>307-308
皆様ご助言どうもありがとうございました。
>>302 >>308さんご提示の、コードポイント取得方法が私の期待に非常に近いものでした。
ですがそもそも、>>303 さんご指摘の通り、私には「バイト列はエンコーディングによって
はじめて定義されるもの」という認識が甘かったように思います。
私が例示したu'hello'のバイト列は、既に何かのエンコーディングが施されたもののはずだから、
そのバイト列と.encode(...)は全く等価ですね。
御蔭様で理解が深まりました。ご教示どうもありがとうございました。
0310デフォルトの名無しさん
2008/05/13(火) 15:58:290311デフォルトの名無しさん
2008/05/13(火) 16:13:000312デフォルトの名無しさん
2008/05/13(火) 18:42:46使ってみたいがインストールできないorz
0313デフォルトの名無しさん
2008/05/13(火) 20:05:48class myThread(threading.Thread):
alive = True
def run(self):
while self.alive:
""" なにか """
def kill(self):
self.alive = False
こういうのじゃなくて、イメージとしては
threading as th
myth = th.Thread()
myth.start()
print "あへあへ"
myth.kill()
みたいな。
0314デフォルトの名無しさん
2008/05/13(火) 20:27:04他のOSネイティブなスレッドでも、そういう手段は用意されていないか
用意されていても推奨されていない。
0315デフォルトの名無しさん
2008/05/13(火) 20:33:360316デフォルトの名無しさん
2008/05/14(水) 00:04:03> Kamaelia: The future of Python Frameworks looks promising.
0317デフォルトの名無しさん
2008/05/14(水) 06:37:550318デフォルトの名無しさん
2008/05/14(水) 17:22:08空のtxtファイルが出来る言ってるから、日本語通らない?
とかスレ違い気味だけど聞いてみる
0319デフォルトの名無しさん
2008/05/14(水) 19:29:110320デフォルトの名無しさん
2008/05/16(金) 19:23:25XAMPPみたいにアーカイブを展開するだけで
ApacheとPythonのApacheモジュールが使えるようになるWindows向けソフトとかありますか?
お手軽な感じで始めたいです
0321デフォルトの名無しさん
2008/05/16(金) 19:30:13C:\Python25\python.exe -m CGIHTTPServer
Pythonだけでできるよ。apacheなんてイラネー
0322デフォルトの名無しさん
2008/05/16(金) 19:55:26どうもありがとうございます
ブラウザで表示確認できるんでしょうか
よくわからないので調べてきます
ほんと無知ですみません
0323デフォルトの名無しさん
2008/05/16(金) 22:07:060324デフォルトの名無しさん
2008/05/16(金) 22:13:14http://svn.python.org/view/python/trunk/Lib/CGIHTTPServer.py
>[Bug #737202; fix from Titus Brown] Make CGIHTTPServer work for scripts in sub-directories
0325デフォルトの名無しさん
2008/05/17(土) 00:01:14終了のしかた教えて
0326デフォルトの名無しさん
2008/05/17(土) 01:59:21どこまで守ってる?
static PyObject *
Hoge(........)
{
•関数の戻り値型の直後に改行を入れる
•関数ブロックの始まりの括弧の直前で改行する
if (a + b + c) {
}
•関数以外のブロックは、始まりの括弧を行末に置く
•括弧の中に余分な空白を入れない
•二項演算子の両側には空白を置く
X return ( expr );
O return expr;
•冗長な括弧は使わない
0327デフォルトの名無しさん
2008/05/17(土) 06:14:03Ctrl + D とかじゃないの
0328デフォルトの名無しさん
2008/05/17(土) 10:01:43そんな規約があるとは知らなかった。
0329デフォルトの名無しさん
2008/05/17(土) 10:10:11ttp://www.python.org/doc/ の下のどこかにあります?
0330デフォルトの名無しさん
2008/05/17(土) 10:59:220331デフォルトの名無しさん
2008/05/17(土) 11:14:13でも最初の表示どおりhelp→help()→quit→quit()と入力していってほしいかも。
0332デフォルトの名無しさん
2008/05/17(土) 11:49:46PEP 7 -- Style Guide for C Code
http://www.python.org/dev/peps/pep-0007/
0333デフォルトの名無しさん
2008/05/17(土) 14:47:26ありがとうございます
Windows で python -m CGIHTTPServer を実行しています
Ctrl + C
Ctrl + D
Ctrl + Z
どれもダメだったのでタスクマネージャーから殺したら終了出来ました
あとでわかったのですが、
Ctrl + C
を押したあとにブラウザの更新ボタンで再度リクエスト投げると
Keyboard Interrupt
が出て終了するようです
Windows だから select で監視出来ていないということでしょうか?
0334デフォルトの名無しさん
2008/05/17(土) 15:22:22try節で囲むかtelnet localhost 80とかやってから落とせばいい
0335デフォルトの名無しさん
2008/05/17(土) 15:44:26普通のCGIがやりたいの?
ApacheでCGIがやりたいの?
320を読む限りではGoogle App Engineとかそういうのが近いのかな?
GAEはお勧めしないけど。
0336デフォルトの名無しさん
2008/05/17(土) 19:40:24320ですが320は322しか書き込みしていません・・・
私とはしたいことが異なるのではないかと思います
あと、質問してもよろしいでしょうか
じつはまだサーバ上でファイルを実行できていないんですが、そのことについて・・・
CGIHTTPServer.pyを起動させて
htdocsフォルダを作って
まだpythonのスクリプトが書けないので既存のスクリプトファイル
(http://python.rdy.jp/wiki.cgi?page=PythonAvailableServersのcheck.cgiとexplore.cgi)を
http://localhost:8000/htdocs/
に入れて表示させてみたのですが
ieだとそのまま中身のテキストが表示され
firefoxだとcgiファイルのダウンロードが始まってしまいます
拡張子をpyに変えてみたらie、firefoxともそのまま中身のテキストが表示されます
cgi-binフォルダを作って
同様に既存のスクリプトファイルを
http://localhost:8000/cgi-bin/
に入れて表示させてみたら
拡張子がcgiだと
ie、firefoxともに
> Error response
> Error code 403.
> Message: CGI script is not executable ('/cgi-bin/check.cgi').
> Error code explanation: 403 = Request forbidden -- authorization will not help.
と表示されます
拡張子をpyに変えてみたら
ie、firefoxともに真っ白な画面が表示されます
うまく実行させるにはどうすればいいのでしょうか・・・
0337デフォルトの名無しさん
2008/05/17(土) 20:05:18.pyに変えたらコマンドプロンプトにエラーメッセージが表示されてるからよく嫁
とにかくエラーメッセージはきちんと嫁
0338デフォルトの名無しさん
2008/05/17(土) 20:05:43* htdocsにはHTMLおよび画像ファイル
* cgi-binにはCGIスクリプト
と分けて設置しなければいけない。
CGIHTTPServerでも似たようなものだと思う
> Message: CGI script is not executable ('/cgi-bin/check.cgi').
とりわけ使ってるのがLinuxなら
CGIスクリプトの一行目にshebang入れてchmod +xしなきゃだめ
WindowsだとWebサーバにもよるけどshebangは必要かも
0339デフォルトの名無しさん
2008/05/17(土) 20:08:17explore.cgiはPythonで書かれてるから動くんじゃないかな
0340デフォルトの名無しさん
2008/05/17(土) 20:13:03htdocs フォルダが My Documents みたいにスペースの入ったフォルダの配下にない?
0341デフォルトの名無しさん
2008/05/17(土) 20:16:50336です
親切にどうもありがとうございますm(_ _)m
ただ話の内容が難しくて理解が追いついていません・・・
windows上で使っています
いつかはレンタルサーバを借りて動かしたいと思っているのですが
windowsとlinuxでスクリプトの書き方(?)が異なるのでしょうか・・・
コマンドプロンプトにメッセージが表示されるんですね
読んでみます
テスト用に選んだスクリプトも選択ミスだったんですね
パスにスペースは入っていません
ピリオドと数字は入っています
エラーメッセージをよく読みます
0342デフォルトの名無しさん
2008/05/17(土) 20:35:421. c:\cgi-bin\ に env.py を置く
import os
print 'Content-type: text/plain\n\n'
for key in os.environ:
print '%s: %s' % (key, os.environ[key])
2. cd c:\ して python -m CGIHTTPServer する
3. ブラウザで localhost:8000/cgi-bin/env.py にアクセス
環境変数がずらっと表示されたら成功
Windowsの場合、shebang も chmod +x も必要ないが
拡張子は .py にしないと動かないみたい
あと My Documents みたいなフォルダの配下だとこけるのは
>>340が指摘してくれている通り
0343デフォルトの名無しさん
2008/05/17(土) 21:01:56336です
env.pyはうまく動きました!と思います
45行ほどの文字列が表示されました
explore.pyもうまく表示されました
表データが表示されました
cgi-binに拡張子をpyにして入れるんですね
初歩的なことに付き合っていただき
みなさん
ありがとうございますm(_ _)m
0344デフォルトの名無しさん
2008/05/17(土) 21:10:100345デフォルトの名無しさん
2008/05/17(土) 21:34:070346デフォルトの名無しさん
2008/05/17(土) 21:44:280347デフォルトの名無しさん
2008/05/17(土) 21:50:300348デフォルトの名無しさん
2008/05/17(土) 22:13:52実行可能ならbatなんかでもCGIとして動作するみたいだから。
0349デフォルトの名無しさん
2008/05/19(月) 16:39:43さて、早速なのですがPythonでテキストファイルへの書き込みは出来るのですが追加の書き込みの方法がわかりません。
一度内容を読み込んで結合してから書き込んでもよいのですがあまりスマートとは思えませんでしたのでここに投稿した次第です。
方法をご教授いただければ幸いです。
0350デフォルトの名無しさん
2008/05/19(月) 16:42:060351デフォルトの名無しさん
2008/05/19(月) 16:48:570352デフォルトの名無しさん
2008/05/19(月) 20:59:01# -*- coding: utf-8 -*-
import os
import cgi
import cgitb; cgitb.enable()
print "Content-Type: text/plain\n\n"
form = cgi.FieldStorage()
if not (form.has_key("name") and form.has_key("addr")):
print "<H1>Error</H1>"
print "Please fill in the name and addr fields."
return
print "<p>name:", form["name"].value
print "<p>addr:", form["addr"].value
以下は動作するのでバーミッションの設定ではないと思います。
# -*- coding: utf-8 -*-
import os
import cgi
import cgitb; cgitb.enable()
print "Content-Type: text/plain\n\n"
print "hoge"
解決策など示していただければ幸いです。
0353デフォルトの名無しさん
2008/05/19(月) 21:06:400354デフォルトの名無しさん
2008/05/19(月) 21:18:28http://codepad.org/r6g67n1j
http://codepad.org/vUcQXO9g
0355デフォルトの名無しさん
2008/05/19(月) 21:30:370356デフォルトの名無しさん
2008/05/19(月) 21:33:21が言っているように、関数内じゃないのに
returnがあるのがおかしいんじゃないの
# -*- coding: utf-8 -*-
import os
import cgi
import cgitb; cgitb.enable()
def main():
print "Content-Type: text/html; charset=UTF-8\n\n"
form = cgi.FieldStorage()
if not (form.has_key("name") and form.has_key("addr")):
print "<H1>Error</H1>"
print "Please fill in the name and addr fields."
return
print "<p>name:", form["name"].value
print "<p>addr:", form["addr"].value
if __name__ == '__main__':
main()
0357デフォルトの名無しさん
2008/05/19(月) 21:34:440358デフォルトの名無しさん
2008/05/19(月) 21:38:050359デフォルトの名無しさん
2008/05/20(火) 06:24:410360デフォルトの名無しさん
2008/05/20(火) 13:59:12関数の引数って参照渡しなの?
Traclight/plugins/themaengine/api.py
あとTracってAPacheがないと動かせないですか?
PythonをUSBメモリに入れて持ち運びたい(できればtracも持ち運びたひ…)
0361デフォルトの名無しさん
2008/05/20(火) 14:50:11>関数の引数って参照渡しなの?
そうだよ。入門書嫁。
0362デフォルトの名無しさん
2008/05/20(火) 14:54:540363デフォルトの名無しさん
2008/05/20(火) 14:55:42いっちゃうと代入も何もかもぜんぶ参照渡しです。
だから逆に参照渡しという概念がでてこない。
TracはFastCGIやWSGIでも動作するからApacheじゃなくてもいい。
lightyなんかいいとおもう。
あとWindows版Pythonならパスが変わっても動作するはず。
0364デフォルトの名無しさん
2008/05/20(火) 15:08:52まともな入門書にはたいてい書いてあるよ
0365デフォルトの名無しさん
2008/05/20(火) 15:09:35>>> def foo(x): x = 2
...
>>> a = 1
>>> foo(a)
>>> a
1
いわゆる参照渡しだと、aの値が書き換えられるんじゃないの
0366デフォルトの名無しさん
2008/05/20(火) 15:10:56def foo(&x): x = 2
これでOK
まともな入門書にはかいてあるよ
0367デフォルトの名無しさん
2008/05/20(火) 15:15:57つまり、「何もかもぜんぶ参照渡し」というわけでなく、
特に指定しなければ値渡し、ということじゃない?
0368デフォルトの名無しさん
2008/05/20(火) 15:16:42ある意味正しいと思う
0369デフォルトの名無しさん
2008/05/20(火) 15:21:18SyntaxError: invalid syntax
ついに嘘書く奴が出てきたよ
0370デフォルトの名無しさん
2008/05/20(火) 15:30:59def foo(x):
↑ここのxには確かにa = 1と同一の1が渡る。
x = 2
↑でもこれはその1を2に置き換えるのではなく
xの参照先を2に変更することになるのでaは1のまま。
0371デフォルトの名無しさん
2008/05/20(火) 15:31:48Pythonで数字はイデア界にあるから
書き換え不能なんですよ。
0372デフォルトの名無しさん
2008/05/20(火) 15:33:56嘘を嘘と見抜く練習をしような(w
0373デフォルトの名無しさん
2008/05/20(火) 15:49:35ところで
>>> lst = [0]
>>> lst[0] = lst
>>> lst
[[..]]
>>> def p(x): print x
>>> [p(x) for x in lst]
[[..]]
[None]
なんぞこれ
0374デフォルトの名無しさん
2008/05/20(火) 15:55:140375デフォルトの名無しさん
2008/05/20(火) 18:42:18えーと、本当に参照渡しの意味わかってんの?
fooの仮引数がxと宣言されているが、aを渡したときにそのxがaのエイリアスとして
機能する(つまりxがaと同等である)ようなものが参照渡しなんだが。
FORTRANはデフォで参照渡しだし、C++やC#は参照渡しもサポートする。
Pythonの場合、a, xは同一のオブジェクトを指している*別変数*だから、
xへの代入はaに影響を与えない。
そういうのは参照渡しとはいえないでしょ。
0376デフォルトの名無しさん
2008/05/20(火) 19:00:23引数そのものはimmutable(不変)なので、関数内で書き換え不可。
この場合の引数とは、変数のアドレスのこと。
変数が指しているデータを書き換えたい場合は、例えば以下のように出来る。
def bar(x):x[0] = 2
a = [1,2,3]
bar(a)
print a # --> [2, 2, 3]
0377デフォルトの名無しさん
2008/05/20(火) 19:14:55変数の特性ではない
0378デフォルトの名無しさん
2008/05/20(火) 20:15:060379デフォルトの名無しさん
2008/05/20(火) 20:36:17ってことが書いてある。
買って読んでみなよ。
0380デフォルトの名無しさん
2008/05/20(火) 21:01:56> 変数はオブジェクトへのリファレンス貼る
俺の頭が弱いのか? 何が言いたいのかわからん
0381デフォルトの名無しさん
2008/05/20(火) 21:05:15代入はポインタのコピー
関数呼び出しは全部値渡し
Javaも値型(基本データ型)以外は一緒
0382デフォルトの名無しさん
2008/05/20(火) 21:12:01> 関数の引数って参照渡しなの?
違います。
http://www.python.org/doc/faq/programming/#how-do-i-write-a-function-with-output-parameters-call-by-reference
> Remember that arguments are passed by assignment in Python. Since assignment just creates references to objects,
> there's no alias between an argument name in the caller and callee, and so no call-by-reference per se.
(引数は Python でいうところの代入によって渡されることを思い出して下さい。代入は単にオブジェクトへの参照を作るものなので、
呼び出す側の引数名と呼び出された側の引数名のあいだにはエイリアスはなく、「参照による呼び出し」も本質的に存在しません。)
0383デフォルトの名無しさん
2008/05/20(火) 21:44:090384デフォルトの名無しさん
2008/05/20(火) 21:47:37リストだろうが何だろうが、何も変わらない。
>>> def f(x): x = [1,2,3]
...
>>> a = []
>>> f(a)
>>> a
[]
>>>
0385デフォルトの名無しさん
2008/05/20(火) 21:58:26>>> def a(x): x.append(3)
>>> a(m)
>>> a(m)
>>> m
[3, 3]
これは何が起きているんだ?
俺の頭が弱いのか? 何が言いたいのかわからん
0386デフォルトの名無しさん
2008/05/20(火) 21:59:18リストだろうが何だろうが、何も変わらない。
>>> def f(&x): x = [1,2,3]
...
>>> a = []
>>> f(a)
>>> a
[1,2,3]
>>>
0387デフォルトの名無しさん
2008/05/20(火) 22:04:59http://python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1
で何を選べばいいのかわかりません。
0388デフォルトの名無しさん
2008/05/20(火) 22:06:340389デフォルトの名無しさん
2008/05/20(火) 22:09:35頭が弱いんじゃなくて、基本が理解できてない。
一体どんな教材でPython覚えたんだよ?
0390デフォルトの名無しさん
2008/05/20(火) 22:14:55>>384の例は、代入によって「変数自体」を変更している
変数の変更とは、変数が持っていたオブジェクトへの参照を破棄し、
別のオブジェクトを指すようにする、ということだ
>>385の例は、破壊的メソッドによって、変数によって指されている
「オブジェクトの中身」を変更している。変数自体は何も書き換わっていない
0391デフォルトの名無しさん
2008/05/20(火) 22:25:40初めてのC#を読みました。
作ったソフトウェアは2つほどでオブジェクト指向はある程度理解しているつもりです。
0392デフォルトの名無しさん
2008/05/20(火) 22:26:09名著だ
http://www.amazon.co.jp/dp/4839922829/
0393デフォルトの名無しさん
2008/05/20(火) 22:26:37ありがとうございます。
0394デフォルトの名無しさん
2008/05/20(火) 22:28:18表紙でtypoが名著とはこれ如何に
0395デフォルトの名無しさん
2008/05/20(火) 22:31:190396デフォルトの名無しさん
2008/05/20(火) 22:34:29家宝にさせていただきます
0397デフォルトの名無しさん
2008/05/20(火) 22:45:04プログラミング経験有りなら書籍ではないけれど
本家のチュートリアルの邦訳をまず読んでみれば
http://www.python.jp/doc/release/tut/
0398デフォルトの名無しさん
2008/05/20(火) 22:45:52はxのポインタの値が書き換わる。
x.append(3)
はポインタの先の値が書き換わる。
0399デフォルトの名無しさん
2008/05/20(火) 22:51:390400デフォルトの名無しさん
2008/05/20(火) 22:54:11>>376もポインタが指しているオブジェクトの中身を書き換えているだけだ
xとaは別の変数だが同じオブジェクト(リスト)を指しているから、
x経由で変更したオブジェクトをaから参照しても
同じように見えるのは当たり前だ
0401デフォルトの名無しさん
2008/05/20(火) 23:02:28>>384の場合はx=[1,2,3]で新たにリストのオブジェクトを生成して、
変数xはそれを指すから、結果的に変数aの指すオブジェクトの中身は
書き換えられなかったってことでいいのかな?
0402デフォルトの名無しさん
2008/05/20(火) 23:04:21うん
0403デフォルトの名無しさん
2008/05/20(火) 23:15:120404デフォルトの名無しさん
2008/05/20(火) 23:29:500405デフォルトの名無しさん
2008/05/21(水) 00:02:10Amazonって、ランキングが出るじゃん。見たんだけどさ。
この時期でこのランキングはないわ。
名著なのに売れないなんておかしいな。
芸術作品ですか。
0406デフォルトの名無しさん
2008/05/21(水) 00:12:370407デフォルトの名無しさん
2008/05/21(水) 00:20:13まるで逆宣伝だし。
0408デフォルトの名無しさん
2008/05/21(水) 00:27:140409デフォルトの名無しさん
2008/05/21(水) 00:28:390410デフォルトの名無しさん
2008/05/21(水) 00:39:270411デフォルトの名無しさん
2008/05/21(水) 01:00:29CPythonからPOIを使えるようにはできませんか?
0412デフォルトの名無しさん
2008/05/21(水) 01:08:000413デフォルトの名無しさん
2008/05/21(水) 01:10:440414デフォルトの名無しさん
2008/05/21(水) 02:00:14どっちもいまいちなのでPOIを使いたいんですけど
Javaは使いたくないんです
0415デフォルトの名無しさん
2008/05/21(水) 02:30:370416デフォルトの名無しさん
2008/05/21(水) 02:33:37ならばCPythonでJava classファイルを使えるようにする仕掛けをこさえるしかなかろ
それって結局JavaVMの特殊な独自実装になるような気もするが。
となると「Javaを使わない」という目的からは厳密には外れるな。
あるいはPure PythonでPOIを書き直すとか
0417デフォルトの名無しさん
2008/05/21(水) 02:50:31そうします
0418デフォルトの名無しさん
2008/05/21(水) 03:46:210419デフォルトの名無しさん
2008/05/21(水) 04:20:22Pythonの信者の人が反社会的っていうのはほんとなんですね
0420デフォルトの名無しさん
2008/05/21(水) 08:00:560421デフォルトの名無しさん
2008/05/21(水) 09:01:36これはむしろ愛と呼べる代物だ。
温泉ではアッー!な光景が繰り広げられるに違いない。
0422デフォルトの名無しさん
2008/05/21(水) 11:30:56結論から言うと、今回のRuby Kaigiのテーマは"愛"。
:
Ruby愛以外に何か付け加えるものがあるとするならば、あとは、覚悟。
0423デフォルトの名無しさん
2008/05/21(水) 11:44:020424デフォルトの名無しさん
2008/05/21(水) 13:12:480425デフォルトの名無しさん
2008/05/21(水) 13:14:460426デフォルトの名無しさん
2008/05/21(水) 14:17:310427デフォルトの名無しさん
2008/05/21(水) 14:32:01Rubycon
不良品乱発
0428デフォルトの名無しさん
2008/05/22(木) 03:50:04「(スクリプトの)逆アセンブルがすげー簡単ぽいけど、どうなのよ」みたいなこと言われたんだ。
そういうわけで、会社を納得させるべく、「思いつきでちょっと解析したぐらいでは分からない程度」
に Python スクリプトの難読化について考えてみたい。
0429デフォルトの名無しさん
2008/05/22(木) 04:01:50A. python スクリプトファイルが丸見えの場合
.py ソースは問題外。
.pyc は dis モジュールに食わせてダンプして終了。しかもドキュメンテーション文字列付き。
.pyo も dis モジュールに食わせて終了。
B. スクリプトファイルが見えない場合
Python##.dll を改造してアプリケーション付属のDLLと差し替えて、
インポートしたモジュールのコードオブジェクトをダンプするなり別ファイルに書き出すなりする
C.コンパイル済みモジュールファイルが丸見えだが、dis に食わせても解析失敗する場合
カスタム Python を使用している事を疑う.
アプリケーション付属の Python##.dll を参照するようにして python.exe を実行し、
自作のスクリプトを pyc に変換させ、純正の pyc と比べてみる。
0430デフォルトの名無しさん
2008/05/22(木) 04:17:33•独自のインポータを sys.path_hooks に組み込んで自作アーカイブからスクリプトファイルを読み出すようにする
•独自アーカイブに含まれているスクリプトは、カスタム Python を使って読み書きするための特殊 pyc
•カスタムといっても、ようは pyc の読み書き部分だけつじつまを合わせれば良い
•従って、改造するのは marshal.c あたり?
0431デフォルトの名無しさん
2008/05/22(木) 05:37:37「解析されて何か問題でも?」と答えておけ。
本当に解析されて困るプログラムなんて、この世にそれほど存在しないだろ。
0432デフォルトの名無しさん
2008/05/22(木) 11:39:000433デフォルトの名無しさん
2008/05/22(木) 11:49:46難読化とかもあるけど、最終的には>>431のような気がする
0434デフォルトの名無しさん
2008/05/22(木) 12:15:57変化を嫌いたがるダメ官吏みたいな上司を説得するのが一番大変なんだよね〜。
0435デフォルトの名無しさん
2008/05/22(木) 12:16:05簡単な難読化ぐらいならやる価値あると思う
0436デフォルトの名無しさん
2008/05/22(木) 13:34:43死ねばいいのに
0437デフォルトの名無しさん
2008/05/22(木) 16:17:07それ自体に意味があるかどうかはどうでもいいのだ。
0438デフォルトの名無しさん
2008/05/22(木) 16:19:55妙に本気になって対処してしまうことがあるよね。自戒も含めてw
0439デフォルトの名無しさん
2008/05/22(木) 16:46:15他のプログラムに仕込むとか
0440デフォルトの名無しさん
2008/05/22(木) 18:07:12バレないように手を抜く奴は訓練されたプログラマだ!
こうですか? わかりません (>_<)
0441デフォルトの名無しさん
2008/05/22(木) 19:29:23そういうときはその上司の上司を説得するべき
0442デフォルトの名無しさん
2008/05/22(木) 21:44:24とか言っとけば大丈夫
0443デフォルトの名無しさん
2008/05/22(木) 22:47:100444デフォルトの名無しさん
2008/05/23(金) 01:11:010x00とXORしないとダメだよ!!
0445デフォルトの名無しさん
2008/05/23(金) 02:15:01もう少し楽しめるのをおながいします
0446デフォルトの名無しさん
2008/05/23(金) 02:44:30放っとけよ
0447デフォルトの名無しさん
2008/05/23(金) 08:11:470448デフォルトの名無しさん
2008/05/23(金) 08:45:460449デフォルトの名無しさん
2008/05/23(金) 09:17:040450デフォルトの名無しさん
2008/05/23(金) 10:14:110451デフォルトの名無しさん
2008/05/23(金) 10:33:080452デフォルトの名無しさん
2008/05/23(金) 10:33:590453デフォルトの名無しさん
2008/05/23(金) 10:34:36お花畑にお住まいの妖精さんですか?
現実は厳しいですよ。
0454デフォルトの名無しさん
2008/05/23(金) 10:35:080455360
2008/05/23(金) 10:59:40>>> def call(): info=[]; f(info); return info
...
>>> def f(x): x=[1,2,3] # list渡したい時は.append使え矢
...
>>> call()
[]
>>>
>>> def call(): info={}; f(info); return info
...
>>> def f(x): x[0]=1; x[1]=2; x[2]=3
...
>>> call()
{0: 1, 1: 2, 2: 3}
渡すものが、辞書かリストか、で字面的に違うということですね
事故解決しました。(&なんて使わねー)(*はリスト**は辞書ですが無くても動くのです無害です)
0456デフォルトの名無しさん
2008/05/23(金) 11:07:57ぜんぜん解決してない ...
>>> def f(x): x=[1,2,3]
に文法的に対応する辞書の記述は
>>> def f(x): x = {0:1, 1:2, 2:3}
だよ(これだと結果は callで代入された info → {} のまま)。
リストのappendが字面的に気に喰わないのなら、
x+=[1];x+=[2];x+=[3];
と書いてもいいかもね(ちょっとoverheadありそうな気もするけど)
0457360
2008/05/23(金) 11:30:33�d
1. def call(*各種設定リスト): info={}; f(info); return
2. 初期化関数もどき(空リスト、空辞書を破壊的操作で初期化)
def f(x): x[0]=1; x[1]=1; x[2]=2 #辞書
def f(x): x+=[1]; x+=[2]; x+=[3] #リスト
設定ファイルちっくに扱うなら、辞書使うし余り気にならないのかも > リストの破壊的操作
JSonとか、いい感じなものだと最近わかり始めてきますた
0458デフォルトの名無しさん
2008/05/23(金) 12:07:530459デフォルトの名無しさん
2008/05/23(金) 16:11:33Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> fn = os.path.join('./', 'test-file.txt')
>>> open(fn).read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: './test-file.txt'
同じディレクトリ下にあるファイルを読むにはどう書けば良いですか?
0460デフォルトの名無しさん
2008/05/23(金) 16:19:24>>> fn = os.path.join('./', 'test-file.txt')
>>> open(fn).read()
.txt 拡張子が余計に付いてだけでした orz
事故レスすまそ
0461デフォルトの名無しさん
2008/05/23(金) 17:41:49なんでバグだらけの旧バージョン使ってるんだ?
0462デフォルトの名無しさん
2008/05/23(金) 19:29:520463デフォルトの名無しさん
2008/05/23(金) 19:36:570464デフォルトの名無しさん
2008/05/23(金) 21:15:470465デフォルトの名無しさん
2008/05/23(金) 22:41:04java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkExit(Unknown Source)
at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.python.core.PyReflectedFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyInstance.invoke(Unknown Source)
at applet$_PyInner.init$1(applet.java:61)
at applet$_PyInner.call_function(applet.java:47)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject._jcallexc(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at applet$MyApplet.init(applet.java:139)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
0466デフォルトの名無しさん
2008/05/23(金) 22:43:400467デフォルトの名無しさん
2008/05/23(金) 23:13:26死ね
0468デフォルトの名無しさん
2008/05/23(金) 23:38:32下みたいに書いても全然文字列を分割してくれないんだけど
line = '123,456,79'
regexp = re.compile('(?=5)')
print regexp.split(line)
0469デフォルトの名無しさん
2008/05/23(金) 23:56:48http://www.python.jp/doc/nightly/lib/re-syntax.html
> (?=...)
> もし ...が次に続くものとマッチすればマッチしますが、文字列をまったく消費しません。
> これは先読みアサーション(lookahead assertion)と呼ばれます。
> 例えば、Isaac (?=Asimov) は、'Isaac 'に 'Asimov'が続く場合だけ、'Isaac 'とマッチします。
'(?=5)' だと空文字列に 5 が続くなら空文字列にマッチ(ただし 5 は消費しない)という意味になるのかな?
空文字列にマッチしたら分割の目的には使えないような・・・。
>>> a = re.compile(",(?=4)")
>>> a.split("123,456,789")
['123', '456,789']
0470デフォルトの名無しさん
2008/05/23(金) 23:57:19先読みが使えないっていうより
re.split() に長さ 0 のパターンを渡しても何もしてくれないとかじゃない?
他の言語とかは挙動が違った気がする
0471デフォルトの名無しさん
2008/05/23(金) 23:57:58ライブラリリファレンスを見れば分かるけど、先読みは使えるよ。
よくわからんが、split()がzero-width assertionでは機能しないのかもな。
split()に与えた正規表現にマッチした文字列をデリミタとみなして分割するから、
「位置」じゃなくて「文字(列)」にマッチする正規表現じゃないとダメ、とかさ。
ただの想像だけど。
0472471
2008/05/23(金) 23:58:390473デフォルトの名無しさん
2008/05/24(土) 00:15:300474デフォルトの名無しさん
2008/05/24(土) 00:38:160475デフォルトの名無しさん
2008/05/24(土) 00:46:500476468
2008/05/24(土) 01:09:50やっぱり場所指定の正規表現じゃ分割しないみたいだね
perlとrubyでもsplit関数を動かしてみたんだけど、
perlはpythonと同様で場所指定の正規表現じゃ分割してくれなかったよ
一方rubyは意図したとおりに場所指定で分割できた
言語毎に結構挙動が違うもんなんだね
0477デフォルトの名無しさん
2008/05/24(土) 01:31:05ぐは禁止。きもい。
0478デフォルトの名無しさん
2008/05/24(土) 01:32:100479デフォルトの名無しさん
2008/05/24(土) 01:33:370480デフォルトの名無しさん
2008/05/24(土) 01:50:44それだと一文字消えちゃうだろう常識で考えて
0481デフォルトの名無しさん
2008/05/24(土) 03:40:04ubuntu7.10で動かないみたい
http://udk.openoffice.org/python/python-bridge.html
Hellow Worldのサンプル動かすと
line 5, in <module>
localContext = uno.getComponentContext()
AttributeError: 'module' object has no attribute 'getComponentContext'
0482デフォルトの名無しさん
2008/05/24(土) 03:49:34Perlのバージョンは?
試したらできたよ。
my @f = split /(?=5)/, $str;
print join(':', @f), "\n";
0483デフォルトの名無しさん
2008/05/24(土) 05:24:45>>> line = '123,456,79'
>>> regexp = re.compile('')
>>> regexp.split(line)
['123,456,79']
そもそもこうなるんだもんなぁ
0484デフォルトの名無しさん
2008/05/24(土) 08:28:25ぐはははははははははははhahahahahahahahaha!!!!!
0485デフォルトの名無しさん
2008/05/24(土) 10:14:480486デフォルトの名無しさん
2008/05/24(土) 12:39:52perlでもsplitできるね
pythonで位置指定の分割ってどうやんだろ
0487デフォルトの名無しさん
2008/05/24(土) 13:03:35def split(pattern, string):
result = []
start = 0
for m in re.finditer(pattern, string):
result.append(string[start:m.start()])
start = m.span()[1]
result.append(string[start:])
return result
0488デフォルトの名無しさん
2008/05/24(土) 13:14:27ま、その辺は好きに汁
0489デフォルトの名無しさん
2008/05/24(土) 14:06:35re.findall()
0490デフォルトの名無しさん
2008/05/24(土) 14:18:040491デフォルトの名無しさん
2008/05/24(土) 15:33:29Python ではどう書けばよいですか?
0492デフォルトの名無しさん
2008/05/24(土) 15:37:47list(str)
0493デフォルトの名無しさん
2008/05/24(土) 19:16:390494デフォルトの名無しさん
2008/05/24(土) 19:24:330495デフォルトの名無しさん
2008/05/24(土) 19:25:540496デフォルトの名無しさん
2008/05/24(土) 21:30:26動きません。
自己確認してください。
0497デフォルトの名無しさん
2008/05/24(土) 22:48:520498デフォルトの名無しさん
2008/05/24(土) 22:51:21オッサン臭いコードだな。その上動かないってどんだけ(www
0499デフォルトの名無しさん
2008/05/24(土) 22:58:550500デフォルトの名無しさん
2008/05/24(土) 23:03:49まさに労害(WWW
0501デフォルトの名無しさん
2008/05/24(土) 23:17:21filter(lambda x : callable(getattr(obj, x)), dir(obj))
0502デフォルトの名無しさん
2008/05/24(土) 23:28:110503デフォルトの名無しさん
2008/05/25(日) 00:07:56pythonの基本的な文法と比べると汚い
0504デフォルトの名無しさん
2008/05/25(日) 00:14:14lambdaを使うのは変態か、自称イケメンハッカーのワンライナー芸人だけだろ。
0505デフォルトの名無しさん
2008/05/25(日) 01:19:41いろいろできるようにすればいいのに
0506デフォルトの名無しさん
2008/05/25(日) 01:32:31もう新規につかうようなもんじゃないだろ。
0507デフォルトの名無しさん
2008/05/25(日) 02:44:320508デフォルトの名無しさん
2008/05/25(日) 03:45:360509デフォルトの名無しさん
2008/05/25(日) 05:36:580510デフォルトの名無しさん
2008/05/25(日) 09:50:460511デフォルトの名無しさん
2008/05/25(日) 10:51:460512デフォルトの名無しさん
2008/05/25(日) 10:52:280513デフォルトの名無しさん
2008/05/25(日) 11:37:370514デフォルトの名無しさん
2008/05/25(日) 12:29:07だからってpython の lambda はちょっと無しだろ
C++みたいに演算子()をオーバーロードできればいいのに
0515デフォルトの名無しさん
2008/05/25(日) 12:33:36関数内で関数が定義できるんだから、lambdaはあれで良い。
演算子オーバーロードも、__call__でできるじゃないか。
0516デフォルトの名無しさん
2008/05/25(日) 12:40:010517デフォルトの名無しさん
2008/05/25(日) 13:11:22Pythonの関数はファーストクラスオブジェクトだが
0518デフォルトの名無しさん
2008/05/25(日) 13:23:230519デフォルトの名無しさん
2008/05/25(日) 13:32:38>>514は、匿名リテラルで宣言できる関数が制限されていると言いたいんだと思う。
でも、def foo() して、 bar = foo; del foo; したら、foo()できなくなる。Pythonのdefは関数定義と
変数への代入を同時にしているというだけなので、関数がファーストクラスオブジェクトと言っても良い。
0520デフォルトの名無しさん
2008/05/25(日) 14:00:35ありがとう。ファーストクラスオブジェクトでググればよかったのか。
俺もPythonのlambdaは気持ち悪いと思う。
あと、exceptで例外が複数のときだけ括弧つけるのも気持ち悪い。
0521デフォルトの名無しさん
2008/05/25(日) 14:11:16インタプリタだから、できそうなイメージなんだけど
0522デフォルトの名無しさん
2008/05/25(日) 14:13:280523デフォルトの名無しさん
2008/05/25(日) 14:26:280524デフォルトの名無しさん
2008/05/25(日) 14:50:030525デフォルトの名無しさん
2008/05/25(日) 15:54:31いろんなデコレータのソース読んでみたら?そういうのばっかりだから。
Pythonのデコレータは、関数を引数にして関数を返す関数。
@foo(a,b)
def bar():
の場合、fooは、"関数を引数にして関数を返す関数"を作成して返す関数になる。
0526デフォルトの名無しさん
2008/05/25(日) 15:58:09快活環境じゃなくて開発環境
0527デフォルトの名無しさん
2008/05/25(日) 16:27:51名前なしでそれができない、ってだけ。
あと定義された時の環境に対して書き換えが効かない。
0528デフォルトの名無しさん
2008/05/25(日) 17:03:38助けて
java.security.AccessControlException: access denied (java.lang.RuntimePermission exitVM.0)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkExit(Unknown Source)
at javax.swing.JFrame.setDefaultCloseOperation(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.python.core.PyReflectedFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyInstance.invoke(Unknown Source)
at applet$_PyInner.init$1(applet.java:61)
at applet$_PyInner.call_function(applet.java:47)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyTableCode.call(Unknown Source)
at org.python.core.PyFunction.__call__(Unknown Source)
at org.python.core.PyMethod.__call__(Unknown Source)
at org.python.core.PyObject.__call__(Unknown Source)
at org.python.core.PyObject._jcallexc(Unknown Source)
at org.python.core.PyObject._jcall(Unknown Source)
at applet$MyApplet.init(applet.java:139)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
0529デフォルトの名無しさん
2008/05/25(日) 17:56:170530デフォルトの名無しさん
2008/05/25(日) 17:59:290531デフォルトの名無しさん
2008/05/25(日) 19:11:410532デフォルトの名無しさん
2008/05/25(日) 20:08:15専用じゃないけど
0533デフォルトの名無しさん
2008/05/25(日) 20:17:07これならきもくない?
tup = (
a,
)
0534デフォルトの名無しさん
2008/05/25(日) 20:48:17ありがとう
やってみたら出来たよ
これで使いやすいschemeの代わりが出来た
0535デフォルトの名無しさん
2008/05/25(日) 21:57:03誰かが「カンマがtupleを作るんだ、カッコじゃない」と言ってたが、
>>> x=()
>>> type(x)
<type 'tuple'>
キモイヨー
0536デフォルトの名無しさん
2008/05/25(日) 22:22:42男なら、空のタプルを作りたいときがあるってもんだ。
0537デフォルトの名無しさん
2008/05/26(月) 00:00:590538デフォルトの名無しさん
2008/05/27(火) 00:06:35キモイヨー
0539デフォルトの名無しさん
2008/05/27(火) 00:15:23Cで言う配列に対するポインタ
みたいなノリで使える、オリジナルデータを更新可能なスライスみたいなの無いかな
スライスみたいにコピーするんじゃなくて参照を握っていて、
更新も出来るやつ
自分で作るしかない?
0540デフォルトの名無しさん
2008/05/27(火) 00:44:420541デフォルトの名無しさん
2008/05/27(火) 00:49:16需要があるのか?
0542デフォルトの名無しさん
2008/05/27(火) 01:48:06ありますよ
0543デフォルトの名無しさん
2008/05/27(火) 09:27:2310行ぐらいで書けそうだから、必要な人は手元で書いちゃうんでは。
0544デフォルトの名無しさん
2008/05/27(火) 09:57:140545デフォルトの名無しさん
2008/05/27(火) 11:27:27書きました。
見せないけど。
0546デフォルトの名無しさん
2008/05/27(火) 16:41:490547デフォルトの名無しさん
2008/05/27(火) 17:55:58arrayじゃ駄目なの?
0548539
2008/05/27(火) 18:28:38>>542 モジュール名を教えていただけませんか
>>543 書いてみましたが、自分は10行では無理でした
__getitem()__に負のインデクスやsliceオブジェクトが渡された時の
処理とかをいちいち書くのがウザいです
>>547 arrayは全く用途が違うのではないでしょうか
シークエンスの部分列を「参照」するだけならただのスライスで良いし
itertools.islice()ならコピーを避けられますが、
元のシークエンスを「更新」もしたいわけです
0549デフォルトの名無しさん
2008/05/27(火) 18:51:410550デフォルトの名無しさん
2008/05/27(火) 19:40:47ようするに、ポインタに相当するものを作りたいのか。
0551デフォルトの名無しさん
2008/05/27(火) 19:53:150552デフォルトの名無しさん
2008/05/27(火) 20:10:20要するにスライスをスライスして新しいスライスを作れればいい(そこを自前で実装するのは面倒)ということだな。
スライスをスライスしてスライスを作るというのはありがちな気がするので既にありそうだが。俺は残念ながら知らん。
自前で実装するのは確かに面倒そうだ。
0553デフォルトの名無しさん
2008/05/27(火) 22:02:45http://www.rh.to/python/WDB.html
こんなのとか? リンク先のViewの説明がそれっぽいとかおもた。
というか牛刀をもって鶏を割くみたいになってる気もする…
>>457
def call(inil=[1,2,3,4,5]): srcl=inil; m(srcl,1,3); return srcl
def m(x,i,j): _m(x[i:j])
def _m(x): x[0]=1; x[1]=1; x[2]=1 とか思いついて、書いてみる
>>> def call(ini): src=ini; dst=m(src,1,4); dst.insert(0,src[0]); dst.append(src[4]); return dst
>>> def m(x,i,j): print x[i:j]; return _m(x[i:j])
>>> def _m(x): x[0]=1; x[1]=1; x[2]=1; return x
>>> call([1,2,3,4,5])
[2, 3, 4]
[1, 1, 1, 1, 5]
むぅ。糞コード。可読性悪すぐる…orz
call()でintかlistで場合分け必要だし
0554デフォルトの名無しさん
2008/05/27(火) 22:15:150555デフォルトの名無しさん
2008/05/27(火) 22:36:17これとかヒントになるかも
一部を掬って変化を加えたら、全体が書き換わる…
0556539
2008/05/27(火) 22:52:01NumPyですか
数値計算が目的という訳ではなかったので完全に盲点でしたが、使えそうですね
ちょっと試してみます
0557デフォルトの名無しさん
2008/05/28(水) 09:09:02PerlもPythonも廃れ、Rubyだけが生き残る新時代
0558デフォルトの名無しさん
2008/05/28(水) 09:42:450559デフォルトの名無しさん
2008/05/28(水) 12:02:30print e
とかで出力されるデータをA-Z, a-z, __??__で
頭文字ごとに改行して出力するにはどうしたら良いですか?
0560559
2008/05/28(水) 14:23:42... print '\n', elem,
...
>>> def print_elem(elem):
... print elem,
...
>>> q=''
>>>
>>> a2z="abcdefghijklmnopqrstuvwxyz"
>>> for e in dir(cssutils):
... if q == '' and q in set(a2z): q = e[0]
... if e[0] in set(a2z):
... if q != e[0]:
... print_elem_n(e)
... q=e[0]
... else:
... print_elem(e)
書けた…添削きぼん
print文の、改行の取り扱いに嵌る orz
0561デフォルトの名無しさん
2008/05/28(水) 14:35:40>>> a2z=range(ord('a'), ord('z')+1)
0562デフォルトの名無しさん
2008/05/28(水) 14:35:53from itertools import groupby
from operator import itemgetter
for k, g in groupby(sorted(dir(str)), itemgetter(0)):
print ", ".join(g)
0563デフォルトの名無しさん
2008/05/28(水) 14:36:51printだけ書けば改行できるのに。
lastchar = dir()[0][0]
for e in dir():
if e[0] != lastchar:
lastchar = e[0]
print e,
これじゃダメ?
0564デフォルトの名無しさん
2008/05/28(水) 14:37:500565デフォルトの名無しさん
2008/05/28(水) 14:54:57便利なもんがあるんだなー
こんな普通な奴しか思いつかなかった
def f(seq):
d = {}
for s in seq:
d.setdefault(s[0], []).append(s)
for k in sorted(d.iterkeys()):
print ','.join(d[k])
0566563
2008/05/28(水) 15:07:07gのシーケンスを", "で区切った文字列が得られるのか。
0567デフォルトの名無しさん
2008/05/28(水) 15:18:090568デフォルトの名無しさん
2008/05/28(水) 17:07:40for e in dir():
1. if 違う要素かどうか判定: 改行\n + フラグを更新する
2. 要素を出力する
�d。ノートにでもまとめて整理しとく乙
0569デフォルトの名無しさん
2008/05/28(水) 17:19:04個人的には
リスト.join(区切り文字)
の方がわかりやすいと思ってる。
0570デフォルトの名無しさん
2008/05/28(水) 17:27:242. Ruby使え
3. 俺もそう思う
0571デフォルトの名無しさん
2008/05/28(水) 17:43:040572563
2008/05/28(水) 17:51:18俺も文脈的に直感的でないと思うけど、文字列クラスにjoinメソッドがあるという
形だからしょうがないね。
静的関数として提供した方がいい気がするが、元々静的関数だったのが廃止されて
メソッドになったのね。
0573デフォルトの名無しさん
2008/05/28(水) 19:13:53それでまずはmodelを定義してデータを入れるところまではできま
した(sqlite3とかで直接DBの中身見て入ったのを確認した)。
だけど、manage.py shellでデータを確認しようとしても見れません。
具体的にはhoge.objects.all()とかってやっても[]が表示されるだ
けです。
これはなぜなんでしょうか?
あと、adminのhogeの画面でも
5 hoges
のように表示されるだけで、DBに格納したデータをいじれたり、見
る事ができない状態です。
何かアドバイスがいただければ助かります。よろしくお願いします。
0574デフォルトの名無しさん
2008/05/28(水) 20:13:190575デフォルトの名無しさん
2008/05/28(水) 23:51:30つまり
a{hoge:1,foo:2,bar:3}
を↓のようにしたいです。
hoge = 1
foo = 2
bar = 3
0576デフォルトの名無しさん
2008/05/28(水) 23:56:27入門書嫁。
0577デフォルトの名無しさん
2008/05/29(木) 00:09:21みんpyには載ってませんでしたけど、ググッたら解決しました。
exec使えばいいんですね!
0578デフォルトの名無しさん
2008/05/29(木) 00:10:11locals().update(D)
あまり行儀良くないとは思うが一応
0579デフォルトの名無しさん
2008/05/29(木) 00:11:39for k in D: exec "%s = %s" % (k, D[k])
ついでに漏れも生まれて初めて exec 使ったので記念に
0580デフォルトの名無しさん
2008/05/29(木) 00:14:25ローカル変数にする意図が全くわからない。
そんなことして何か嬉しいか?
0581デフォルトの名無しさん
2008/05/29(木) 00:20:47うはは、わかりません。
0582デフォルトの名無しさん
2008/05/29(木) 00:21:300583デフォルトの名無しさん
2008/05/29(木) 00:22:32>a{hoge:1,foo:2,bar:3}
このコードはどんな入門書にも載ってないよ(www
0584デフォルトの名無しさん
2008/05/29(木) 00:24:03people['age'],people['job'],people['height'])
↑みたいなのを
cur.execute("insert name (age,job,height) values ?,?,?)",
age,job,height)
みたいにすっきりさせたいんです。カラムが多いので。
0585デフォルトの名無しさん
2008/05/29(木) 00:26:53execなんて危ないもの、初心者が使っちゃいけません!!
0586デフォルトの名無しさん
2008/05/29(木) 00:27:54%のフォーマットには辞書を渡す方法もある
"insert name (age,job,height) values %(age)s,%(job)s,%(height)s)" % people
0587586
2008/05/29(木) 00:29:340588575
2008/05/29(木) 00:33:18へー。そういうのもあるんですね。勉強になります。今回は>>579の
方のやつを使わせていただこうと思います。ありがとうございます!
0589デフォルトの名無しさん
2008/05/29(木) 00:35:20eval 使ったらこけて何これって思ったさ
>>584
これでもいけたような気がする。間違ってたらごめんね
cur.execute("insert name (age,job,height) values (:age, :job, :height)", people)
0590デフォルトの名無しさん
2008/05/29(木) 00:39:42目的によっては、
for k in dic:
setattr(obj, k, dic[k])
で充分だったりする。
0591デフォルトの名無しさん
2008/05/29(木) 01:24:15せっかくだからiteritems()使おうよ。
for k, v in dic.iteritems():
setattr(obj, k, v)
0592デフォルトの名無しさん
2008/05/29(木) 05:49:040593デフォルトの名無しさん
2008/05/29(木) 08:04:47。。。。でもどうせ 2.6 あたりで統合されるんでしょ?
0594デフォルトの名無しさん
2008/05/29(木) 09:13:260595デフォルトの名無しさん
2008/05/29(木) 09:23:420596デフォルトの名無しさん
2008/05/29(木) 09:42:04はやらない理由が分かりました。
0597デフォルトの名無しさん
2008/05/29(木) 12:35:532.Xでは互換性維持、3.0以降からitemsがiteritems相当になる、だったと思う
0598デフォルトの名無しさん
2008/05/29(木) 16:57:150599デフォルトの名無しさん
2008/05/29(木) 17:56:250600デフォルトの名無しさん
2008/05/29(木) 19:26:53としたときdictオブジェクトとかその.keys()いれたときのkに出てくる順番はどう決まるのですか?
0601デフォルトの名無しさん
2008/05/29(木) 19:29:390602デフォルトの名無しさん
2008/05/29(木) 19:33:54気にしちゃダメ
順序に依存しない方法を考える>ordereddict自作
0603デフォルトの名無しさん
2008/05/29(木) 19:40:09ところでおまいら温泉行く?
0604デフォルトの名無しさん
2008/05/29(木) 19:58:22どうもありがとうございました
0605デフォルトの名無しさん
2008/05/29(木) 21:05:55MoinMoinとPyblosxomくらいですか?
0606デフォルトの名無しさん
2008/05/29(木) 21:08:280607デフォルトの名無しさん
2008/05/29(木) 21:15:24一時期マイブームだったけど
完成が速すぎて今はメンテナンスだけ
また何か作るときにお世話になると思う
以下djangoに限らずweb開発環境全般に言えるんだが
それなりの努力でそこそこのものが出来るのは利点だけど
プログラミングの面白さはあんまりないかも知れない
djangoだけで出来ない部分を自分でプログラムする訳だけど
そこは最初からdjango使わなくても出来ると言えば出来る訳で
あえてdjango使うのは手間を減らすためだから
djangoで出来る範囲のことをdjangoに精いっぱいやらせるのが良い
「知ってれば簡単」という状態を期待してdjangoを使っている
だけどそのためにはdjangoでどうするのかを知ってないといけない
すごいジレンマが起きる
一通り覚えるまで苦労する
0608デフォルトの名無しさん
2008/05/29(木) 21:35:420609デフォルトの名無しさん
2008/05/29(木) 22:51:51あってもなくてもどうでもよかった。
0610デフォルトの名無しさん
2008/05/29(木) 22:53:360611デフォルトの名無しさん
2008/05/29(木) 22:58:260612デフォルトの名無しさん
2008/05/29(木) 23:00:19ありがとうございます
どのように変わるのか知りたかったのでこれから見てみようと思います
0613デフォルトの名無しさん
2008/05/29(木) 23:37:35http://docs.python.org/dev/3.0/whatsnew/3.0.html
0614デフォルトの名無しさん
2008/05/30(金) 10:02:34そして二度と使わない
0615デフォルトの名無しさん
2008/05/30(金) 11:27:000616デフォルトの名無しさん
2008/05/30(金) 11:48:16お手軽・・・ならDjangoかもな。
まじめにやるなら、Paste/Pylonsで、wsgiをベースにしたデザインのフレームワークを使った方が良いかも知れない。
0617デフォルトの名無しさん
2008/05/30(金) 12:19:330618デフォルトの名無しさん
2008/05/30(金) 15:47:25変数がつまったちょくちょく変更される.pyのファイルがあり、
それを実際動かすほうで取り込んで変数を使っているのですが
pycがあるといちいち消さなくてはいけなくて不便です
0619デフォルトの名無しさん
2008/05/30(金) 16:00:27pycを消す必要はないと思うが。
タイムスタンプが古ければ無視されるから害はないかと。
0620デフォルトの名無しさん
2008/05/30(金) 16:06:36どうもすいません
ありがとうございました
0621575
2008/05/30(金) 16:42:02そのやり方でできました!
↓に落ち着こうと思っていたんですが、気持ち悪いなーと思っていました。
for k,v in item.iteritems(): exec '%s = u"%s"' % (k,v)
そちのやり方の方が分かりやすく安全ですね。使わせていただきます。すば
らしいです。ありがとうございます。
pysqliteのマニュアルはtutorial部分ちゃんと読んだつもりなんですが、
そのやり方は知らなかったです。
0622デフォルトの名無しさん
2008/05/30(金) 17:13:56いや、2.5のドキュメントの方か。
0623デフォルトの名無しさん
2008/05/30(金) 19:58:500624デフォルトの名無しさん
2008/05/30(金) 20:00:35code/execute_3.py
0625デフォルトの名無しさん
2008/05/30(金) 23:09:01http://docs.python.org/lib/sqlite3-Cursor-Objects.html
0626デフォルトの名無しさん
2008/05/31(土) 00:40:250627デフォルトの名無しさん
2008/05/31(土) 01:10:01http://d.hatena.ne.jp/yuyarin/20080529/1212028110
0628デフォルトの名無しさん
2008/05/31(土) 01:18:330629デフォルトの名無しさん
2008/05/31(土) 02:38:21ちなみに、そのやり方が無くても、工夫次第で何とかなる。execは危険すぎる。
>>> d = { 'age': 23, 'job': 'neet', 'height': '164' }
>>> d.items()
[('age', 23), ('job', 'neet'), ('height', '164')]
>>> i = zip(*d.items())
>>> cur.execute("insert name (%s,%s,%s) values (?,?,?)" % i[0], *i[1])
zipとか*の使い方は覚えておくと応用が利く
0630デフォルトの名無しさん
2008/05/31(土) 03:45:290631デフォルトの名無しさん
2008/05/31(土) 03:59:270632デフォルトの名無しさん
2008/05/31(土) 04:24:39>おはようって言ったらおはようって返してくれるよ!
sugeee---!!!
0633デフォルトの名無しさん
2008/05/31(土) 04:34:13%s と ? の数も zip(*d.items()) の個数で自動にできませんか?
0634デフォルトの名無しさん
2008/05/31(土) 09:01:54locals().update(d)
じゃだめなの?
0635デフォルトの名無しさん
2008/05/31(土) 09:13:11それか死ね。
0636デフォルトの名無しさん
2008/05/31(土) 09:21:56>おはようって言ったらおはようって返してくれるよ!
kimeeeeeeeeeeee------------------------(wwwwwwwwwwww
0637デフォルトの名無しさん
2008/05/31(土) 09:23:13辞書のキー側にunsafeな文字列入れるわけ無いじゃん。
0638575
2008/05/31(土) 09:27:52なるほど。面白いやり方ですね。勉強になります。
早速zipについてライブラリリファレンスを見てるんですが、
zip(*d.items())についている*の意味が分かりません。
検索にも引っかからないんで、もしよかったら教えていただ
けませんか?
よろしくお願いします。
0639デフォルトの名無しさん
2008/05/31(土) 09:31:56locals()で取れる辞書を変更してもローカル変数には関係ないよ。
書き込む前に自分で試せ、人の手を煩わせるな。
In [1]: def baz(d):
...: locals().update(d)
...: print foo
...:
In [2]: d = {'foo': 'bar'}
In [3]: baz(d)
---------------------------------------------------------------------------
NameError: global name 'foo' is not defined
0640デフォルトの名無しさん
2008/05/31(土) 09:33:33http://www.python.jp/doc/release/tut/node6.html#SECTION006740000000000000000
0641デフォルトの名無しさん
2008/05/31(土) 09:38:49もっとうまいやり方があるかもしれんが、、、
In [4]: t = "insert name (%s) values (%s)"
In [5]: d = {'age': 12, 'height': 34, 'weight': 56}
In [6]: ks, vs = zip(*d.items())
In [7]: ks
Out[7]: ('age', 'weight', 'height')
In [8]: vs
Out[8]: (12, 56, 34)
In [9]: k = ','.join(ks)
In [10]: k
Out[10]: 'age,weight,height'
In [13]: q = ','.join(['?']*len(ks))
In [14]: q
Out[14]: '?,?,?'
In [15]: t % (k,q)
Out[15]: 'insert name (age,weight,height) values (?,?,?)'
あとは、cur.execute(t % (k,q), *vs) で行けると思う。
0642デフォルトの名無しさん
2008/05/31(土) 09:39:24リアルで女と話したこと無いだろ(wwwww
あ、かあちゃんは女じゃないからな(wwww
0643デフォルトの名無しさん
2008/05/31(土) 09:43:30>>> d2l=zip(*d.items())
>>> d2l
[(1, 2, 3), ('a', 'b', 'c')]
やり取りしたいデータが『一対一の対応』なら,
cur.execute("insert name Ns values Vs" % i[0], *i[1])
というか>>589みたいに書くのが見やすそう
>>> d={1:('a','い'),2:('b','ろ'),3:('c','は')}
>>> d2l=zip(*d.items())
>>> d2l
[(1, 2, 3), (('a', '\x82\xa2'), ('b', '\x82\xeb'), ('c', '\x82\xcd'))]
そうでないなら、link, select_multipleなどhtmlタグ要素, 『一対多の対応』。
cur.execute("insert name Ns values Vs" % i[0], *i[1][0])
『多』側の切り替えはindexで切り替えるのがベスト?(素人考えなので動くかどうか不明↓)
cur.execute("insert name (name,age,job,height) values (:name[0], :age, :job, :height)", people)
0644641
2008/05/31(土) 09:44:13In [18]: k = d.keys()
In [19]: ','.join(k)
Out[19]: 'age,weight,height'
In [20]: ','.join('?'*len(k))
Out[20]: '?,?,?'
zip()とか*d.items()とかイラネェ
0645デフォルトの名無しさん
2008/05/31(土) 10:08:38d={u'長門':(u'おはよう', u'おはよう')}
これでおk。
つーかきめぇ(www
0646643
2008/05/31(土) 10:11:02>>> w=dir(wiki); t=dir(template)
>>> for e in set(w).intersection(set(t)):
... print e,
>>> for e in set(w).symmetric_difference(set(t)):
... print e,
共通項と相違な部分を列挙していけば
落とし所が見えてくるような…
共通基盤と、それを支えるplug-in機構、
そして,できるだけコンパクトに…
http://pythonpaste.org/webob/differences.html
wiki自作とか、車輪の再発明かもしれんけど
繰り返してブラッシュアップしてくものかもしれん
http://ninjinix.x0.com/mono/index.cgi
雨降って暇だし、移植してみるか…
0647デフォルトの名無しさん
2008/05/31(土) 12:55:44キメェ(www
0648デフォルトの名無しさん
2008/05/31(土) 14:10:49>長門は俺のIDLE
だれが上手いこと
0649デフォルトの名無しさん
2008/05/31(土) 14:43:03ttp://docs.python.org/lib/module-sqlite3.html
> You shouldn't assemble your query using Python's string operations because
> doing so is insecure; it makes your program vulnerable to an SQL injection attack.
> ...
> # Never do this -- insecure!
> symbol = 'IBM'
> c.execute("... where symbol = '%s'" % symbol)
0650643
2008/05/31(土) 15:06:451. stat の使い方がよくわからなかた
2. print が親切すぎる ex: print str, int, str[,] # 型変換と改行処理
3. sorted ではまる # os.listdir('./').sort() では駄目ぽ
* size と date でも sort できるようにする
* テンプレートと処理を分離する
時間で sort するのってどうすればいいんだろう…
0651デフォルトの名無しさん
2008/05/31(土) 15:25:22sort(key = os.path.getmtime())
http://codepad.org/h7Fb2zrE
0652643
2008/05/31(土) 16:32:34http://codepad.org/PRAzdgBm
dirs = os.listdir(FOLDER) は
>>> type(os.listdir('./'))
<type 'list'>
リストしか返さない罠
0653デフォルトの名無しさん
2008/05/31(土) 16:56:16だから?
0654デフォルトの名無しさん
2008/05/31(土) 17:43:430655デフォルトの名無しさん
2008/05/31(土) 17:44:21@salt = ['a'..'z', 'A'..'Z', '0'..'9', '.', '/']
これをPythonで書きたいんだけど、スッキリ書く方法ないですか?
シーケンス型なら何でもいいです。
0656デフォルトの名無しさん
2008/05/31(土) 17:52:04salt = list("azAZ09./")
0657656
2008/05/31(土) 17:54:04吊ってくる
0658デフォルトの名無しさん
2008/05/31(土) 18:00:57salt = 'abcdefghi...' とベタに書くのが一番簡単かもしれない。
0659デフォルトの名無しさん
2008/05/31(土) 18:02:25import string
string.letters + string.digits + './'
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./'
0660デフォルトの名無しさん
2008/05/31(土) 18:09:54def extract_char_range(s):
def f(m):
beg = ord(m.group(1)[0])
end = ord(m.group(1)[2])
if end < beg: return m.group(1)
return ''.join(chr(x) for x in xrange(beg, end + 1))
return re.sub('([^-]-[^-])', f, s)
こんな関数でも作っておいて
l = list(extract_char_range('a-zA-Z0-9./'))
とでもするとかな
0661デフォルトの名無しさん
2008/05/31(土) 18:17:49re.findall(r"[a-zA-Z\./]", "".join(map(chr, range(256)))
0662デフォルトの名無しさん
2008/05/31(土) 18:22:39Pythonは誰が書いても同じようなコード
そう信じていたころが僕にもありました
0663デフォルトの名無しさん
2008/05/31(土) 18:28:030664655
2008/05/31(土) 18:42:39今は>>659の書き方をしてますが、もっと汎用的な方法があればと
思ったのですが。
>>661
まいりました _no
0665デフォルトの名無しさん
2008/05/31(土) 19:18:42http://www.daniweb.com/forums/thread71264.html
http://www.daniweb.com/code/snippet649.html
入れ子になったデータを展開する関数を定義して上げて
rubyだとbuilt-inで リスト#flattenメソッド list.flatten() 使う
http://codepad.org/0EAY6tJ7
再帰で、入れ子を展開してから、次の処理に繋いでく
0666デフォルトの名無しさん
2008/05/31(土) 20:13:00re.findall(r"[a-zA-Z0-9\./]", "".join(map(chr, range(256)))
0667デフォルトの名無しさん
2008/05/31(土) 21:39:30a-zとかいう書き方は、aからzまでの文字コードが連続している環境に依存した書き方。
「汎用的な書き方」ではないので注意。
でも、Unicode文字列なら環境依存とか気にしないでいいから、こういった範囲指定構文もほしいね。
c-f なんて何に使うのか知らないけど。
0668デフォルトの名無しさん
2008/05/31(土) 21:41:220669デフォルトの名無しさん
2008/05/31(土) 21:55:37こらこら嘘を言うな
0670デフォルトの名無しさん
2008/05/31(土) 23:36:46どのへんが嘘?
>a-zとかいう書き方は、aからzまでの文字コードが連続している環境に依存した書き方。
これ?
0671デフォルトの名無しさん
2008/05/31(土) 23:51:40ましてPythonではな
0672デフォルトの名無しさん
2008/06/01(日) 00:43:19betaで半透明も使えるようになってるし。
簡単な3Dオブジェクト動かしてデモさせるのにええよ。
0673デフォルトの名無しさん
2008/06/01(日) 00:58:50re.findall(r"[a-zA-Z0-9\./]", "".join(map(chr, range(256))))
0674デフォルトの名無しさん
2008/06/01(日) 01:01:55出来あがった画をmpgやgifに出来ますか?
0675デフォルトの名無しさん
2008/06/01(日) 02:10:360676デフォルトの名無しさん
2008/06/01(日) 02:16:33長門も作れるかな?
0677デフォルトの名無しさん
2008/06/01(日) 02:43:450678デフォルトの名無しさん
2008/06/01(日) 07:20:54A-Za-z0-9./ で作ったシーケンスは何に利用するの?
場合によっては、(Pythonでは)そもそもシーケンスを作るという必要がない可能性が。
0679デフォルトの名無しさん
2008/06/01(日) 07:31:040680デフォルトの名無しさん
2008/06/01(日) 09:15:010681デフォルトの名無しさん
2008/06/01(日) 10:01:52trip解析だろ
0682デフォルトの名無しさん
2008/06/01(日) 10:10:410683デフォルトの名無しさん
2008/06/01(日) 10:39:490684デフォルトの名無しさん
2008/06/01(日) 10:48:550685デフォルトの名無しさん
2008/06/01(日) 10:49:510686デフォルトの名無しさん
2008/06/01(日) 15:05:22crypt.cryptに与える第二引数
0687デフォルトの名無しさん
2008/06/01(日) 21:09:21# coding: shift_jis
import urllib
import urllib2
subjects = urllib.urlopen("http://money6.2ch.net/recruit/subject.txt").read().split("\n")
key = '1207051330'
query = { 'bbs': 'recruit', 'key': key, 'time': '1', 'submit': '書き込む', 'FROM': '', 'mail': 'sage', 'MESSAGE': 'test' }
query = urllib.urlencode(query)
data = urllib2.urlopen("http://money6.2ch.net/test/bbs.cgi", query)
print data
としたところ、subjectsには正しく入っているので接続はうまくできているみたいなのですが、書き込みの方が
<addinfourl at 142709612 whose fp = <socket._fileobject object at 0x880adbc>>
とエラーが出て、どうやらうまく接続すらできていないようです。
urllibあたりの使い方が適切でないのかなと思っているのですが、心当たりのある方はいらっしゃらないでしょうか。
0688デフォルトの名無しさん
2008/06/01(日) 21:28:35> pyhtonで2chに書き込むスクリプトを書こうとしているのですが、
なるほど、スクリプト荒らしか
0689デフォルトの名無しさん
2008/06/01(日) 21:33:07そうそうその通り、ってちげーよw
cuiな2chブラウザが作りたいだけぽ
0690デフォルトの名無しさん
2008/06/01(日) 21:36:070691デフォルトの名無しさん
2008/06/01(日) 21:39:59あ、ほんどだ・・・
すみません、また分からなかったら聞きにきます><
0692デフォルトの名無しさん
2008/06/01(日) 21:40:30やる気になったことがないだけで。
0693687
2008/06/01(日) 22:21:18わっしょい、わっしょい、わっしょい!
0694デフォルトの名無しさん
2008/06/01(日) 22:56:560695デフォルトの名無しさん
2008/06/01(日) 23:17:27普通の板でオイタするとアク禁されちゃうぞ
0696デフォルトの名無しさん
2008/06/02(月) 03:45:56http://pc11.2ch.net/test/read.cgi/unix/1111478762/
0697デフォルトの名無しさん
2008/06/02(月) 10:32:280698デフォルトの名無しさん
2008/06/02(月) 10:37:47あってもいいとは思うけど悪用されやすそうだな…
0699デフォルトの名無しさん
2008/06/02(月) 16:54:47書き込みが面倒くさいんだよなぁ。
0700デフォルトの名無しさん
2008/06/02(月) 17:20:56知らなかったぜ
0701デフォルトの名無しさん
2008/06/02(月) 19:08:250702デフォルトの名無しさん
2008/06/02(月) 23:27:24標準入出力を行うプログラムを作ったのですが
例:
import sys
print ''.join(sys.stdin.readlines())
これをコマンドラインから単独で実行すると期待した動作をするのですが、
> hoge.py
aaa(^Z)
aaa
リダイレクト付きで実行するとファイルを読み込んでくれません。
> hoge.py < fuga.txt
> type fuga.txt | hoge.py
ただし、
> python hoge.py < fuga.txt
> type fuga.txt | python hoge.py
という形で実行するとうまく動くみたいです。
.pyの関連付けは出来ていると思うのですが、なにが足りないのでしょうか?
0703デフォルトの名無しさん
2008/06/02(月) 23:30:42ttp://support.microsoft.com/default.aspx?scid=kb;en-us;321788
0704デフォルトの名無しさん
2008/06/02(月) 23:31:570705デフォルトの名無しさん
2008/06/02(月) 23:33:32ありがとうございます!!
これで解決できそうです!!
0706デフォルトの名無しさん
2008/06/03(火) 02:48:30意外と使うやつ増えるかと思って
doreamhostの割引コード生成してきた
PRLIQUID
0707デフォルトの名無しさん
2008/06/03(火) 10:21:17何か新しいメソッドを追加するなどということができるのでしょうか?
C++ でコンテナクラスライブラリを継承して用途に特化した
メソッドを追加するということを時々するのですが,
同様のことが Python でもできれば便利だなと思っています.
0708デフォルトの名無しさん
2008/06/03(火) 10:25:102.2 以降、 基底クラスオブジェクトを継承したクラスとして動作する。
その継承もできる。
ーーーーーーーーー
ということらしい.
0709デフォルトの名無しさん
2008/06/03(火) 10:55:17>>706
スペルが違う
dreamhost.com
0710デフォルトの名無しさん
2008/06/03(火) 11:16:29登録できたけど次に何して遊ぼう
0711デフォルトの名無しさん
2008/06/03(火) 12:32:16【海外鯖最強】 DreamHost 【200GB/月$9.95】
http://pc11.2ch.net/test/read.cgi/hosting/1166966706/
0712デフォルトの名無しさん
2008/06/03(火) 12:44:54単にある文字列がバイト列の文字列(というのか?)なのか Unicode 文字列
かというのを判定したいのですが、できればより一般的に任意のオブジェクトの
型情報をデバッグ時に表示させたいことがあります。
C++ における typeof のようなものをイメージしています。
0713712
2008/06/03(火) 12:46:44なんか取得で北っぽい。
0714デフォルトの名無しさん
2008/06/03(火) 12:48:320715デフォルトの名無しさん
2008/06/03(火) 13:08:27typeは全部classobj / instanceになるんで注意汁
0716712
2008/06/03(火) 13:44:11たしかに、codec.open で返ってくるファイルオブジェクトを
type でみたら instance になっちゃうね・・・
最近 boost.python に触発されて使い始めたばっかりだから
「旧スタイル」ってのがわからないが。
boost.python のおかげで C++ ともうまくやっていけそう。
0717デフォルトの名無しさん
2008/06/03(火) 13:47:34>>> class NewStyle(object): pass
objectを継承するかどうかで決まる
0718デフォルトの名無しさん
2008/06/03(火) 13:49:23組み込みのobjectから直接ないし間接に継承してるクラスは
new style classになり、そうでないものが旧スタイル、のはず
とりあえずclassobjの場合はcls.__name__
instanceの場合はobj.__class__.__name__
とかやればクラス名は取れる
単にxはAのインスタンスかを知りたい場合は
isinstance(x, A)を使うといいよ
これは旧スタイルクラスに対しても意図した通りに働く
0719712
2008/06/03(火) 14:57:27ところで print ステートメントで簡単にデバッグ用表示が
できるようい __str__ メソッドを用意してみたんだけど、
Unicode 文字列を返しちゃだめなんだね・・・
0720デフォルトの名無しさん
2008/06/03(火) 15:06:500721デフォルトの名無しさん
2008/06/03(火) 15:32:540722712
2008/06/03(火) 16:15:32今ディープコピーしようとして import copy して
y = copy.copy(x) とかするって知ったんだけど、
結局ダックタイピングだから __deepcopy__()
が定義されていればいいということ?
じゃ、__deepcopy__() を直接呼び出せばいいんじゃね?
0723712
2008/06/03(火) 16:16:350724デフォルトの名無しさん
2008/06/03(火) 16:23:43池
0725デフォルトの名無しさん
2008/06/03(火) 22:30:07具体的にどういうことやるの?
0726デフォルトの名無しさん
2008/06/03(火) 22:52:540727デフォルトの名無しさん
2008/06/03(火) 23:17:56イベント全体としての趣旨と受講対象者は、どんな感じなんだろうか
勉強会は、建前で。出会い目的としての懇親会がメインなの?
あとcopyをテーマにした意図は、なんなんだろう
5.17 copy -- Shallow and deep copy operations
http://docs.python.org/lib/module-copy.html
3.18 copy -- 浅いコピーおよび深いコピー操作
http://www.python.jp/doc/release/lib/module-copy.html
0728デフォルトの名無しさん
2008/06/03(火) 23:22:26>出会い目的としての懇親会
こういう感覚って逆に新鮮(wwww
0729デフォルトの名無しさん
2008/06/03(火) 23:24:56ていうか申し込みできないくさいんだが。
0730デフォルトの名無しさん
2008/06/03(火) 23:28:10すぐに満員になったから締め切ったんだよ.
なんとか温泉とは大違いだね.
0731デフォルトの名無しさん
2008/06/03(火) 23:38:54もちろん、異性出会いという意味じゃないよ
勉強会とか、学校っていわゆる人脈づくりが目的でしょ?
人脈というとなんかあれだけど
0732デフォルトの名無しさん
2008/06/03(火) 23:53:04>異性出会いという意味じゃないよ
誰もそんなこと言ってないけど(wwww
0733デフォルトの名無しさん
2008/06/04(水) 00:18:330734デフォルトの名無しさん
2008/06/04(水) 00:23:300735デフォルトの名無しさん
2008/06/04(水) 01:09:44誰かが言ってたら「そういう意味じゃないよ」みたいな書き方になるだろう。
まだ言っていないことを先に言うから「異性出会いという意味じゃないよ」と、説明的になる。
誰も言ってないから書かれたものに「誰もそんなこと言ってない」と返しても、あんまり意味が無い。
0736デフォルトの名無しさん
2008/06/04(水) 01:19:170737デフォルトの名無しさん
2008/06/04(水) 01:43:010738デフォルトの名無しさん
2008/06/04(水) 03:20:13勉強会初心者ですが質問させてください。
女性の参加者は全体の何%くらい居ますか?
0739デフォルトの名無しさん
2008/06/04(水) 03:43:20大抵0%だから安心していいよ。
0740デフォルトの名無しさん
2008/06/04(水) 03:56:26IronPythonのソース読むなら参加したいかもw
0741デフォルトの名無しさん
2008/06/04(水) 08:09:17そういう使い方は無しなのか。
0742デフォルトの名無しさん
2008/06/04(水) 08:56:17IPythonならもう少し何とかなると思うよ。
でも、最近のbashとかまでは補完機能強くないなぁ。
0743デフォルトの名無しさん
2008/06/04(水) 08:57:25こういう奴に限って基本が抜けている。
たいてい仕事に使えないので注意。
0744デフォルトの名無しさん
2008/06/04(水) 09:09:29非モテはLLやっても非モテだろJK(wwwwwwwwwwwwwwwwwwwww
0745デフォルトの名無しさん
2008/06/04(水) 11:04:15http://groups.google.com/group/python-code-reading
MLがあるみたいだから読んでみればいいんじゃね?ていうかggrks?
0746デフォルトの名無しさん
2008/06/04(水) 11:22:46効率のいいやり方ってありますか?
自分は以下のおそらく非効率的なやり方をしています.
a = ["", "a", "b", "", "c"]
print a
while True:
try:
a.remove("")
except ValueError:
break
print a
0747デフォルトの名無しさん
2008/06/04(水) 11:24:23http://pastebin.windy.cx/?page=view&id=1212546216
2ch でうまくコードを整形して表示させるのは難しいなぁ.
0748デフォルトの名無しさん
2008/06/04(水) 11:29:310749デフォルトの名無しさん
2008/06/04(水) 11:29:42これでも同じか…
in を処理するときにいちいちサーチしているんだよねぇ
0750デフォルトの名無しさん
2008/06/04(水) 11:36:14そこでiをチョイスするのはなんだかなぁとおもった。
0751デフォルトの名無しさん
2008/06/04(水) 11:37:120752デフォルトの名無しさん
2008/06/04(水) 11:39:330753デフォルトの名無しさん
2008/06/04(水) 11:39:47ふむ,そういう書き方をするのか.
リストの内包表現というのだな・・・
他の言語から来た人間には目新しい。
たぶん Python にはたくさんそういう技があるんだろう。
C/C++/Java しか触ったことないから違いだけに着目して勉強したい。
0754デフォルトの名無しさん
2008/06/04(水) 11:40:04> ifilterfalse( predicate, iterable)
> predicateがFalseとなる要素だけを返すイテレータを作成します。
> predicateがNoneの場合、値が偽であるアイテムだけを返します
0755748
2008/06/04(水) 11:44:12そんなくだらないところを指摘する暇があったら、間違いを指摘してくれよ(嘲笑
a = [i for i in a if a != ""]
↓
a = [i for i in a if i != ""]
0756デフォルトの名無しさん
2008/06/04(水) 11:46:21いずれにせよ一時的な作業用に元のリスト a と
最大で同じだけの大きさのリストができてしまうのは仕方ないのか。
0757デフォルトの名無しさん
2008/06/04(水) 11:47:180758デフォルトの名無しさん
2008/06/04(水) 11:59:03ならワークの配列なしのinplaceな変換になるんじゃないかな
0759デフォルトの名無しさん
2008/06/04(水) 12:00:47余分な ) がついてた
0760デフォルトの名無しさん
2008/06/04(水) 12:04:17del という手もある。
a = ["", "a", "b", "", "c"]
i = 0
while i < len(a):
if a[i] == "":
del a[i]
else:
i += 1
print a
0761デフォルトの名無しさん
2008/06/04(水) 12:07:49最初はそれでやろうと思ったんですが、
del すると要素数が変わっちゃうなぁと思いまして。
でも毎回 len(a) でチェックしてるからいいのか。
>>758
先頭の a[:] の効果って何なんでしょうか?
スライス・・・・・・とりあえず全部の要素をさしている?
0762デフォルトの名無しさん
2008/06/04(水) 12:10:39ってやっちゃったら、当然中間生成物(?)ができますよね。
0764デフォルトの名無しさん
2008/06/04(水) 12:15:42代入文の左辺がsliceの場合は、その範囲がクリップされて、
そこに右辺のシークエンスを突っ込むんだよ
ぶっちゃけ書いてはみたけど、俺ならこんな書き方はしない
0765デフォルトの名無しさん
2008/06/04(水) 12:16:27だって120秒前まではスライス代入なんて構文知らなかったから(笑
ラムダ式が使えるってさっき知った。
0766デフォルトの名無しさん
2008/06/04(水) 12:17:32in-place にこだわらなければ内包表記ですか?
0767デフォルトの名無しさん
2008/06/04(水) 12:26:53うん
というか、一見ワークを使ってないように見えて、こんなのが動くってことは
多分使ってるんじゃないかな
結局、わかりにくい上に遅くなるだけだと思う
0768デフォルトの名無しさん
2008/06/04(水) 12:27:130769デフォルトの名無しさん
2008/06/04(水) 12:38:17そもそも、そういうことにこだわるレベルのコード書くのににPython使わない。
0770デフォルトの名無しさん
2008/06/04(水) 12:56:05確かにメモリが不足するほどの作業をPython使ってやるものじゃ
ないのかもしれませんね。ただ、自分はいままで C++ と Java
でやってた結構メモリを食う操作(大規模なグラフ構造の処理とか)
をやってみようと思ってたんで、逆にヒープ(ってPythonでも言う?)
が不足してOSからメモリを取得しようとしてページングもガリガリ
おき始める手前くらいまではメモリを使い切りたいって思ってます。
いましがたでっかい辞書とかリストを作りまくってみたら1.7GBくらい
メモリを消費したところでやばい気がしたのでpython.exeをきりました。
逆に「ここまでならメモリ使っていいよ」って上限をpython処理系に
最初から教えてあげるとかプログラム内から指定するってことは
できるんですかね。それは言語の仕様の外?あくまで言語としては
例外が投げられるよってところまで?
0771デフォルトの名無しさん
2008/06/04(水) 13:38:06設定できるみたいだな
0772デフォルトの名無しさん
2008/06/04(水) 13:51:33"".split("\t") って [""] なんだな。
"".split("\t") を [] と比較していたよ。
Python という言語とはあんまり関係ないかも試練が。
0773デフォルトの名無しさん
2008/06/04(水) 13:54:37以下の不等式が成り立つならメモリをガッツリ爪
メモリの値段 < お前が考えている間の人件費
0774デフォルトの名無しさん
2008/06/04(水) 13:57:38自然にsplit()を実装すれば当然そうなるし、自然な仕様だと思うよ
"a".split("\t") -> ["a"]
なんだから
"".split("\t") -> [""]
でしょう
0775デフォルトの名無しさん
2008/06/04(水) 14:50:50>>> a=["","a|","","b|","c"]
>>> "".join(a).split() # 結合した文字列を list に変換する
['a|b|c']
>>> "".join(a).split('|')
['a', 'b', 'c']
>>> 'a'.split('\t') # tab separator
['a']
>>> 'a'.split() # listに変換する
['a']
>>> 'a'.split('')
ValueError: empty separator
空だとリスト変換と同値 list(S) == S.split() <= 何か便法っぽいかんじ
sepが渡されたら、区切ってリスト化する…
0776デフォルトの名無しさん
2008/06/04(水) 15:01:59['a']
>>> 'a'.split('b')
['a']
ただ単に、セパレートに失敗してるだけだ
>>> 'a'.split('a')
['', '']
正しいセパレート
>>> 'aaa'.split('a') 分割
['', '', '', '']
>>> 'katana'.split('a') 分割
['k', 't', 'n', '']
>>> 'akasatana'.split('a') 分割
['', 'k', 's', 't', 'n', '']
0777デフォルトの名無しさん
2008/06/04(水) 15:20:34[""]
>>> 'a'.split('a') 分割成功。塊二つ
['', '']
分割したら、その結果、いくつに分かれるかか…
なんかよく考えてみるややこしいな
0778772
2008/06/04(水) 16:28:03まぁ当たり前の仕様といえばそうだけど。
split したものを join したら必ず元に戻るという保証はあるわけか。
ところで、UTF-8で円コーディングされてるJSON形式のデータって、
Pythonでもそのままパースできるよね?タブ区切りのデータ処理
できるようにしたら、JSON形式でも突っ込む予定ありだからよろしく
って言われた。
0779デフォルトの名無しさん
2008/06/04(水) 16:55:06最初から教えてあげるとかプログラム内から指定するってことはできるんです
0780デフォルトの名無しさん
2008/06/04(水) 17:02:380781デフォルトの名無しさん
2008/06/04(水) 17:13:420782デフォルトの名無しさん
2008/06/04(水) 17:25:43それだけっすか?
Pythonって記号が少ないですね。
0783デフォルトの名無しさん
2008/06/04(水) 18:03:58なにがしたいの? (それはOSの仕事だと思うヨ)
0784デフォルトの名無しさん
2008/06/04(水) 19:17:21779じゃないけど、ヒープが実メモリに収まっているうちにガベコレを走らせたい
とかそういう需要はあるかと。ってもpythonだとリファレンスカウントか。
0785デフォルトの名無しさん
2008/06/04(水) 22:50:10hoge['hoge%d' % i] = 'fuga%d'
0786デフォルトの名無しさん
2008/06/04(水) 22:58:03for j in xrange(10):
for i in xrange(10**j):
hoge['hoge%d' % i] = 'fuga%d'
print j, len(hoge)
0787デフォルトの名無しさん
2008/06/04(水) 23:07:530788デフォルトの名無しさん
2008/06/05(木) 02:11:47Cの{}さえも邪魔とか
0789デフォルトの名無しさん
2008/06/05(木) 02:57:420790デフォルトの名無しさん
2008/06/05(木) 08:22:540791デフォルトの名無しさん
2008/06/05(木) 15:30:45括弧なんて飾りです!
0792デフォルトの名無しさん
2008/06/05(木) 16:30:24使ってると見慣れてくるもんなんだろうか。エディタで色分けしてるのかな。
0793デフォルトの名無しさん
2008/06/05(木) 16:37:020794デフォルトの名無しさん
2008/06/05(木) 16:38:440795デフォルトの名無しさん
2008/06/05(木) 18:16:380796デフォルトの名無しさん
2008/06/05(木) 18:23:38IDLE とか Emacs の Python モードならスペース4個のインデントを一括で入力したり削除したりできるよ。
0797デフォルトの名無しさん
2008/06/05(木) 19:14:170798デフォルトの名無しさん
2008/06/05(木) 19:41:44オープンソース用コードがスペース4個、
タブを使ったコードは俺のコードじゃない、とか言ってたな。
0799デフォルトの名無しさん
2008/06/05(木) 20:22:19タブがスペース何個に相当するかまちまちだから
いっそのことタブは使わないようにしたって書いていた
0800デフォルトの名無しさん
2008/06/05(木) 20:24:430801デフォルトの名無しさん
2008/06/05(木) 22:40:280802デフォルトの名無しさん
2008/06/05(木) 23:19:160803デフォルトの名無しさん
2008/06/05(木) 23:20:210804デフォルトの名無しさん
2008/06/05(木) 23:30:19軽いエディタないかな?
0805デフォルトの名無しさん
2008/06/05(木) 23:34:32Emacs の Python モードなら
# -*- coding: sjis; py-indent-offset: 2 -*-
とかすればオケ。IDLE では効かなかった。
0806デフォルトの名無しさん
2008/06/05(木) 23:45:130807デフォルトの名無しさん
2008/06/05(木) 23:54:223点
0808デフォルトの名無しさん
2008/06/05(木) 23:54:280809デフォルトの名無しさん
2008/06/05(木) 23:56:27いれるとどうなるんですか?
0810デフォルトの名無しさん
2008/06/06(金) 00:08:13途中にコメント行があるとインデント
うまく認識してくれんかったんだよな…
0811デフォルトの名無しさん
2008/06/06(金) 02:11:480812デフォルトの名無しさん
2008/06/06(金) 05:33:40色分けがおかしくなるなぁ。
0813デフォルトの名無しさん
2008/06/06(金) 08:51:18これ使ってる人あんまりいないみたいだけど
なんで?
0814デフォルトの名無しさん
2008/06/06(金) 09:11:00「Plone又はZope環境で稼働するプログラム。」
↑が原因じゃない?
海外だとplone人気らしいけど、日本だとほとんど聞かないし。
0815デフォルトの名無しさん
2008/06/06(金) 09:17:22面倒だから " は偶数回使うことにしている
0816デフォルトの名無しさん
2008/06/06(金) 09:29:31自分はそうしてる
千里の道も一歩から
千個のレスも一個から
自分で出来ることから始めるしかないと思う
0817デフォルトの名無しさん
2008/06/06(金) 11:01:220818デフォルトの名無しさん
2008/06/06(金) 11:11:25たまにviで小物をかき捨てるときはスペース1つ。
0819デフォルトの名無しさん
2008/06/06(金) 11:37:12まあ、vi系だとindent/dedentって^D,^Tや<<,>>でやるから
あまり意識することは無いが
vimじゃないviは最近使ったことが無いが、expand通しとかないと怪しいかな
0820デフォルトの名無しさん
2008/06/06(金) 11:55:270821デフォルトの名無しさん
2008/06/06(金) 13:37:13for fugafuga in sinesine:
hagehage
def hogehoge:
for fugafuga in sinesine:
hagehage
0822デフォルトの名無しさん
2008/06/06(金) 14:29:15for fugafuga in sinesine:
hagehage
0823デフォルトの名無しさん
2008/06/06(金) 16:41:21def するんだ www
0824デフォルトの名無しさん
2008/06/06(金) 16:44:110825デフォルトの名無しさん
2008/06/07(土) 00:19:310826デフォルトの名無しさん
2008/06/07(土) 00:34:190827デフォルトの名無しさん
2008/06/07(土) 00:40:07こんな馬鹿初めて見た
0828デフォルトの名無しさん
2008/06/07(土) 00:40:580829デフォルトの名無しさん
2008/06/07(土) 00:43:080830デフォルトの名無しさん
2008/06/07(土) 01:02:05プロポーショナルフォントで書かれてたな
0831デフォルトの名無しさん
2008/06/07(土) 01:13:57最高に頭の悪い発言をしてくださいinム板(XII)
http://pc11.2ch.net/test/read.cgi/tech/1179394713/
0832デフォルトの名無しさん
2008/06/07(土) 01:19:26これを 5, 3, 1 の部分で sort して
fuga = ['shine', 'fuga', 'hage']
みたいな出力を欲しいのですが
sorted(hoge)
で合ってるのでしょうか?
0833デフォルトの名無しさん
2008/06/07(土) 01:20:52英文にContras、日本語はメイリオを同幅にしてるのを使っている。
0834デフォルトの名無しさん
2008/06/07(土) 01:22:21○Consolas
0835デフォルトの名無しさん
2008/06/07(土) 01:26:410836デフォルトの名無しさん
2008/06/07(土) 01:30:37>>> from operator import itemgetter
>>> hoge = {'hage':5, 'fuga':3, 'shine':1}
>>> map(itemgetter(0), sorted(hoge.iteritems(), key=itemgetter(1)))
['shine', 'fuga', 'hage']
0837デフォルトの名無しさん
2008/06/07(土) 01:30:45できました
ありがとうございました
0838デフォルトの名無しさん
2008/06/07(土) 01:31:38>>> sorted([(x,y) for x,y in hoge.iteritems()], lambda x,y: x[1]-y[1])
[('shine', 1), ('fuga', 3), ('hage', 5)]
>>> hoge = {'hage':5, 'fuga':3, 'shine':4}
>>> sorted([(x,y) for x,y in hoge.iteritems()], lambda x,y: x[1]-y[1])
[('fuga', 3), ('shine', 4), ('hage', 5)]
0839デフォルトの名無しさん
2008/06/07(土) 01:36:32x>yでもx<yでも結果変わらないですorz
>>836
>>838
ありがとうございます
あとで値も使う予定だったので
これでよさそうです
>>> hoge = {'hage':5, 'fuga':3, 'shine':1}
>>> sorted(hoge.iteritems(), lambda x,y: x[1]-y[1])
[('shine', 1), ('fuga', 3), ('hage', 5)]
>>> hoge = {'hage':5, 'fuga':3, 'shine':4}
>>> sorted(hoge.iteritems(), lambda x,y: x[1]-y[1])
[('fuga', 3), ('shine', 4), ('hage', 5)]
0840デフォルトの名無しさん
2008/06/07(土) 01:39:54それならこれでいいんじゃないの?
>>> hoge = {'hage':5, 'fuga':3, 'shine':1}
>>> sorted(hoge.iteritems(), key=itemgetter(1))
[('shine', 1), ('fuga', 3), ('hage', 5)]
>>> hoge = {'hage':5, 'fuga':3, 'shine':4}
>>> sorted(hoge.iteritems(), key=itemgetter(1))
[('fuga', 3), ('shine', 4), ('hage', 5)]
0841デフォルトの名無しさん
2008/06/07(土) 01:42:28ありがとうございます
lambda の方が import 書かなくて良いのと他にも融通利きそうなので・・・
0842838
2008/06/07(土) 02:24:37>>> [x[0] for x in sorted(hoge.iteritems(), lambda x,y: x[1]-y[1])]
['shine', 'fuga', 'hage']
>>> hoge = {'hage':5, 'fuga':3, 'shine':4}
>>> [x[0] for x in sorted(hoge.iteritems(), lambda x,y: x[1]-y[1])]
['fuga', 'shine', 'hage']
のつもりで変なの上げてたw
なにやってんだ俺
>>839
lambdaより>>836>>840の方が良いような気がする
理由はうまく説明出来ないけどw
0843デフォルトの名無しさん
2008/06/07(土) 03:00:43馬鹿と賢い人が共存していて面白い。
0844デフォルトの名無しさん
2008/06/07(土) 05:56:11http://pc11.2ch.net/test/read.cgi/tech/1189089806/
0845デフォルトの名無しさん
2008/06/07(土) 09:33:160846デフォルトの名無しさん
2008/06/07(土) 20:00:39このクッキーってどっかに保存されてるの?
0847デフォルトの名無しさん
2008/06/07(土) 20:23:390848デフォルトの名無しさん
2008/06/07(土) 20:35:49どのクラス使ってるのか知らんが、
saveメソッドを呼ばなきゃ保存されないと思う。
0849デフォルトの名無しさん
2008/06/07(土) 20:39:210850デフォルトの名無しさん
2008/06/07(土) 22:04:27不揮発デバイスへの
0851デフォルトの名無しさん
2008/06/07(土) 23:45:11遊んでるんですが、書式を覚えるのが面倒で、やっぱPythonから
使えんかのう?と思ったわけです。graphvizをインストールした
フォルダに"gv_test.py"があって、
import gv
g = gv.digraph("G")
n = gv.node(g,"hello")
m = gv.node(g,"world")
e = gv.edge(n,m)
gv.layout(g, "dot")
gv.render(g, "png", "gv_test.png")
gv.rm(g)
などと書いてあるんですが、gvというモジュールがあるんですかね?
webで探してもさっぱり見つからんのですが、誰か知ってる人
いませんか?
0852デフォルトの名無しさん
2008/06/07(土) 23:52:290853デフォルトの名無しさん
2008/06/08(日) 00:00:090854デフォルトの名無しさん
2008/06/08(日) 00:11:270855デフォルトの名無しさん
2008/06/08(日) 00:21:53でもwindows用のバイナリは無さそうな感じだ…
0856デフォルトの名無しさん
2008/06/08(日) 04:25:24graphviz-working.tar.gz
なんの問題もないと思うけど
0857デフォルトの名無しさん
2008/06/08(日) 09:37:24Linuxでだけど。
Windows用のバイナリは無いのか
0858デフォルトの名無しさん
2008/06/08(日) 10:03:410859デフォルトの名無しさん
2008/06/08(日) 10:17:28ttp://www.graphviz.org/Download_windows.php
0860デフォルトの名無しさん
2008/06/08(日) 10:38:380861デフォルトの名無しさん
2008/06/08(日) 10:49:010862デフォルトの名無しさん
2008/06/08(日) 11:02:27ttp://yapgvb.sourceforge.net/
0863デフォルトの名無しさん
2008/06/08(日) 11:05:420864デフォルトの名無しさん
2008/06/08(日) 11:12:480865デフォルトの名無しさん
2008/06/08(日) 11:20:470866デフォルトの名無しさん
2008/06/08(日) 11:23:050867デフォルトの名無しさん
2008/06/08(日) 11:32:28入ってない
>>863
それもWindowsで動かないw
>>865
PyGraphviz前庭のようなので同上
0868デフォルトの名無しさん
2008/06/08(日) 11:33:400869デフォルトの名無しさん
2008/06/08(日) 11:37:03コンパイラ・・・
0870デフォルトの名無しさん
2008/06/08(日) 11:46:56最近の (22以降?) emacs に標準でついてくる python.el なら
triple quoted string の色づけをきちんとしてくれるみたいだね.
個人的には python-mode.el の方がpdb の対応とかで便利だから
色づけ設定の部分だけ python.el からマージしたものを使ってる
0871デフォルトの名無しさん
2008/06/08(日) 12:03:07http://groups.google.com/group/pygraphviz-discuss/topics
やってみた
setup.py の lib と include を graphviz のある場所にして
python setup.py build -c mingw32
でいけそう
0872デフォルトの名無しさん
2008/06/08(日) 12:03:22VC Express か Windows SDK でコンパイルできるかなっ♪
0873デフォルトの名無しさん
2008/06/08(日) 12:07:21それぞれ全然別に作られてるってこと?
0874デフォルトの名無しさん
2008/06/08(日) 12:07:42running install
running build
running build_py
creating build
creating build\lib.win32-2.5
creating build\lib.win32-2.5\pygraphviz
copying pygraphviz\agraph.py -> build\lib.win32-2.5\pygraphviz
copying pygraphviz\graphviz.py -> build\lib.win32-2.5\pygraphviz
copying pygraphviz\release.py -> build\lib.win32-2.5\pygraphviz
copying pygraphviz\__init__.py -> build\lib.win32-2.5\pygraphviz
creating build\lib.win32-2.5\pygraphviz\tests
copying pygraphviz\tests\test.py -> build\lib.win32-2.5\pygraphviz\tests
copying pygraphviz\tests\__init__.py -> build\lib.win32-2.5\pygraphviz\tests
copying pygraphviz\tests\attributes.txt -> build\lib.win32-2.5\pygraphviz\tests
copying pygraphviz\tests\graph.txt -> build\lib.win32-2.5\pygraphviz\tests
copying pygraphviz\tests\layout_draw.txt -> build\lib.win32-2.5\pygraphviz\tests
running build_ext
error: Python was built with Visual Studio 2003;
extensions must be built with a compiler than can generate compatible binaries.
Visual Studio 2003 was not found on this system. If you have Cygwin installed,
you can try compiling with MingW32, by passing "-c mingw32" to setup.py.
0875デフォルトの名無しさん
2008/06/08(日) 12:20:49python setup.py build -c mingw32
library_path=C:/Program Files/Graphviz/lib
include_path=C:/Program Files/Graphviz/include/graphviz
running build
running build_py
running build_ext
building 'pygraphviz._graphviz' extension
C:\Program Files\CodeBlocks\bin\gcc.exe -mno-cygwin -mdll -O -Wall "-IC:/Program Files/Graphviz/include/graphviz" -IC:\Python25\include -IC:\Python25\PC -c pygraphviz/graphviz_wrap.c -o build\temp.win32-2.5\Release\pygraphviz\graphviz_wrap.o
writing build\temp.win32-2.5\Release\pygraphviz\_graphviz.def
0876デフォルトの名無しさん
2008/06/08(日) 12:21:45File "setup.py", line 171, in <module>
package_data = package_data,
File "C:\Python25\lib\distutils\core.py", line 151, in setup
dist.run_commands()
File "C:\Python25\lib\distutils\dist.py", line 974, in run_commands
self.run_command(cmd)
File "C:\Python25\lib\distutils\dist.py", line 994, in run_command
cmd_obj.run()
File "C:\Python25\lib\distutils\command\build.py", line 112, in run
self.run_command(cmd_name)
File "C:\Python25\lib\distutils\cmd.py", line 333, in run_command
self.distribution.run_command(command)
File "C:\Python25\lib\distutils\dist.py", line 994, in run_command
cmd_obj.run()
File "C:\Python25\lib\distutils\command\build_ext.py", line 290, in run
self.build_extensions()
File "C:\Python25\lib\distutils\command\build_ext.py", line 416, in build_extensions
self.build_extension(ext)
File "C:\Python25\lib\distutils\command\build_ext.py", line 513, in build_extension
target_lang=language)
0877デフォルトの名無しさん
2008/06/08(日) 12:22:12extra_preargs, extra_postargs, build_temp, target_lang)
File "C:\Python25\lib\distutils\cygwinccompiler.py", line 246, in link
target_lang)
File "C:\Python25\lib\distutils\unixccompiler.py", line 214, in link
libraries)
File "C:\Python25\lib\distutils\ccompiler.py", line 1242, in gen_lib_options
opt = compiler.runtime_library_dir_option (dir)
File "C:\Python25\lib\distutils\unixccompiler.py", line 278, in runtime_library_dir_option
compiler = os.path.basename(sysconfig.get_config_var("CC"))
File "C:\Python25\lib\ntpath.py", line 200, in basename
return split(p)[1]
File "C:\Python25\lib\ntpath.py", line 164, in split
d, p = splitdrive(p)
File "C:\Python25\lib\ntpath.py", line 119, in splitdrive
if p[1:2] == ':':
TypeError: 'NoneType' object is unsubscriptable
0878デフォルトの名無しさん
2008/06/08(日) 12:37:05HTMLParserでtarget parserて使えないのかな
class SimpleParserTarget(object):
def __init__(self, element_factory=None, parser=None):
pass
def close(self):
pass
def comment(self, comment):
pass
def data(self, data):
pass
def start(self, tag, attrs, nsmap=None):
pass
def end(self, tag):
pass
こんなふうにビルダを作って(実際にはtreeをビルドせずに中身をdebug print
するだけの奴を作ったのだけれど)
mytarget = SimpleParserTarget()
parser = lxml.etree.HTMLParser(target = mytarget)
result = lxml.etree.parse(input, parser)
とかやっても、パースの途中に途中でlxml.etree.XMLSyntaxErrorがraiseされてしまう
target parserを指定しないで同じことをやるとうまくいくんだけど
0879878
2008/06/08(日) 12:39:29超短い入力だとtarget parser版も機能するみたいだったんだけど
まともな文書を食わせたときに
target parserを使わないケース(通常のTreeBuilderが使われてるケース)では
上手くいっても、カスタムtarget parser版だとエラーになったりするんだわ
0880878
2008/06/08(日) 14:24:17内部でSaxParserContextを継承したTargetParserContextがParserContextとして
使われるのが原因くさい
(多分)XMLとしてwell-formedでないと判定されるようなドキュメントだと
TargetParserContext#handleParseResult()で落ちる
Python側から弄れない部分だし、これはどうしようもないかなー
0881デフォルトの名無しさん
2008/06/08(日) 23:27:07マルチスレッドなコードが Windows と Linux のどちらでも
動くようにポータブルに書けるのでしょうか?
0882デフォルトの名無しさん
2008/06/09(月) 00:06:38まーそう。VMで動いてるのもあるし。
でもあくまでマルチスレッドなプログラミングモデルがつかえるだけで
アルチコアをフルに活用とかは期待しない方がいいよ。
0883デフォルトの名無しさん
2008/06/09(月) 03:11:19windowsやlinuxのAPIを直接たたかないとだめですかね?
もしGUIライブラリの範囲で可能でしたら、どのライブラリならできるのかも教えていただきたいです。
0884デフォルトの名無しさん
2008/06/09(月) 03:18:310885デフォルトの名無しさん
2008/06/09(月) 03:29:240886デフォルトの名無しさん
2008/06/09(月) 03:46:49ほんとですか!?ありがとうございます!。ちょっと今日からやってみたいと思います。
0887デフォルトの名無しさん
2008/06/10(火) 05:42:460888デフォルトの名無しさん
2008/06/10(火) 07:19:50z'Zr─〜''''彡 ̄ ̄⌒ミーv─ -tf'.z
 ̄`'''''─ム/'⌒' ⌒ヽ_>'''  ̄ ̄
/ 彡、 ノノ:::
/ _,;彡'´⌒(´ ミ}:::
_/ フ:::: Y ヽ:::
(⌒こ))≧::: jfう》:::
 ̄:::::::::: (_ノ::::::
::::::
0889デフォルトの名無しさん
2008/06/10(火) 10:30:38http://www.python.org/dev/bazaar/
0890デフォルトの名無しさん
2008/06/10(火) 16:37:35こんなとこまでくんなwwww
0891デフォルトの名無しさん
2008/06/10(火) 18:37:16このタイプ中にこのライブラリは、こういったものが扱えますと教えてくたれりするUNIX系のソフトって
ありませんか?
できれば、Xterm上でできるとうれしいんだけどなあ
0892デフォルトの名無しさん
2008/06/10(火) 18:50:100893デフォルトの名無しさん
2008/06/10(火) 19:10:33さんくす
みてみます
0894デフォルトの名無しさん
2008/06/10(火) 19:30:09emacs
vim
0895デフォルトの名無しさん
2008/06/10(火) 19:36:15Symbol's function definition is void: py-symbol-near-point
って言われてしまうんですがなぜですか?
0896デフォルトの名無しさん
2008/06/10(火) 20:13:58vimを使っているんですが、vimでできますか?
0897デフォルトの名無しさん
2008/06/10(火) 22:07:07891はエディタを聞いてるんじゃなくて、IDLEのことを言ってるんじゃないの?
っていうか、いま知ったけど、IDLEでソースの編集もできるんだな。
しばらくこれ使ってみるか。
0898デフォルトの名無しさん
2008/06/11(水) 06:09:410899デフォルトの名無しさん
2008/06/11(水) 07:14:480900デフォルトの名無しさん
2008/06/11(水) 07:44:47IDLE (Python GUI) は Linux 等でも動くよ。
0901デフォルトの名無しさん
2008/06/11(水) 08:01:40自分は PyDev を使ってる.
でも PyDev の補完がいまいちうまく働いてくれない.
これって,import したモジュールを全部パースしまくって
メンバとか推測しているの?
でもメンバって動的に付け加えられるよね?
動かしてみなけりゃわからないよな.
0902デフォルトの名無しさん
2008/06/11(水) 08:02:370903デフォルトの名無しさん
2008/06/11(水) 10:43:30python有効になってるvim7だとオムニ補完が使えるはず
pythonのファイルを開いてみて
s = "foo"
s.
まで打ってからC-X C-Oしてみ
正直もっさりしてて動作が軽快とは言いがたいから、あまり俺はつかわんけど
勿論C-Nによる前方参照補完とかはいつでも使える
0904デフォルトの名無しさん
2008/06/11(水) 17:23:58... 999. %(name)s %(year)d/%(month)d/%(day)d
... %(__name__)s
... '''
>>> for key in re.findall('%\((.*?)\)d', MULTI):
... print vars()[key]
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
KeyError: 'name)s %(year'
どう書けば良いですか?否定の文字列クラスみたいなのが
書きたいです…
0905デフォルトの名無しさん
2008/06/11(水) 17:28:490906905
2008/06/11(水) 17:31:550907デフォルトの名無しさん
2008/06/11(水) 18:06:03�d
>>> MULTI='''
... %(no)d. %(name)s %(year)d/%(month)d/%(day)d
... %(__name__)s
... '''
>>>
>>> for key in re.findall('(?!.*s)%\((.*?)\)d', MULTI):
... print key
...
year
month
day
>>> for key in re.findall('%\((.*?)\)d', MULTI):
... print key
...
no
name)s %(year
month
day
KeyError: 'name)s %(year' だから
[^\(\)]*?でparenを弾くか、(\w+)で空白を弾くか
いう風に考えればいいと。thxっす
0908デフォルトの名無しさん
2008/06/12(木) 00:35:52コマンドラインで動かしたときに、引数が入力されているか確認する方法について
聞きたいです。
下のソースは、コマンドラインで引数が入力されていれば判定時に"o"と入力され、
何も入力されていない場合は、初期値である0を入れ、判定時に"x"を
入力します。
# coding: utf-8
import getopt, sys
def test(a=0):
if a == 0:
print "o"
else:
print "x"
test(sys.argv[1])
引数を入れないで実行して出たエラーは「list index out of range」
この条件で、引数に初期値を設定する方法はないでしょうか。
お願いします。
0909デフォルトの名無しさん
2008/06/12(木) 00:37:350910デフォルトの名無しさん
2008/06/12(木) 00:59:36入力? 文字のprintは普通、出力って言うだろ
0911デフォルトの名無しさん
2008/06/12(木) 01:00:50なにいってんの?w
0912デフォルトの名無しさん
2008/06/12(木) 01:28:13sys.argv[1] を実行しても「list index out of range」とならないための条件は
len(sys.argv) が 2 以上のときだから
if len(sys.argv) == 2:
test(sys.argv[1])
else:
test()
のようにすればいいよ。
プログラムを書いていてエラーが起こったら、そのエラーが起こる理由を考えて
エラーを回避するための条件文を入れていくんだよ。
0913デフォルトの名無しさん
2008/06/12(木) 01:41:22(stdout, stdin, stderr) = popen2.popen3(cmd)
lines = [re.sub('\r|\n', '', line) for line in stdout]
line = '%s %s %s\n' % (lines[2], lines[0], lines[1])
print line,
outf = open(log, 'ab+')
outf.write(line)
outf.close()
time.sleep(300)
あるコマンドを実行してその標準出力の内容の一部を
画面とログファイルに出力し続けるプログラムなのですが、
3〜4日目くらいに止まってしまいます。
Tracebackは
line = '%s %s %s\n' % (lines[2], lines[0], lines[1])
IndexError: list index out of range
です。
ガベコレを勝手に期待していたのですが、
whileの中だとだめとか、
何かcloseしないといけないものを忘れてるとか、
良く分からないのでご存知の方いらっしゃったら
止まらないようにする方法を教えてください。
0914デフォルトの名無しさん
2008/06/12(木) 01:46:33stdout の内容が3行未満(lines の要素数が3未満)だから
> IndexError: list index out of range
となるのだと思われ。つまり cmd が想定外の出力を返している。
0915デフォルトの名無しさん
2008/06/12(木) 01:47:100916デフォルトの名無しさん
2008/06/12(木) 01:49:28造って満足して実行させてたら
止まってたので原因を錯覚してました。
ありがとうございます。
0917デフォルトの名無しさん
2008/06/12(木) 08:03:100918デフォルトの名無しさん
2008/06/12(木) 08:14:370919デフォルトの名無しさん
2008/06/12(木) 08:52:000920デフォルトの名無しさん
2008/06/12(木) 09:30:370921デフォルトの名無しさん
2008/06/12(木) 09:42:00ttp://www.amazon.co.jp/dp/4777513688/
0922デフォルトの名無しさん
2008/06/12(木) 11:07:220923デフォルトの名無しさん
2008/06/12(木) 11:13:24それは単に俺がルビーでの扱い方に慣れて無いから?
0924デフォルトの名無しさん
2008/06/12(木) 11:38:58ttp://d.hatena.ne.jp/seiunsky/20080417/1208454191
0925デフォルトの名無しさん
2008/06/12(木) 12:56:19scipy,numpy等の数値計算周りが便利
0926デフォルトの名無しさん
2008/06/12(木) 13:09:16PC初心者(英語圏の人)からプロまで扱えるように設計されている
だまされたと思って、「初めてのPython」を買って、勉強するよろし
0927デフォルトの名無しさん
2008/06/12(木) 13:42:08Rubyと違って、プログラミング言語だ。
(Rubyはプログラミング言語っぽいオモチャ)
0928デフォルトの名無しさん
2008/06/12(木) 13:46:360929デフォルトの名無しさん
2008/06/12(木) 13:50:41苦笑しながらGuidoはこう言った。
Ruby is just a toy, indeed.
0930デフォルトの名無しさん
2008/06/12(木) 14:07:180931デフォルトの名無しさん
2008/06/12(木) 15:00:160932デフォルトの名無しさん
2008/06/12(木) 15:29:420933デフォルトの名無しさん
2008/06/12(木) 17:21:390934デフォルトの名無しさん
2008/06/12(木) 17:32:450935デフォルトの名無しさん
2008/06/12(木) 17:45:04http://www.rubyist.net/~matz/20080126.html
0936デフォルトの名無しさん
2008/06/12(木) 18:08:16Rubyで通信内容のdebuglevel設定とかできるようになったんかな?
0937デフォルトの名無しさん
2008/06/12(木) 18:18:17とりあえず、プログラミングに不慣れなら、総当たりでいいんじゃないの?
>>946さんの質問に答える事からはじまる
0938デフォルトの名無しさん
2008/06/12(木) 18:22:220939デフォルトの名無しさん
2008/06/12(木) 18:24:24大体importしたモジュールは勝手に解析してくれるけど
一部うまくいかないモジュールがあるみたい
http://pydev.sourceforge.net/faq.html#code_completion_is_not_working_correctly_for_some
そういうときはPyDEVの設定でPYTHONPATHを確認してみたり
強制読み込みモジュールに指定してみるとうまく動くことがあるらしい
0940デフォルトの名無しさん
2008/06/12(木) 18:25:36初めてにしてはゴツすぎるんですけど
0941デフォルトの名無しさん
2008/06/12(木) 18:27:02誤爆ついで、Pythonでこの問題を解いてみてください
環境は、問いません
※5分以内に組める人は、空気読んでください
941 名前:デフォルトの名無しさん[sage] 投稿日:2008/06/12(木) 18:04:58
今日の課題がうまくいかなかったので、教えてほしいです。
課題は1から100までの素数をすべて求めるプログラムの作成です。
for文を使うのですが、よくわかりませんでした。ご返答よろしくお願いします。ちなみにLinuxで作成しなければいけません。
C言語なら俺に聞け(入門篇) Part 29
http://pc11.2ch.net/test/read.cgi/tech/1212329099/
0942デフォルトの名無しさん
2008/06/12(木) 18:29:480943デフォルトの名無しさん
2008/06/12(木) 18:31:26一般人がプログラムソースを読んだり、そのソースに手を加えたりしないでしょ
その必要性に迫れたときにいじるわけで、このくらいの敷居は、低いと思うよ
あとその敷居の高さはプログラミングの敷居の高さだと思うなあ
0944デフォルトの名無しさん
2008/06/12(木) 18:33:58a = [2]
for i in xrange(3,100):
x = 0
f = False
while a[x]*a[x] < i:
if i%a[x]==0:
f = True
x += 1
if not f:
a.append(i)
print a
0945デフォルトの名無しさん
2008/06/12(木) 18:34:450946デフォルトの名無しさん
2008/06/12(木) 18:43:370947デフォルトの名無しさん
2008/06/12(木) 18:44:470948デフォルトの名無しさん
2008/06/12(木) 19:03:11C++Primerのごつさには及ばん
0949デフォルトの名無しさん
2008/06/12(木) 19:25:55ああ
ttp://4topcoder.blogspot.com/2007/07/python-generator.html
だ
0950デフォルトの名無しさん
2008/06/12(木) 19:59:05そんなのあるんだね
初めて知った
手順は、なんとなくわかったけど、アルゴリズムで書ける自信がない
0951デフォルトの名無しさん
2008/06/12(木) 20:03:050952デフォルトの名無しさん
2008/06/12(木) 21:02:450953デフォルトの名無しさん
2008/06/12(木) 21:23:450954デフォルトの名無しさん
2008/06/12(木) 23:04:330955デフォルトの名無しさん
2008/06/12(木) 23:14:100956デフォルトの名無しさん
2008/06/13(金) 00:37:360957デフォルトの名無しさん
2008/06/13(金) 04:23:17Pythonのお勉強 Part 27
http://pc11.2ch.net/test/read.cgi/tech/1213298522/
0958デフォルトの名無しさん
2008/06/13(金) 04:47:35そこに直接描画したり逆にそこの色の情報調べたり出来ますか?
0959デフォルトの名無しさん
2008/06/13(金) 08:22:260960デフォルトの名無しさん
2008/06/13(金) 08:32:02どうせ大して賢くないんでしょう
0961デフォルトの名無しさん
2008/06/13(金) 08:42:242chに精神安定を求めるほど腐ってないよ。賢いし偉いし年収も高いから。
0962デフォルトの名無しさん
2008/06/13(金) 09:48:130963デフォルトの名無しさん
2008/06/13(金) 09:55:24フラグの配列の初期化ってPythonだとどう実装するのが一般的?
俺が思いついたのは、こんな感じ。
a = map(lambda x: x == '0', '0'*100)
a = [True for x in range(0, 100)]
a = []; a[:] = itertools.repeat(True, 100)
>>944
while a[x]*a[x] <= i: にしないと素数の2乗の値も入ってしまう。
ところで、このwhileの部分をifilter使ってforで書き直すと、えらい遅くなるね。
100000まで計算させてwhileだと0.18秒、ifilterだと13秒かかる。
ifilter使った方がPythonらしいコードだけど、この速度差は厳しいな。
0964デフォルトの名無しさん
2008/06/13(金) 10:13:52同じく C-API 上でこのクラスA を継承したクラスBを定義する方法が解説しているページありませんか?
単にクラスを定義するだけなら標準ドキュメントを見ればすぐわかるけど、
別のクラスを継承するやりかたがよくわかりません。
速度が必要な部分なのでなるべくスクリプト側ではなくCで実装したいのです。。。
0965デフォルトの名無しさん
2008/06/13(金) 10:15:480966デフォルトの名無しさん
2008/06/13(金) 10:27:54一般的かは知らんが、a=[True]*100 で済ます。
0967デフォルトの名無しさん
2008/06/13(金) 10:49:47外してたらスルーしてね
2.1.4 Subclassing other types
ttp://docs.python.org/ext/node25.html
0968デフォルトの名無しさん
2008/06/13(金) 10:52:40リストに対して乗算って使えたのか。知らなかった。
リストを同じ値で初期化するなら、これが一番綺麗か。
あと、963のa[:]のとこは、a=list(itertools.repeat(True, 100))の方がスッキリするね。
0969デフォルトの名無しさん
2008/06/13(金) 11:35:45あと963は range(0, 100) より range(100) が普通かと。
0970デフォルトの名無しさん
2008/06/13(金) 12:30:13GUIライブラリは?
WindowsのAPIを直接使うなら「Win32API質問箱」で聞いて
win32api,ctypesで書いた方がいい
0971デフォルトの名無しさん
2008/06/13(金) 12:34:45入門書嫁
0972デフォルトの名無しさん
2008/06/13(金) 12:36:34Pythonのソースの中にあるxxsubtype.cは?
http://svn.python.org/view/python/trunk/Modules/xxsubtype.c
0973デフォルトの名無しさん
2008/06/13(金) 12:38:13なるほど。同じ1次元のリストに対する参照が作られるだけなのか。
a=[[1]*5]*5
a[0][0]=0
ってやってみて理解した。
ググってみたけど、多次元のリストを簡単に初期化する方法はないみたいね。
0974デフォルトの名無しさん
2008/06/13(金) 13:39:48import numpy
a = numpy.ones((5,5),int)
0と1での初期化は専用の関数が用意されているが、それ以外の
値で初期化したいのなら、単に
a = numpy.zeros((5,5),int) + 100
とかすればいい
0975デフォルトの名無しさん
2008/06/13(金) 13:51:14なんとかなりそうです
ありがとうございました!
0976デフォルトの名無しさん
2008/06/13(金) 14:08:562次元以上の場合は * とリスト内包の組み合わせが一番簡単だと思う。
a = [[1] * 5 for i in range(5)]
0977デフォルトの名無しさん
2008/06/13(金) 14:17:31オタは二次元しか受け付けないだろJK
0978デフォルトの名無しさん
2008/06/13(金) 18:04:57目につくけど、なんでわざわざ「表記」をつけるんだろうと思う。
書籍とかでも結構ある。訳語としておかしいと思うんだけど。
何でこんな変な訳が流行ったのか理由ご存知のかたいます?
ちなみに英語ではList Comprehension。
0979デフォルトの名無しさん
2008/06/13(金) 18:18:290980デフォルトの名無しさん
2008/06/13(金) 18:25:110981デフォルトの名無しさん
2008/06/13(金) 18:32:08ネット上には用例が少ないけど、set comprehensionの定訳が、集合の内包表記だったから。
0982デフォルトの名無しさん
2008/06/13(金) 19:17:51むしろ重要なのはその言葉が何を意味しているかはっきりと区別できるという言葉本来の役割である
従って、論文なり技術誌なりで最初に使われたそれらしい言葉がそのまま使われるというのはよくある話
理由は皆がいろいろな訳語を使うと紛らわしいから
技術的な側面を持っている以上、必要なのは言葉の綺麗さなどではなくuniqueである事
0983デフォルトの名無しさん
2008/06/13(金) 19:31:110984デフォルトの名無しさん
2008/06/13(金) 19:33:470985デフォルトの名無しさん
2008/06/13(金) 19:33:520986デフォルトの名無しさん
2008/06/13(金) 19:34:56なるほど。ありがとう。
>>982
それはそうではあるけど、リスト内包"表記"が気持ち悪いんですよ
ね。まぁリスト内包でも普通に通じるから、自分でそういう表現使
うときにはちゃんと表記を削って書いて、周りにも強制するように
します。
0987デフォルトの名無しさん
2008/06/13(金) 19:45:07リスト内包という日本語自体も大概変な日本語だし
0988デフォルトの名無しさん
2008/06/13(金) 23:03:42リスト内包表記はないよな。どっから沸いてきたんだって感じ。
>表記
0989デフォルトの名無しさん
2008/06/13(金) 23:09:290990デフォルトの名無しさん
2008/06/13(金) 23:41:030991デフォルトの名無しさん
2008/06/13(金) 23:48:230992デフォルトの名無しさん
2008/06/13(金) 23:49:090993デフォルトの名無しさん
2008/06/13(金) 23:50:150994デフォルトの名無しさん
2008/06/13(金) 23:51:13足してはいかんとは思わないな。「リスト内包」では日本語としておかしいし。
「内包表記」が良い訳だとは思わないけどね。
リスト内包構文くらいの方がいいかね。
そもそも、俺の辞書だと内包の意味だとuncountableとなっているが、
原文はList Comprehensionsと複数形だし、内包という訳も怪しい。
0995デフォルトの名無しさん
2008/06/13(金) 23:51:290996デフォルトの名無しさん
2008/06/13(金) 23:52:010997デフォルトの名無しさん
2008/06/13(金) 23:54:544件中1 - 4件目の検索結果を表示
http://ja.wikipedia.org/%E3%83%AA%E3%82%B9%E3%83%88%E5%86%85%E5%8C%85%E8%A1%A8%E8%A8%98
3件中1 - 3件目の検索結果を表示
0998デフォルトの名無しさん
2008/06/13(金) 23:56:090999デフォルトの名無しさん
2008/06/13(金) 23:56:351000デフォルトの名無しさん
2008/06/13(金) 23:56:5310011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。