Pythonのお勉強 Part 26

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
Python オフィシャルサイト
ttp://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
2デフォルトの名無しさん:2008/04/29(火) 23:47:59
>1
3デフォルトの名無しさん:2008/04/29(火) 23:50:23
初めてのPython 第2版
http://www.amazon.co.jp/dp/4873112109
4デフォルトの名無しさん:2008/04/29(火) 23:53:00
     _
  -「 ̄  |
  | |   |    なんかバギしたら>>1乙でた
 || +|              ありえん(笑)
  .L ‐--‐'ヽ
 |l リV _`   ≡乙
  |cl | ´ヮ ノ/
  .l レ l |
  / | +|
5デフォルトの名無しさん:2008/04/29(火) 23:53:45
6デフォルトの名無しさん:2008/04/30(水) 02:49:36
日本語対応における注意点のようなもの
ttp://python.rdy.jp/wiki.cgi?page=%C6%FC%CB%DC%B8%EC
7デフォルトの名無しさん:2008/04/30(水) 18:39:57
前スレ>>998
2.5ならカリー化できるみたいよ、
http://d.hatena.ne.jp/kei10in/20080408/1207660199
8デフォルトの名無しさん:2008/04/30(水) 20:29:06
くだすれPython(超初心者用)
http://pc11.2ch.net/test/read.cgi/tech/1207878910/
9デフォルトの名無しさん:2008/04/30(水) 21:52:34
【pygame】pythonでゲーム製作【ぱいがめ】
http://pc11.2ch.net/test/read.cgi/gamedev/1126605105/
10デフォルトの名無しさん:2008/04/30(水) 22:44:25
自分の環境で利用できるモジュールの一覧を取得する方法ってありますか?
11デフォルトの名無しさん:2008/04/30(水) 23:15:16
pkgutil.iter_modules
12デフォルトの名無しさん:2008/05/01(木) 02:27:16
>>11
ありがと、ちょう便利。
13デフォルトの名無しさん:2008/05/01(木) 11:14:25
20行程度のコードでクラス作るやつってなんなの?変態?
14デフォルトの名無しさん:2008/05/01(木) 12:08:38
継承してるんだとすればそんなの当たり前だろ
15デフォルトの名無しさん:2008/05/01(木) 12:47:35
>>13
なんともいえない。20行程度なら全ソースを貼ってみ。
16デフォルトの名無しさん:2008/05/01(木) 13:02:04
>>15
お前がやってみろゴミクズが
17デフォルトの名無しさん:2008/05/01(木) 13:13:06
ポカーン....
18デフォルトの名無しさん:2008/05/01(木) 13:14:23
切り返しになって無さ過ぎて、煽りとしても成立してないぞ。
何を見て>>13を書いたのか、君の目撃例を出してみれって話だろう。
君が何を見て言っているのかの提示を、どうやって君の話し相手が「やる」んだ?
19デフォルトの名無しさん:2008/05/01(木) 13:48:09
自己解決しました。
20デフォルトの名無しさん:2008/05/01(木) 14:11:15
若い人はちょっとしたコメントにも全身全霊で反応してくれるので楽しいですの〜
21デフォルトの名無しさん:2008/05/01(木) 14:15:19
オッサンは下水に流れてフナの餌にでもなれ。
22デフォルトの名無しさん:2008/05/01(木) 14:49:37
20行程度貼るのを、そこまで拒否せんでもねえ。
23デフォルトの名無しさん:2008/05/01(木) 15:20:35
1関数500行以上、

っていうヘンテコルールが弊社に存在します
24デフォルトの名無しさん:2008/05/01(木) 15:28:51
自己解決禁止
25デフォルトの名無しさん:2008/05/01(木) 15:31:13
他者解決しました。
26デフォルトの名無しさん:2008/05/01(木) 16:24:42
イケメンハッカーが解決しました。
27デフォルトの名無しさん:2008/05/01(木) 16:35:38
解決禁止
28デフォルトの名無しさん:2008/05/01(木) 16:42:50
自決しました。
29デフォルトの名無しさん:2008/05/01(木) 17:23:20
墓穴しました
30デフォルトの名無しさん:2008/05/01(木) 17:43:53
アナルを開発しました。
31デフォルトの名無しさん:2008/05/01(木) 18:07:12
ほんとにpythonの勉強をしている人達の掲示板とか、有りますか?
32デフォルトの名無しさん:2008/05/01(木) 18:40:07
>>31
このスレの住人がPython勉強してないみたいなこと言うな自己解決しました。
33デフォルトの名無しさん:2008/05/01(木) 19:01:45
ここは雑談スレ
本スレはあっち
34デフォルトの名無しさん:2008/05/01(木) 19:35:12
hello = ["Hello", "こんにちわ", "Здравствуйте", "Buongiorno", "Bonjour"]

みたいなデータを
hello['e'], hello['j'], hello['r'], hello['i'], hello['f']

みたいにアクセスするにはどうしたら良いでショッカー
35デフォルトの名無しさん:2008/05/01(木) 19:53:37
近所の本屋に jython 本が入荷してあった。
ちゃんと import になってたぞ。残念な気分になった。
36デフォルトの名無しさん:2008/05/01(木) 19:55:51
>>35
>ちゃんと import になってたぞ

じゃあ買うのよすわ
37デフォルトの名無しさん:2008/05/01(木) 19:56:19
工エエェェ(´д`)ェェエエ工
38デフォルトの名無しさん:2008/05/01(木) 20:02:33
imprtの方は希少価値がついたな
39デフォルトの名無しさん:2008/05/01(木) 20:03:56
>>35
イケメンハッカーは神になりそこねたと思うよ.
40デフォルトの名無しさん:2008/05/01(木) 20:13:52
>>35
自己解決したんですね。
41デフォルトの名無しさん:2008/05/01(木) 20:19:27
>>34について、興味がわいたので、
class hoge(list):
  def __getitem__(self,x):
    if x == 'e':
      return self[0]

としても、リストのインデクス0番目が帰ってこない。
print x及びprint type(x)とすると、
入力した値と<type 'str'>と帰ってくるんだが、どういう現象?
42デフォルトの名無しさん:2008/05/01(木) 20:27:16
なんで突然レス途切れるんだよ orz
43デフォルトの名無しさん:2008/05/01(木) 20:29:00
>>41
self[0]を使うとhoge.__getitem__がもう一度呼ばれるので
return list.__getitem__(self, 0)じゃないと駄目

>>34は普通に辞書を作った方がいいと思うが
44デフォルトの名無しさん:2008/05/01(木) 20:29:49
>>43
馬鹿な俺に答えだしてくれてありがとう
45デフォルトの名無しさん:2008/05/01(木) 20:32:10
非結合メソッドの扱いかただね、
勉強不足すぎるわ俺
46デフォルトの名無しさん:2008/05/01(木) 20:45:08
>>34
hello = {'e': 'Hello', 'j': 'こんにちわ', 'r': 'Здравствуйте', 'i': 'Buongiorno', 'f': 'Bonjour'}
47デフォルトの名無しさん:2008/05/01(木) 20:53:06
>>34
def 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リスト (データ)

こんなかんじやね。じこかいけつしました
48デフォルトの名無しさん:2008/05/01(木) 20:56:05
>>47
dictizeを用意しなくてもdict(zip(idx,hello))で辞書化できるよ
49デフォルトの名無しさん:2008/05/01(木) 21:00:22
辞書化いけつしました
50デフォルトの名無しさん:2008/05/01(木) 21:01:31
>>13
部品ぽいクラスだったら10行以内とかでも普通。
その辺に転がってるモジュールの中にいくらでも例がある。
要はどういうデータの束に名前を付けるかって言うだけの話なので、
小さいところに名前付けたらクラスも小さくなる
クラス=なんか大物
と思ってる人は、勉強した本が悪い
51デフォルトの名無しさん:2008/05/01(木) 23:30:23
perl の pmsetup みたいな egg プロジェクトの雛形を作成するスクリプトってありませんか?
52デフォルトの名無しさん:2008/05/01(木) 23:39:00
イスパニア語でおk
53デフォルトの名無しさん:2008/05/01(木) 23:40:25
?el pmsetup del perl Como el huevo no Est? all? cualquier escritura que crea el formulario de un proyecto?
54デフォルトの名無しさん:2008/05/01(木) 23:45:23
It was possible to solve it for myself.
55デフォルトの名無しさん:2008/05/01(木) 23:50:41
我其解決自己的
56デフォルトの名無しさん:2008/05/01(木) 23:53:21
>>54
It impossible for native English speaker to understand such a terrible English.
57デフォルトの名無しさん:2008/05/02(金) 00:02:26
>>> x = 'global'
>>> 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

ってなるのは何故?
58デフォルトの名無しさん:2008/05/02(金) 00:06:13
そういうもん。f2()のxは代入があるからローカル変数だと判断したんだろ。
59デフォルトの名無しさん:2008/05/02(金) 00:46:28
>>56
Why didn't you use a verb in your sentense?
60デフォルトの名無しさん:2008/05/02(金) 02:27:16
>>57
f2()内でglobalとして扱うなら、print x の前にglobal x とか入れるんじゃないかな。
61デフォルトの名無しさん:2008/05/02(金) 03:34:58
MLのStackless Pythonの内容は酷い
62デフォルトの名無しさん:2008/05/02(金) 04:28:51
長文ヌルーしてた…
63デフォルトの名無しさん:2008/05/02(金) 06:37:46
関数内のローカル変数が
同名のグローバル変数を隠蔽しちゃうってやつだね
JavaScriptも似たような挙動だった気がする

初めてのPythonにはみっちり書いてあったはずから
参照できる人は見てみるのもいいかも
64デフォルトの名無しさん:2008/05/02(金) 08:21:24
まともな入門書であればたいてい書いてある
65デフォルトの名無しさん:2008/05/02(金) 08:43:42
書いてある本ものすごく少なそうなんですが
66デフォルトの名無しさん:2008/05/02(金) 08:55:35
まともな入門書が少ないってことだね。
ちなみに「初めてのPython」はマルチバイト文字列の扱いについてまったく触れてないので、
「まともな入門書」に入りません。
67デフォルトの名無しさん:2008/05/02(金) 09:15:07
そこでJython本ですよ
68デフォルトの名無しさん:2008/05/02(金) 09:29:03
>>67
このスレ的にはどうなの?>Jython本
読んだ人感想プリーズ
ネットで読めるのは宗教っぽい妄信的な書評ばっかりで正直キモいと思っているんだが(www
69デフォルトの名無しさん:2008/05/02(金) 10:20:29
民Pyにつづいてそれもか
70デフォルトの名無しさん:2008/05/02(金) 10:28:51
宗教っぽいってこれ?
ttp://yoshiori.org/blog/2008/04/jython.php

確かにキモい(www
ていうかこのスレでnishioさんを「天才」とか「イケメン」とか言ってるやつってこいつじゃね?(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
71デフォルトの名無しさん:2008/05/02(金) 10:30:20
やんわりと褒めるぐらいなら一般的な対応だけど
これはないわwwww
72デフォルトの名無しさん:2008/05/02(金) 10:33:43
>>70
無色のネラーだからしょうがないよ(W
73デフォルトの名無しさん:2008/05/02(金) 11:19:55
アニキ?

アッーー!
74デフォルトの名無しさん:2008/05/02(金) 12:06:04
>stackless python でも「RuntimeError: maximum recursion depth exceeded」が発生します。
この人は何がしたいんだwwwwwwwwwwwwww
75デフォルトの名無しさん:2008/05/02(金) 12:33:42
スタックがない=再帰やり放題じゃね?フィボナッチ数列が美しくかけるんじゃね?
76デフォルトの名無しさん:2008/05/02(金) 20:05:06
予約した
imprtに期待age
77デフォルトの名無しさん:2008/05/03(土) 17:52:49
http://jp.rubyist.net/magazine/?0003-uva
>ちなみに python 2.3 で末尾再帰版 fact を計算したところ、
>n = 900 までは計算でき、 n = 1000 でスタックが溢れた。

これって本当?
1000でスタックが溢れたら大問題だと思うけど
78デフォルトの名無しさん:2008/05/03(土) 18:07:35
Py_DEFAULT_RECURSION_LIMITが1000だから当たり前
sys.setrecursionlimitで変更も可能
79デフォルトの名無しさん:2008/05/03(土) 18:10:05
>>78
それはスタック溢れとは言わないだろ。
80デフォルトの名無しさん:2008/05/03(土) 18:39:44
>>79
>>77の記事を書いた人に言ってあげなよ
81デフォルトの名無しさん:2008/05/03(土) 18:46:51
うへえ、そういう調査もせずに「あふれた」って書いちゃうのか
82デフォルトの名無しさん:2008/05/03(土) 18:53:05
2 つのプログラムの同一仕様検査の難しさ
83デフォルトの名無しさん:2008/05/03(土) 19:31:58
Python2.3.5(2005-02-08リリース)の頃は
エラーメッセージが違うのかなと思って実行してみたけど、

 RuntimeError: maximum recursion depth exceeded

と表示された。
84デフォルトの名無しさん:2008/05/03(土) 19:32:08
rubyistはエラーメッセージ読まないのん?
85デフォルトの名無しさん:2008/05/03(土) 19:43:21
処理系を信頼してないんだろ
86デフォルトの名無しさん:2008/05/03(土) 19:57:34
>>84
奴らは英語ができない情報ニート
87デフォルトの名無しさん:2008/05/03(土) 20:13:31
RuntimeError: maximum recursion depth exceeded

これを見た上で「あふれた」と言ったのか?
88デフォルトの名無しさん:2008/05/03(土) 20:50:26
>>87
もしかしたら1000に達する前にMemoryError: stack overflowが出たのかもしれない。
89デフォルトの名無しさん:2008/05/03(土) 22:37:54
んな小さとこで出るわけない
90デフォルトの名無しさん:2008/05/03(土) 22:52:31
数字が一致していることからしてもRuntimeErrorのほうだろうな
91デフォルトの名無しさん:2008/05/03(土) 23:17:05
モジュール名大改造PEPが更新
http://www.python.org/dev/peps/pep-3108
92デフォルトの名無しさん:2008/05/03(土) 23:17:44
「スタックが溢れた」と言っても差し支えないんじゃね?
Ruby では同じ文脈で 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に同意。
93デフォルトの名無しさん:2008/05/04(日) 06:52:48
limitを超えたんだから
あふれた
でいいと思う
94デフォルトの名無しさん:2008/05/04(日) 13:46:59
どれぐらい末尾再帰ができるかどうかを調べているんだから
setrecursionlimitで値を変更するべきだと思うけど
95デフォルトの名無しさん:2008/05/04(日) 13:49:57
あくまで limit を越えたのはスタック容量じゃなくて再帰回数だから
溢れたとは言わないだろうな。
96デフォルトの名無しさん:2008/05/04(日) 14:13:36
お前ら、こういう話題が好きだったのか?
97デフォルトの名無しさん:2008/05/04(日) 14:24:47
処理系での末尾再帰最適化って、そんなに難しいのかな...
なんかちょっと頭のいい人ならすぐできそうな気もするんだが...
(まぁ、俺には難しいんだが...)
98デフォルトの名無しさん:2008/05/04(日) 14:28:38
まともな処理系なら JIT っぽいことしてると思ってるんだけど
(中間言語へのコンパイルかもしれないが)、
末尾再帰最適化を採用する事で
どれだけ JIT コンパイルのコストに影響が出るんだろうか。
99デフォルトの名無しさん:2008/05/04(日) 14:47:23
「この回数再帰したら止めてね」という設定値を越えたから止めただけなんだから、
溢れたとは言わないな。「limitに達した」じゃないかな。
100デフォルトの名無しさん:2008/05/04(日) 14:50:16
101デフォルトの名無しさん:2008/05/04(日) 15:04:56
>>97
言語仕様と下位層による。
Rubyのブロック引数みたいなへんな言語仕様があると面倒だし、
末尾呼び出し最適化を考慮したスタックフレームを持つ機械の機械語や
そのような仮想機械へのコンパイルなら楽。
102デフォルトの名無しさん:2008/05/04(日) 15:29:59
もはや言葉遊びですね^^
103デフォルトの名無しさん:2008/05/04(日) 16:19:33
http://groups.google.co.jp/group/oklab-tech/browse_thread/thread/c4e7fcfba80ed87e

面白いのを見つけました。でもPythonで書き直すには
どうしたら良いかわかりません…orz

upload.cgi を python で書き直すとしたら
どう書いたら良いでしょうか?どうぞよろしくお願いします.
104デフォルトの名無しさん:2008/05/04(日) 16:54:21
細川wwww
105103:2008/05/04(日) 16:55:34
dbm = SDBM.open('db/id',0644)
dbm[hash] = id
dbm.close

このへん、わけわからん orz
106デフォルトの名無しさん:2008/05/04(日) 17:03:55
107103:2008/05/04(日) 18:46:34
>>106
>>> db=shelve.open("db/id", "c")
>>> db["spam"]=1024
>>> db.close()
>>>
>>> db=shelve.open("db/id")
>>> db["spam"]
1024

こんなかんじですね。どもです。 ほかにdbmは
anydbm, pickle, shelve とか三種類くらいありました。
108デフォルトの名無しさん:2008/05/04(日) 20:13:52
http://www.python.jp/doc/2.3.5/lib/httplib-examples.html

>>> 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側の部分を書いてみたのですが
うまく行きません…どう書いたら良いでしょうか?
109デフォルトの名無しさん:2008/05/04(日) 20:17:01
>>108
その upload_py.cgi の方に問題があるんじゃないの?
110デフォルトの名無しさん:2008/05/04(日) 20:17:46
参考にしてるところがPython2.3.5用だから古くない?
111デフォルトの名無しさん:2008/05/04(日) 20:30:41
>>110
それはないと思われ。
112デフォルトの名無しさん:2008/05/04(日) 20:58:44
>>109
#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
113103:2008/05/04(日) 21:16:12
db = shelve.open("tmp/id", "c")
db[hash] = id
db.close()

>>> import shelve
>>> db=shelve.open('tmp/id')
>>> db["e09f6a7593f8ae3994ea57e1117f67ec"]
'1'

上手くいきますた!
114103:2008/05/04(日) 21:18:52
data = <<EOF
--#{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する場合はこの書式に沿って
組み立てないと駄目なのですか?
115デフォルトの名無しさん:2008/05/04(日) 22:49:23
スレ違いっつーか板違いだ
116デフォルトの名無しさん:2008/05/04(日) 23:22:17
お前は黙ってろ
117デフォルトの名無しさん:2008/05/04(日) 23:27:57
内容的にWebProg板だな
118デフォルトの名無しさん:2008/05/05(月) 01:02:08
103を見て絵に描いたような教えて君かと思ったが意外にガッツあるな。期待age。

>>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
この辺を参照のこと。
119デフォルトの名無しさん:2008/05/05(月) 13:01:33
水曜日に最後のアルファ
120デフォルトの名無しさん:2008/05/05(月) 13:23:29
chinpo
121デフォルトの名無しさん:2008/05/05(月) 14:02:41
pythonをやろうと思ってるのだけど、入門には「みんなのpython」と「pythonプログラミング入門」どっちがいいかな?
プログラム自体は初めてじゃないです。
122デフォルトの名無しさん:2008/05/05(月) 14:08:07
プログラム経験あるならネットのドキュメントだけで十分
本買うのが好きなら自分で手にとって選ぶのも好きになれ!
123デフォルトの名無しさん:2008/05/05(月) 14:42:19
python plograming language和訳まだー
124デフォルトの名無しさん:2008/05/05(月) 14:53:30
>>122
THANK YOU!!
基礎は書籍でしっかりやりたいから、自分で見てかうことにするよ
125デフォルトの名無しさん:2008/05/05(月) 15:13:32
基礎からやりたいのならみんPyじゃね?
もう一つの方は流しすぎ

まあ自分で中身見て選ぶのが一番だけどな。
126デフォルトの名無しさん:2008/05/05(月) 15:56:10
基礎だけ学びたいなら最近でたJythonの本でいいと思うよ
127デフォルトの名無しさん:2008/05/05(月) 15:57:58
それはないわ(w
128デフォルトの名無しさん:2008/05/05(月) 16:51:36
neet山
129デフォルトの名無しさん:2008/05/05(月) 17:59:55
プログラミング経験者があえて書籍で入門するなら
初めてのPythonくらいの内容がないと無駄遣いに終わると思う
130デフォルトの名無しさん:2008/05/05(月) 18:08:03
選択肢なんでほとんどないんだから、
立ち読みして比べりゃいいじゃん。
131デフォルトの名無しさん:2008/05/05(月) 18:18:37
Jython本を買えば間違いは無い。正しくも無い。
132デフォルトの名無しさん:2008/05/05(月) 18:39:50
プログラムしたことがあるのであればWebのチュートリアル読めばすむ話のような気がする
そんなに複雑じゃあない
本家のチュートリアルが読めるのであればなおよい
133デフォルトの名無しさん:2008/05/05(月) 19:25:00
だから、本を買いたいんだろ。
だったらJython本しか無い。
134デフォルトの名無しさん:2008/05/05(月) 20:24:53
俺も最初は本よりチュートリアルの方が良いと思う。
まず使えるようになることに焦点が合ってるし、内容に間違いが少ないから一番確実。
135デフォルトの名無しさん:2008/05/05(月) 20:38:55
テストサーバ動かして python の cgi 動かしたいんだけど、Leopard の apache2 に mod_python 入れた人いる?
それとも素直に CGIHTTPServer.CGIHTTPRequestHandler つかってテストに使った方がいいかね。
136デフォルトの名無しさん:2008/05/05(月) 21:12:20
>>135
MacPortsつかえばすぐ入るんじゃね?
137デフォルトの名無しさん:2008/05/05(月) 21:19:44
>>135
Leopard の Apache2 でハマったばかりなんで、晒しとく。
http://pc11.2ch.net/test/read.cgi/mac/1190016804/683-693
洩れは結局 i386 な Apache2 を入れ直した。
138デフォルトの名無しさん:2008/05/05(月) 21:40:17
Jython本買ってきました。
クソでした。
理由は言うまでもない。
139デフォルトの名無しさん:2008/05/05(月) 21:42:25
言わないと工作としか思えないわ。
140デフォルトの名無しさん:2008/05/05(月) 21:44:12
ぶっちゃけ作りが雑な気がするんだが>Jython本
図とか表とかほとんどないし。
文章ばっかり。
内容もあまりぱっとしないよねぇ...。
141デフォルトの名無しさん:2008/05/05(月) 22:00:55
今出ている本って内容が古すぎたり中途半端だったりであまりおすすめできるものってないような。
何か作りながらチュートリアルかリファレンスを参照するのが効率的かもね。
142デフォルトの名無しさん:2008/05/05(月) 22:58:22
Jython本はコードが見難いね、説明してるのがどれだかわかりにくい
編集がちょっと丁寧な仕事すればだいぶ違ったと思う
内容的には初心者な俺には勉強になってる
でも中途半端だな、対象読者一体どこだよ、とは思った
Python全然知らないときつくないか?Javaも結構知ってないときつくないか?
143デフォルトの名無しさん:2008/05/05(月) 23:13:50
Jython本の執筆者のtwitter読むと解るけど、かなりの突貫執筆だったようだ。
あの若さでこれだけの仕事したんだから、まあ認めてやってもいいんじゃないか?
144デフォルトの名無しさん:2008/05/05(月) 23:20:51
イケメンハッカー信者はもういいよ
145デフォルトの名無しさん:2008/05/05(月) 23:22:23
本買う人にとっては執筆に至る経緯なんて関係ないしなぁ
146デフォルトの名無しさん:2008/05/05(月) 23:24:27
まあ信者も認めるほどの出来だってことだよ。
147デフォルトの名無しさん:2008/05/06(火) 00:09:57
宗教論はもういいよ。イケメンハッカーの話はyosoでやれ。
148デフォルトの名無しさん:2008/05/06(火) 06:21:33
粗悪本乱発しすぎ
149デフォルトの名無しさん:2008/05/06(火) 06:40:46
Jython本ほど最高の本は無いよ。
書いてあることがスラスラと頭の中に入ってきて、
まるでコードが踊ってるみたい。
びっくりするようなイノベーションも体験できて、
いいと思うんだけどなあ。

最新の本だから最新のことが載っていて安心だし。
150デフォルトの名無しさん:2008/05/06(火) 06:42:36
さっき読んでたらすぐ眠たくなって寝てしまったが
151150:2008/05/06(火) 06:48:52
でも、起きてからすらすらと本の内容が浮かんできたな
152デフォルトの名無しさん:2008/05/06(火) 07:50:20
今知ったんだが、彼って自分のことイケメンなんぞと言ってるんだ!
153デフォルトの名無しさん:2008/05/06(火) 07:56:24
IKEMEN
154デフォルトの名無しさん:2008/05/06(火) 08:36:13
流れが意味不
155デフォルトの名無しさん:2008/05/06(火) 09:37:43
stackless pythonとpsycoは共存できないんだな。
残念だ。
156135:2008/05/06(火) 12:19:12
とりあえず mod_python ダウンロードしてきて
./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
なんて良いタイミング!参考にしてみるよ
157デフォルトの名無しさん:2008/05/06(火) 17:26:02
Webのチュートリアルは日本語の品質がいまいちな部分がない?

結局は英語にあたらないと意味が取れない事がよくある。

書籍のチュートリアルの方が日本語がいいし、読みたいところに
すぐ飛べるのでいいと思う。

他言語経験者なら、これ読めばある程度できるようになるんじゃ
ない?
158デフォルトの名無しさん:2008/05/06(火) 17:32:25
他言語経験者なら普通に公式チュートリアルでいいだろ
ねえなんで本買わせようとすんの?
159デフォルトの名無しさん:2008/05/06(火) 18:02:06
本のほうが読みやすいから
160デフォルトの名無しさん:2008/05/06(火) 18:34:16
Webの方がコピペできていい
161デフォルトの名無しさん:2008/05/06(火) 19:06:39
本が欲しいと言っているから。
162デフォルトの名無しさん:2008/05/06(火) 19:25:07
検索できる分デジタル版の方がいいけどね

でもチュートリアルの日本語書籍版はチュートリアルの読み方の部分が秀逸なので
立ち読みだけでもしておくといいよ
163デフォルトの名無しさん:2008/05/06(火) 19:31:36
>>157
> Webのチュートリアルは日本語の品質がいまいちな部分がない?
>
> 結局は英語にあたらないと意味が取れない事がよくある。

ここなり翻訳者宛のメールなりで問題点を具体的に報告すれば改善されると思われ。
164デフォルトの名無しさん:2008/05/06(火) 19:33:08
いま >163 がとてもいいことを言った。
165デフォルトの名無しさん:2008/05/06(火) 19:41:13
本を買って欲しいから。
166157:2008/05/06(火) 19:48:43
>163がとてもいいこと言ったと思います。

翻訳者あてのメールは敷居が高くても、ここになら書けるなぁと思った。
(でも私は書籍版買っちゃったから今後はWeb版読みに行く事は中々
ないはず)

167デフォルトの名無しさん:2008/05/06(火) 20:08:55
>>158
俺は他言語経験者で、公式チュートリアルで入門したけど本も買って勉強したよ。
Mark Lutz の Programming Python の第1版の原著を買った(確か当時は和書が1つもなかった)。
理由は「書籍から入手できる情報」≠「オンラインで入手できる情報」だから。
あと、1冊まるまる最初から最後まできちんと勉強することで「やり終えた!」という充実感があった。
これは結構重要なポイントのような気がする。
絶対本を買うべきだとは思わない。買いたい人は買えばいいと思われ。

ちなみに上記の本には誤植が多かったので読み進めるのと並行して全部メモしておいた。
読み終えたあとにまとめて Mark Lutz に報告したらオライリーの担当者からお礼のメールが来て
オライリーの本から好きなのを1冊プレゼントすると言われた。そんなの初めての経験だったから
意味が分からなくて「お金払わなくていいの?」とか聞いちゃったりして(無論無料で送ってくれた)。
168デフォルトの名無しさん:2008/05/06(火) 21:29:18
これはいい話
169デフォルトの名無しさん:2008/05/06(火) 21:31:30
threadって計算速度の向上に効果ある?
a = b1 + b2の計算を(a,b1,b2はarray)
b1とb2をthreadで計算して,
それぞれ計算終了後に足すというプログラムを作ったんだけど,
普通にb1とb2をメインスレッドで順番に求めて足した方が早かった...

ちなみにb1とb2の計算はダミーのforループ10000回です.
170デフォルトの名無しさん:2008/05/06(火) 21:43:49
>>169
ダミーループのような、単純処理を連続的に行う場合は、threadのメリットは少ないと思われ。
有り難味があるケースは、
・入力待ちの間に、他の処理をさせておきたい
・ネットワークを表現する際に、各処理を独立のモジュールみたいに動かしたい
など。
171デフォルトの名無しさん:2008/05/06(火) 21:45:50
>>167

第3版が手元にあるけど1552ページある。このサイズをまるまる勉強したとし
たら、尊敬します。すげー。

172デフォルトの名無しさん:2008/05/06(火) 22:39:53
>>170
なる。やっぱりそんな気はしてた。。。
サンクス
173デフォルトの名無しさん:2008/05/06(火) 22:49:58
>>171
そんなにあったっけと思って書誌情報を確認したら第1版は902ページだった。
174デフォルトの名無しさん:2008/05/06(火) 23:13:06
>>169
マルチコアの場合は、計算スレッドを複数に分けてやると速くなったりする

あと計算規模が小さいとスレッドの生成・破棄のコストのせいで
高速化の効果が見えないよ
175Free Tibet:2008/05/06(火) 23:57:15
>>167
オライリー信者乙
176デフォルトの名無しさん:2008/05/07(水) 00:20:38
>>175
そんな、人類の足引っ張ることしかできない悲しい奴みたいな言い方しないで
前向きに行きましょうよ。
177デフォルトの名無しさん:2008/05/07(水) 00:24:08
「きさま、マック信者だな?」
178デフォルトの名無しさん:2008/05/07(水) 00:25:34
「きみはゆくえふめいになっていたマックじゃないか」
179デフォルトの名無しさん:2008/05/07(水) 08:13:21
>>169
JythonやIronPythonだと速くなるかも知れない。
CPythonだと複数スレッドを同時に動かせないんで速くならない
180デフォルトの名無しさん:2008/05/07(水) 11:57:52
Python絡みで信頼のおける日本人って
柴田さんしか居ない状況?
他の人ってあっちの人と話したことないよね
181デフォルトの名無しさん:2008/05/07(水) 12:01:59
>>180
んなこたあない
もっと偉い人はいる
多くはないけど
182デフォルトの名無しさん:2008/05/07(水) 12:02:11
>>180
あっちの人と話したことがある=Python絡みで信頼のおける日本人
と言う事ならmatz
183デフォルトの名無しさん:2008/05/07(水) 12:04:01
多くの日本人Pythonistaは引きこもり
184デフォルトの名無しさん:2008/05/07(水) 12:04:28
柴田さんは信頼できるの?
185デフォルトの名無しさん:2008/05/07(水) 12:04:50
個人攻撃が始まった(www
186デフォルトの名無しさん:2008/05/07(水) 13:18:23
自分以上の人間を言いがかりで叩くって
気持ちいいんだもん。
187デフォルトの名無しさん:2008/05/07(水) 13:57:56
柴田淳はじまったな。
188デフォルトの名無しさん:2008/05/07(水) 14:09:25
>>182
ブレース採用の話しかしてないじゃんかw

そういう意味じゃなくて、
開発者が誰で誰がどれを担当していて
今どのモジュールが開発中もしくは放棄中とか
そういった情報を知ってる日本人のことだよ。
189デフォルトの名無しさん:2008/05/07(水) 14:15:11
186が184をカス認定している件。
190デフォルトの名無しさん:2008/05/07(水) 14:29:11
>>188
ある程度ならsvnのコミットのログとか
ソースコードのコメント読めば分かるんじゃないか
191デフォルトの名無しさん:2008/05/07(水) 16:00:25
pygame.orgの英文をなんとかしてほしいんだよね
英文を読んでまでのヤル気が必須になってるから
興味もった素人達にとっては敷居が高すぎる。
ただでさえわからないプログラム解説を、わからない英語で解説されるわけだから。
誰か、日本語翻訳サイトつくってよ
翻訳だけの協力でもいいよ、
俺がサーバー借りてサイト作ってもかまわない
サイト作りは出来るから。
なんなら、このスレのみんなでpygame公式サイトの日本語解説版作っていかないかな?
192デフォルトの名無しさん:2008/05/07(水) 16:03:18
まずはお前が率先して道を示せ。
話はそれからだ。
193デフォルトの名無しさん:2008/05/07(水) 16:53:27
ほとんどSDLのラッパーなんだからSDLをさらっと習得しちゃえば
なんとなくわかるっしょ。
194デフォルトの名無しさん:2008/05/07(水) 17:47:19
>179

>CPythonだと複数スレッドを同時に動かせないんで速くならない

そうなの?俺の持っている本では、

執筆時点(2006?)でフォークはWindowsのPythonでサポートされていない
けど、スレッドはすべてのプラットフォームのPythonでサポートしている・・・

みたいな事かいてあるよ。なのでサポートしていると思うんだけど、違うの?
195デフォルトの名無しさん:2008/05/07(水) 17:54:04
どこのクソ本だよそれ。
196デフォルトの名無しさん:2008/05/07(水) 18:06:26
>>194
C記述の拡張コードがマルチスレッドを考慮していないので
Python上ではマルチスレッドでも実質グリーンスレッド状態になる。
ちゃんとしたマルチスレッドな動作を期待するならJythonやIronPythonになるかな。
文脈でわかるのかもしれないけど「スレッド」といってもいろいろ観点があるから。

>>195
まちがっちゃいないけど説明不足でミスリードしちゃいそうだね。
197デフォルトの名無しさん:2008/05/07(水) 18:13:21
>>194
俺の理解では、Python のスレッドは交互に動いている。つまり、ある時点において1つのスレッドしか動かない。
だから、同時に(並列で)動くことを期待しているマルチスレッドプログラムは速くはならない。
>>170さんの言うように、あるスレッドが入力待ちをしていて、別のスレッドがGUIを司る、というような
マルチスレッドプログラムならば期待通りに、一見並列に動く。
こういう実装になっているのは、種々のモジュールにスレッドセーフであることを要求するのが困難だから。
間違ってたらゴメス
198デフォルトの名無しさん:2008/05/07(水) 19:08:58
194です。

なるほど。私が本のスレッドの説明の最初のとこだけしか読んで
なかったので、勘違いしてました。

もうちょっと読むと>197がいうとおりのような事も書いてました。
「いつでも1つだけのスレッドしか動いていない」って感じで。

現状(2006年?)ではスレッドを複数のCPUに分配できない、み
たいなことも書かれてた。

という事は計算が速くなるわけないですね。>170みたいな用途に
限る、ということか。
199デフォルトの名無しさん:2008/05/07(水) 19:09:16
>>183
自分一人の例を全員の例のように敷衍するひとのひとりですね
200デフォルトの名無しさん:2008/05/07(水) 19:12:07
201デフォルトの名無しさん:2008/05/07(水) 19:49:30
>>191
> 英文を読んでまでのヤル気が必須になってるから
> 興味もった素人達にとっては敷居が高すぎる。

敷居が高過ぎると思ってしまうのは、その人自身の勝手な固定観念なんだけどな
あと敷居が高過ぎると思って、よりつかない人は、そこまでのモチベーションしかないんだと思うよ
人に聞いているようでは、マジで駄目なんだよ

> 俺がサーバー借りてサイト作ってもかまわない
> サイト作りは出来るから。
> なんなら、このスレのみんなで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に晒してみたら?
協力してくれる人もいるかもしれないよ
202デフォルトの名無しさん:2008/05/07(水) 19:54:46
マルチcore対応のスレッドが使えるスクリプト言語を実装するのは難しいの?
Rubyも結局1つでしか動かないらしいし。
203デフォルトの名無しさん:2008/05/07(水) 20:08:34
pygame翻訳しろの話は、くだすれPythonスレとマルチになってたんだな。
204デフォルトの名無しさん:2008/05/07(水) 20:11:45
pygameスレにも貼ってあった
205デフォルトの名無しさん:2008/05/07(水) 20:17:16
pygameなんてなんか人前で言いづらいな。
206デフォルトの名無しさん:2008/05/07(水) 20:18:59
こういうのって勝手に翻訳して公開していいんだっけ?
まぁ事後承諾だろうと拒絶されるこたまずないだろうからどーでもいいんだろうけど

ゲーム用にしか聞こえないよなw
207デフォルトの名無しさん:2008/05/07(水) 20:22:24
>>202
言語自体は各スレッドにインタプリタを1つずつ用意することで簡単に並列化できると思われ。
問題は膨大な量のライブラリモジュール、特にC等で書かれたライブラリのバインディングだ。
スレッドセーフでないライブラリは統合不可ということになる。つまり言語として制約が大きい。
大域変数でメモリ管理ってのは割とありがちだけど、これはスレッドセーフではないのでNG。
こういうものを除外していくとどんどん言語としての有用性が下がっていく。
代替品の再実装なんてやってられん。PythonにしてもRubyにしてもそんなところだと思われ。
208デフォルトの名無しさん:2008/05/07(水) 20:24:13
pygameがLGPLだからドキュメントも同じ扱いになるんじゃないか?
ちゃんと調べてはいないけど
209207:2008/05/07(水) 20:41:33
あんま関係ないけど、OpenMPで並列化されたライブラリを拡張モジュールとしてPythonに組み込んだことがある。
これだと並列化がモジュール内で閉じてるから何も問題ない。
俺はOpenMPで並列化された線形解法ライブラリのラッパを書いてPythonに組み込んだ。フツーに使えた。
ただし、Intel C コンパイラの場合はPython一式を -openmp オプション付きでコンパイルする必要があった。

あと、PythonでMPIプログラムを書いてマルチコア環境で実行するというアプローチもあるね。
これだと真に並列に動作するはず(マルチスレッドプログラミングと同じ要領というわけにはいかないけど)。
Python用のMPI実装にはいくつかあった希ガス。
210デフォルトの名無しさん:2008/05/07(水) 20:53:31
PythonのWikiエンジンってあったんだね
知らなかった

使い勝手は、どうなの?

Python製Wikiエンジン"MoinMoin"、日本語化担当者募集
http://www.python.jp/Zope/PyLog/1210080971
211デフォルトの名無しさん:2008/05/07(水) 21:09:58
http://moinmoin.wikiwikiweb.de/WikiEngineComparison

比較ページを見つけたけど、いい事しか書いてないなぁ。
まぁMoinMoinのサイトだから仕方ないか。
212デフォルトの名無しさん:2008/05/07(水) 22:00:43
>>207
勉強になった。
スレッドセーフなモジュールを分類してかき集めるってプロジェクトがおこっても
良さそうとか思ったけど見つけられなかった。いろいろと難しいことがあるのかな。
213デフォルトの名無しさん:2008/05/07(水) 22:46:07
>210

昔、自サイトでつかってたけど、まあ中の上ぐらいかしら。
設計はそれなりに綺麗で、たとえばpybloxsomとかから
エンジンだけ利用してレンダリング、とか、pyblosxomの
間で相互リンク、とかできた気がする。

ただ、見た目のきれいさとかはないけどね(デフォルトの設定では)
214Tracの方が良いよな:2008/05/08(木) 00:07:36
先に言っておく。この話題で
MoinMoinじゃなくてTracの方がいい
なんて思ってる人は、何かがずれていると自覚したほうがいい。
215デフォルトの名無しさん:2008/05/08(木) 10:54:55
MoinMoinで気に入ってるのは
Pythonのソースを表示すると
色分けで表示するってやつかな。

あと微妙に軽い。

欠点として‥登録ユーザじゃないと
ページ変更時刻がUTCで記録されてしまう。
これが地味に嫌だ
216デフォルトの名無しさん:2008/05/08(木) 13:12:49
以前、翻訳してみようとWikiを作ってみたけど頓挫しているサイト
Displayモジュールの一部しかまだ翻訳してません
ぶっちゃけ翻訳の作法とかよくわからないし・・・

pygame日本語ドキュメント
http://wiki.livedoor.jp/py_gamer/d/FrontPage

手伝ってくれる人がいたら嬉しい
ちなみにMLで聞いてみたところドキュメントもLGPLらしいね
217デフォルトの名無しさん:2008/05/08(木) 13:41:35
>215

今使ってないからなんとも言えないけど、
Config.tz_offset ってのを書換えれば良さそうですが...
(デフォルトのタイムゾーン)
218デフォルトの名無しさん:2008/05/08(木) 13:43:15
もいんもいん
219デフォルトの名無しさん:2008/05/08(木) 14:19:37
>>212
調べたことないけど、スレッドセーフなモジュール(特にC等で書かれた拡張モジュール)は
ほとんど無いんじゃないかなあ。

例えばCでマルチスレッドのプログラム書いてみると分かるんだけど「このコードはスレッドセーフです」って
言い切るのって結構大変。呼び出しているライブラリ関数がスレッドセーフかどうか逐一確かめて回らないと
いけないから。逐次プログラムの一部分だけをマルチスレッド化できるOpenMPがいかに便利かを実感する。

その点、Java は最初からマルチスレッド対応だから楽チン。
マルチスレッドで真に並列動作するPythonを実現するための一番の近道はJythonだろうね。
220デフォルトの名無しさん:2008/05/08(木) 15:12:06
そのレベルの話であれば、Javaがマルチスレッド対応だから楽ちんだなんてとてもいえないと思うけど。
同期とかの方法と、VMのメモリモデルが規定されているだけでしょ。
結局、使うAPIとかライブラリがMT-Safeかどうか調べなきゃいけない。標準のAPIについては大体書いてあるけど。
221デフォルトの名無しさん:2008/05/08(木) 21:21:29
>>216
今すぐは無理だけど、暇があったら手伝いたい。
勝手に編集してもいいの?
222デフォルトの名無しさん:2008/05/08(木) 23:20:40
>>216 >>221
おまいらがんがれ。

wikiで自分が翻訳したページを他人に修正されると、なんか一瞬犯されたような気分
になったりするけどそんなケツの穴の小さいことは気にしないでがんがん翻訳してくれ。
223デフォルトの名無しさん:2008/05/08(木) 23:26:05
>>222
気にしてるじゃねーかw
224デフォルトの名無しさん: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" だけ抜き出したい場合はやっぱりその他の文字列処理しないとだめ?

225デフォルトの名無しさん:2008/05/09(金) 00:35:11
非グループ化の(?:...)が使えないかな
226デフォルトの名無しさん:2008/05/09(金) 00:41:18
>>224
[A-Z]
227デフォルトの名無しさん:2008/05/09(金) 00:48:28
re.findall('[\w*]+', src) して from と import を filter
228デフォルトの名無しさん:2008/05/09(金) 00:56:39
>>255
おお、こんなべんりなものが!

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
なんですがグループの繰り返しだけでは取得できないのでしょうか

229デフォルトの名無しさん: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
230デフォルトの名無しさん:2008/05/09(金) 01:41:52
>>228
\w は数字ともマッチするわけだが。
一回、正規表現について勉強しなおしたほうがいいんじゃね?
231デフォルトの名無しさん:2008/05/09(金) 01:44:41
urllib2
232デフォルトの名無しさん:2008/05/09(金) 02:32:46
print re.findall('(w)+', 'ABCD')
結果: ['D']

グループの繰り返しだと、最後だけしか取り出さないみたいだね。
233デフォルトの名無しさん:2008/05/09(金) 11:44:42
(\w)+は後続文字が\wじゃない時にマッチしているみたいだけど

>>> 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']
234デフォルトの名無しさん:2008/05/09(金) 16:23:44
【平均年収】岩手県の就職【365万円】 [就職]
【岩手県南】一関第一・水沢・花巻北・黒沢尻北高校 [お受験]
235デフォルトの名無しさん:2008/05/09(金) 17:07:07
何の誤爆かと思ったらおすすめ2ちゃんねるか
236デフォルトの名無しさん:2008/05/09(金) 17:26:46
同郷がいるな!?

岩手のコンビニのバイトは時給620円がデファクトスタンダードだぜ
そして最低賃金が全国最低で自殺率全国2位という素晴らしい県

スレ汚しスマソ
237デフォルトの名無しさん:2008/05/09(金) 18:44:32
>>236
いや、君ひとりかもよ?w
俺もここと恐らく俺の他には誰も見ていないであろうスレ(語学板の某マイナー言語のスレ)を
交互に訪れていたらそのスレがおすすめ2ちゃんねるに出たことあるし。
238デフォルトの名無しさん:2008/05/09(金) 18:49:17
日本では岩手県が一人当たりのPython消費量が多いらしい
239デフォルトの名無しさん:2008/05/09(金) 18:59:25
>>237
どっちも見たこと無い
240デフォルトの名無しさん:2008/05/09(金) 22:58:35
水虫が感染した
241デフォルトの名無しさん:2008/05/09(金) 23:03:51

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇

死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇 死ね糞天皇
242デフォルトの名無しさん:2008/05/10(土) 02:37:18
インタプリタ中で定義した関数を、後から
(バイトコードではなく)テキストで定義
を参照する簡単な方法ってある?それとも
難しい?

>>> def f(x): return x
>>> deffn(f)
f(x):
return x

のような感じで
243デフォルトの名無しさん:2008/05/10(土) 03:13:59
>>242
ファイルにあるやつなら insepct.getsource で取れる
244デフォルトの名無しさん:2008/05/10(土) 04:27:34
>>169
Parallel 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
245169:2008/05/10(土) 13:53:14
>>244
おおお,サンクス!
早速いじってみまふ。
246デフォルトの名無しさん:2008/05/10(土) 14:12:25
どうでもいいから
ちゃっちゃとpygameの資料和訳
作業に入れよ。
非国民か?
247デフォルトの名無しさん:2008/05/10(土) 14:41:50
>>246
国際人には和訳などいらんのだよ
248デフォルトの名無しさん:2008/05/10(土) 14:46:02
真の国際人は地域文化を尊重するものだ
と混ぜっかえしてみる
249デフォルトの名無しさん:2008/05/10(土) 14:48:20
地域文化を尊重するから
現地の言葉を尊重するのだよと
250247:2008/05/10(土) 14:48:29
>>248
(・ω・)つ おざぶとん
251デフォルトの名無しさん:2008/05/10(土) 15:03:20
早く日本語化プロジェクトに参加しろよ。
お前らにpygameの未来がかかっている。
252デフォルトの名無しさん:2008/05/10(土) 15:13:29
ユーザからの入力を正規表現で処理したいと思ってます。
入力された文字列に正規表現が含まれてる場合にそれをエスケープしたいんだけど、どうやったらいいのかわかりません。
誰か助けてプリーズ・・・
253デフォルトの名無しさん:2008/05/10(土) 15:16:19
英語も読めないようなやつがpygameを使えるようになるとは考えにくい。
254デフォルトの名無しさん:2008/05/10(土) 15:57:14
たぶんリファレンスの和訳よりも、各オブジェクトを絡ませた逆引きサンプルコードみたいのが需要あると思うよ。
扱い方が理解できりゃオブジェクト名で大体想像できるし
255デフォルトの名無しさん:2008/05/10(土) 16:08:18
リファレンスぐらいなら簡単に訳せそうに見えるね

試しにpygame.cdromモジュール使ってみたけど対話型シェルから
簡単にトレイの開閉とか再生できておもすれー
かなりよく抽象化されてて使いやすそう
256デフォルトの名無しさん:2008/05/10(土) 16:10:06
>>252
re.escapeは試してみた?
257デフォルトの名無しさん:2008/05/10(土) 16:22:06
> リファレンスぐらいなら簡単に訳せそうに見えるね
簡単に訳せる文章、英文でも理解できる文章は、労力をかけて訳してもしょうがないっしょ
邦訳することが目的になっている感じだし、目的が変化している

核となるもの、肝となるもの、大事な概念だけど理解しにくいものを中心に
Pygameに興味のある者が理解しやすい仕組み・しかけをつくるほうが大事


とりあえず、目的・問題の明確化をさせたほうがいいんじゃないの?
258252:2008/05/10(土) 16:46:20
>>256
できましたありがとー!
(_アンダースコアもエスケープされちゃうのがナゾですが・・・)
259デフォルトの名無しさん:2008/05/10(土) 19:07:41
このスレッドの目的は
pygame文書の和訳という使命を帯びた事が証明されたわけだ
260デフォルトの名無しさん:2008/05/10(土) 19:28:29
よし、wxpythonの和訳が終わったらpygameも和訳するぜ

まだ、何もやってないけど
261デフォルトの名無しさん:2008/05/10(土) 19:43:09
Pygameのドキュメントだけ見てもよくわからないけど
SDLの方のドキュメントを読むと理解できる事も多いよね
262デフォルトの名無しさん:2008/05/10(土) 20:39:56
お前らは早くpygameの和訳作業にとりかかれ
263デフォルトの名無しさん:2008/05/10(土) 20:44:07
英語も読めない低脳は黙ってろ
264デフォルトの名無しさん:2008/05/10(土) 21:01:38
ここの基準はPythonが書けるかどうかで決まるんだぜ(藁)
265デフォルトの名無しさん:2008/05/10(土) 21:02:23
Pyhton
266デフォルトの名無しさん:2008/05/10(土) 21:04:17
pyてょn
267デフォルトの名無しさん:2008/05/10(土) 21:31:23
oh tyPo
268デフォルトの名無しさん:2008/05/10(土) 21:34:00
○〜〜  ○〜〜  ○〜〜
  ○〜〜  ○〜〜  ○〜〜
    ○〜〜  ○〜〜  ○〜〜
269デフォルトの名無しさん:2008/05/10(土) 21:52:46
sperm, sperm, sperm and sperm.
270デフォルトの名無しさん:2008/05/10(土) 21:54:07
まず pygame を何と訳したらいいのかわかりません
271デフォルトの名無しさん:2008/05/10(土) 21:58:25
pygame でいいじゃん
272デフォルトの名無しさん:2008/05/10(土) 22:07:29
随時出張してきてもいいが、本スレに帰れ

あとpygame翻訳と最初に騒いだヤツは、もうマルチするなよ
次スレからちゃんとテンプレに追加してやるから

【pygame】pythonでゲーム製作【ぱいがめ】
http://pc11.2ch.net/test/read.cgi/gamedev/1126605105/

>>270
Python + game = Pygame
こういう組み合わせの名前(造語)って代表的なのってなんだろう?
273デフォルトの名無しさん:2008/05/10(土) 22:25:32
pychinko
274デフォルトの名無しさん:2008/05/10(土) 22:59:17
pygameの和訳を済ませろボケナスども
275デフォルトの名無しさん:2008/05/10(土) 22:59:58
乳遊
276デフォルトの名無しさん:2008/05/10(土) 23:30:28
自己解決の次は翻訳か
277デフォルトの名無しさん:2008/05/10(土) 23:37:22
>>272
PyPI, PyPy
278pygame和訳wiki”管理”者:2008/05/10(土) 23:44:29
事故解決しました
279デフォルトの名無しさん:2008/05/10(土) 23:49:25
つまんね
280244:2008/05/10(土) 23:51:28
引続き Parallel Python をいじってみたんだけども、このシステムはマスタワーカモデルを前提にしているみたいだ。
つまり、マスタが仕事の集合を持っていて、有限個のワーカに1つずつ仕事を割り当てる。仕事を終えたワーカは
マスタから新しい仕事をもらって処理する。これを仕事の集合が空になるまで続ける。

ワーカ間で通信をする機能は提供されていないし、特定のワーカ(たとえば特定のリモートホスト上のppserver.py)に
特定の仕事を割り当てることもできないっぽい。Parallel Python が有効かどうかは実現したい並列アルゴリズムが
マスタワーカモデルに適合するかどうかに依る希ガス。
281デフォルトの名無しさん:2008/05/11(日) 00:26:06
おっpydev
282デフォルトの名無しさん:2008/05/11(日) 00:37:49
pygameの和訳が進んでいるか、
確認のために毎日一回以上は
pygame関連の話題を出すようにしようぜ

反論がある奴は似非python使いとして認定してやろうぜ
283デフォルトの名無しさん:2008/05/11(日) 00:40:31
>>280
具体的には、どういう用途に使えそうなんですか?
284244:2008/05/11(日) 00:59:44
>>283
pygameかな
285デフォルトの名無しさん:2008/05/11(日) 01:34:00
>>283
最も適しているのは並列処理の分野で embarrassingly parallel と呼ばれるカテゴリに属する種々の計算、
すなわち入力データを複数の独立した部分に分割できて、各部分について他から独立して計算が行なえる
タイプの用途に適している。
http://en.wikipedia.org/wiki/Embarrassingly_parallel
Wikipediaに例があがっている。フラクタル計算とか3DCGのレンダリング(例:レイトレーシング)とか力任せの
暗号解読とか色々ある。

並列処理って概して複雑で長時間計算し続ける必要のある応用が多い。そういう応用には C とか Fortran を
使うことがほとんどなんだけど、きちんと動くようになるまでの開発時間が長くてデバッグがたいへんだったりする。
そういう並列プログラムの試作(プロトタイピング)に Python が使えたらいいなーと個人的には思っている。
286デフォルトの名無しさん:2008/05/11(日) 08:49:01
>>274
おまえにいいこと教えてあげよう。
市場の中の肉屋さんいって、
「ホースください」頼んでみ。
解体処理した豚の膣の部分がもらえる。
ほんとは金かけて廃棄しないといけない部分だから無料でもらえる。
食い物にはならないから。
この豚の膣が極上。
まあ考えたら膣だからな。
人間のじゃないだけで本物の膣だから、気持ちよくて当たり前。
287252:2008/05/11(日) 09:30:17
re.escapeってなんでもかんでもエスケープしちゃうのか・・・
\山\田\太\郎て
288デフォルトの名無しさん:2008/05/11(日) 09:43:58
>>285
PythonでCPU8個使って並列計算するよりCで書いたプログラムの方が速そうだったり。。。
289デフォルトの名無しさん:2008/05/11(日) 09:57:09
>>288
何言ってんだ?
290デフォルトの名無しさん:2008/05/11(日) 10:28:52
>>289
あ?ヤンのかコラ
291デフォルトの名無しさん:2008/05/11(日) 11:21:19
292デフォルトの名無しさん:2008/05/11(日) 11:21:53
>>286
ついでに言うと豚の内臓と人間の内臓はかなり近いらしいね
豚の心臓を人間に移植した話もあるからな
293デフォルトの名無しさん:2008/05/11(日) 12:13:17
>>292
羊の膣も極上という話だけどどうなのだろうね?
294デフォルトの名無しさん:2008/05/11(日) 12:14:24
膣なんてどうでもいいから
チャッチャとpygame資料の和訳作業に務めろ糞野郎共
295デフォルトの名無しさん:2008/05/11(日) 14:39:25
>>285
自分も並列化するときのプロトタイプとしてPythonの並列環境を使ってみたいと
考えているんだけれど、今のところプロトタイプとしての感触はどう?

データ分割の楽な問題ってCとかFORTRANでもOpenMPを注意深く使うだけでも早くなる事が
多いし、MPIでも慣れれば苦労せずに書けるけれど、そうでない、スレーブ間での通信が必要
とかうまく分割できないとかそういう問題はMPIでやろうとするとデバッグが(;゚д゚)
なことになりがちで、そういう用途にPythonのプロトタイプが役に立つなら素晴らしいと思う
実はC並列版とそれほど速度とメモリ使用量が変わらないとかなら最高
C並列版より速ければ神
296デフォルトの名無しさん:2008/05/11(日) 16:53:12
Parallel Python だけど pp.Server.__scheduler() を適当に書き直せばワーカと仕事の対応(割り当て)を
ユーザ側で決められそうな希ガス。問題はワーカ間のプロセス間通信。これが一番面倒なところなんで
自前で実装となると Parallel Python を使ううまみがほとんどない・・・。

やっぱ MPI の Python バインディングあたりが一番現実的な解かなー。でもなんか気が重いんだなー。
もっと Python らしく lightweight なソリューションがないかなー。

>>288
Python の並列プログラムより C の逐次プログラムの方が速そうってことだよね。
そういうことは十分(多分頻繁に)あると思われ。

>>295
残念ながらまだ並列プログラムのプロトタイプ用途には使えてなくて感触を得るところまでいってない。
理由は単純で、Python で手軽に並列プログラミングを実現できる道具を見つけられていないから。
>>209に書いたようにいろいろ試してるんだけどなかなか・・・。

ただ、個人的には Python を並列化のプロトタイピングに使うのは大いに有望だと思っている。
プロトタイピングの場合、欲しいのは並列度やデータ量を上げたときの実行時間の変化であって、
実行速度が多少遅くて実験に時間がかかるとしても知りたいことは分かるはずだから。
プロセス間通信にソケットを使うとすると、データ量が大きくなれば Python でも C 等と同じぐらいの
速度が出る(ハズ)。演算量が多い部分に numpy 等の C/Fortran で書かれた数値カーネルを使うことに
すれば、プロトタイピング用途には十分な速度とメモリ使用量が得られるのではと思う。
297デフォルトの名無しさん:2008/05/12(月) 01:33:26

Linux で 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」で検索したら英語で色々皆同じ問題にあってるみたいだけど、解決方法を探せなくて(読めなくて)困ってます・・・教えて!エロイ人!
298デフォルトの名無しさん:2008/05/12(月) 02:10:10
config.py(setup.py?)のBUILD_GLCANVASを0にしてみたら?
299デフォルトの名無しさん:2008/05/12(月) 08:47:31
>>297
どのディストリ使ってるのか不明なんだけど、
バイナリパッケージでは存在してないの?
300デフォルトの名無しさん:2008/05/12(月) 17:11:39
単なる興味なのですが、Unicode文字列と等価なバイト列を得る方法をご教示頂けないでしょうか?

'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')がほぼ等価ですが、これはあくまでエンコーディングなので、
直接バイト列を得てるわけじゃないのかな、と思った次第です。
301デフォルトの名無しさん:2008/05/12(月) 17:19:12
内部表現はUCS2かUCS4だったと思うのだが
中身に触る方法はないほうがいいんじゃないかな
302デフォルトの名無しさん:2008/05/12(月) 17:23:20
ord 関数じゃダメなんすか
303デフォルトの名無しさん:2008/05/12(月) 20:12:59
>>300
文字列はエンコーディングを決めなければバイト列では表現できないよ。

> 'hello'と等価なバイト列は'\x68\x65\x6c\x6c\x6f'です。 

ここで実は300さんはエンコーディングとして ASCII  を仮定している(ASCII をサブセットとして含む
別のエンコーディングかも知れない)。例えば、もし EBCDIC を仮定していたら別のバイト列になる。

> pythonで両者の直接変換はできるのでしょうか?

エンコーディングが分かっていればご存知の通り unicode() と .encode() で可能。
304デフォルトの名無しさん:2008/05/12(月) 20:39:43
print repr([u'hello'])
305297:2008/05/13(火) 01:30:38
>>297です。
>>298-299
大変申し訳ない。
上記URLの、下記の文をすっとばしてました・・・。

cd $WXDIR               (ソースツリーに移動する)
mkdir bld               (ビルドディレクトリ bld を作成)
cd bld                  (ビルドディレクトリに移動)
../configure            (configure を実行)

一番最初からやり直したらエラーを吐かなくなったよ。
でも、色々可能性を考えて下さってありがとうございました。
お騒がせしてしまい申し訳ございませんでした。
306デフォルトの名無しさん:2008/05/13(火) 08:29:09
>>305
うわ、ビルド方法が面倒くさいね
307デフォルトの名無しさん:2008/05/13(火) 10:12:52
>301
ないほうがいいってことはないでしょ

初心者が文字列操作で使うべき方法として
提示されるかどうかはともかく
308デフォルトの名無しさん:2008/05/13(火) 11:09:48
>>> repr(unicode('あいうえお'))
"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'
好きなのを選べ
309300:2008/05/13(火) 12:46:51
>>301-304
>>307-308

皆様ご助言どうもありがとうございました。
>>302 >>308さんご提示の、コードポイント取得方法が私の期待に非常に近いものでした。
ですがそもそも、>>303 さんご指摘の通り、私には「バイト列はエンコーディングによって
はじめて定義されるもの」という認識が甘かったように思います。
私が例示したu'hello'のバイト列は、既に何かのエンコーディングが施されたもののはずだから、
そのバイト列と.encode(...)は全く等価ですね。

御蔭様で理解が深まりました。ご教示どうもありがとうございました。
310デフォルトの名無しさん:2008/05/13(火) 15:58:29
最近の初心者は文体が丁寧だな
311デフォルトの名無しさん:2008/05/13(火) 16:13:00
いいことじゃないか。
312デフォルトの名無しさん:2008/05/13(火) 18:42:46
ipython1.0 は並列に対応しているみたいだね
使ってみたいがインストールできないorz
313デフォルトの名無しさん:2008/05/13(火) 20:05:48
threading.threadで作ったスレッドをKillするにはどうすればええの?

class 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()

みたいな。
314デフォルトの名無しさん:2008/05/13(火) 20:27:04
無理。
他のOSネイティブなスレッドでも、そういう手段は用意されていないか
用意されていても推奨されていない。
315デフォルトの名無しさん:2008/05/13(火) 20:33:36
基本的にスレッドはスレッド自身で終了させた方がいいよ
316デフォルトの名無しさん:2008/05/14(水) 00:04:03
ttp://www.devchix.com/2008/05/10/kamaelia-the-future-of-python-frameworks-looks-promising/
> Kamaelia: The future of Python Frameworks looks promising.
317デフォルトの名無しさん:2008/05/14(水) 06:37:55
とりあえず clss GetBBC はよしたほうがいいな
318デフォルトの名無しさん:2008/05/14(水) 17:22:08
http://groups.google.com/group/comp.lang.ruby/search?group=comp.lang.ruby&q=rpdf2txt+

空のtxtファイルが出来る言ってるから、日本語通らない?
とかスレ違い気味だけど聞いてみる
319デフォルトの名無しさん:2008/05/14(水) 19:29:11
日本語でおk
320デフォルトの名無しさん:2008/05/16(金) 19:23:25
ウェブアプリを作りたいなと思い、教育用らしいPythonを始めようと思うのですが
XAMPPみたいにアーカイブを展開するだけで
ApacheとPythonのApacheモジュールが使えるようになるWindows向けソフトとかありますか?
お手軽な感じで始めたいです
321デフォルトの名無しさん:2008/05/16(金) 19:30:13
cd htdocs
C:\Python25\python.exe -m CGIHTTPServer

Pythonだけでできるよ。apacheなんてイラネー
322デフォルトの名無しさん:2008/05/16(金) 19:55:26
320です
どうもありがとうございます
ブラウザで表示確認できるんでしょうか
よくわからないので調べてきます
ほんと無知ですみません
323デフォルトの名無しさん:2008/05/16(金) 22:07:06
CGIHTTPServer にあったディレクトリのバグは直ったんだろうか?
324デフォルトの名無しさん:2008/05/16(金) 22:13:14
これ?
http://svn.python.org/view/python/trunk/Lib/CGIHTTPServer.py
>[Bug #737202; fix from Titus Brown] Make CGIHTTPServer work for scripts in sub-directories
325デフォルトの名無しさん:2008/05/17(土) 00:01:14
>>321
終了のしかた教えて
326デフォルトの名無しさん:2008/05/17(土) 01:59:21
Python の C コード書くときのコーディング規約って、みんなちゃんと守ってる? 
どこまで守ってる?

static PyObject *
Hoge(........)
{
•関数の戻り値型の直後に改行を入れる
•関数ブロックの始まりの括弧の直前で改行する

if (a + b + c) {
}
•関数以外のブロックは、始まりの括弧を行末に置く
•括弧の中に余分な空白を入れない
•二項演算子の両側には空白を置く

X return ( expr );
O return expr;
•冗長な括弧は使わない
327デフォルトの名無しさん:2008/05/17(土) 06:14:03
>>325
Ctrl + D とかじゃないの
328デフォルトの名無しさん:2008/05/17(土) 10:01:43
>>326
そんな規約があるとは知らなかった。
329デフォルトの名無しさん:2008/05/17(土) 10:10:11
>>326
ttp://www.python.org/doc/ の下のどこかにあります?
330デフォルトの名無しさん:2008/05/17(土) 10:59:22
どう見てもPEPだろ
331デフォルトの名無しさん:2008/05/17(土) 11:14:13
WindowsならCtrl+ZのあとにEnter
でも最初の表示どおりhelp→help()→quit→quit()と入力していってほしいかも。
332デフォルトの名無しさん:2008/05/17(土) 11:49:46
>>328,329
PEP 7 -- Style Guide for C Code
http://www.python.org/dev/peps/pep-0007/
333デフォルトの名無しさん:2008/05/17(土) 14:47:26
>>321 >>327 >>331
ありがとうございます

Windows で python -m CGIHTTPServer を実行しています

Ctrl + C
Ctrl + D
Ctrl + Z

どれもダメだったのでタスクマネージャーから殺したら終了出来ました

あとでわかったのですが、
Ctrl + C
を押したあとにブラウザの更新ボタンで再度リクエスト投げると
Keyboard Interrupt
が出て終了するようです
Windows だから select で監視出来ていないということでしょうか?
334デフォルトの名無しさん:2008/05/17(土) 15:22:22
単純にaccept()がブロックしてるだけでしょ
try節で囲むかtelnet localhost 80とかやってから落とせばいい
335デフォルトの名無しさん:2008/05/17(土) 15:44:26
>>333
普通のCGIがやりたいの?
ApacheでCGIがやりたいの?
320を読む限りではGoogle App Engineとかそういうのが近いのかな?
GAEはお勧めしないけど。
336デフォルトの名無しさん:2008/05/17(土) 19:40:24
>>335
320ですが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ともに真っ白な画面が表示されます

うまく実行させるにはどうすればいいのでしょうか・・・
337デフォルトの名無しさん:2008/05/17(土) 20:05:18
それsh辺りのスクリプトだからwinじゃ動かないよ
.pyに変えたらコマンドプロンプトにエラーメッセージが表示されてるからよく嫁
とにかくエラーメッセージはきちんと嫁
338デフォルトの名無しさん:2008/05/17(土) 20:05:43
Apacheの場合、デフォルトで
* htdocsにはHTMLおよび画像ファイル
* cgi-binにはCGIスクリプト
と分けて設置しなければいけない。
CGIHTTPServerでも似たようなものだと思う

> Message: CGI script is not executable ('/cgi-bin/check.cgi').
とりわけ使ってるのがLinuxなら
CGIスクリプトの一行目にshebang入れてchmod +xしなきゃだめ
WindowsだとWebサーバにもよるけどshebangは必要かも
339デフォルトの名無しさん:2008/05/17(土) 20:08:17
ああほんとだ。見てなかった >sh辺りのスクリプト
explore.cgiはPythonで書かれてるから動くんじゃないかな
340デフォルトの名無しさん:2008/05/17(土) 20:13:03
>>336
htdocs フォルダが My Documents みたいにスペースの入ったフォルダの配下にない?
341デフォルトの名無しさん:2008/05/17(土) 20:16:50
>>337-340
336です
親切にどうもありがとうございますm(_ _)m
ただ話の内容が難しくて理解が追いついていません・・・

windows上で使っています
いつかはレンタルサーバを借りて動かしたいと思っているのですが
windowsとlinuxでスクリプトの書き方(?)が異なるのでしょうか・・・

コマンドプロンプトにメッセージが表示されるんですね
読んでみます
テスト用に選んだスクリプトも選択ミスだったんですね
パスにスペースは入っていません
ピリオドと数字は入っています

エラーメッセージをよく読みます
342デフォルトの名無しさん:2008/05/17(土) 20:35:42
実際に試してきた

1. 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が指摘してくれている通り
343デフォルトの名無しさん:2008/05/17(土) 21:01:56
>>342
336です
env.pyはうまく動きました!と思います
45行ほどの文字列が表示されました

explore.pyもうまく表示されました
表データが表示されました

cgi-binに拡張子をpyにして入れるんですね

初歩的なことに付き合っていただき
みなさん
ありがとうございますm(_ _)m
344デフォルトの名無しさん:2008/05/17(土) 21:10:10
めずらしくpythonのお勉強なんかやってるやつがいるな
345デフォルトの名無しさん:2008/05/17(土) 21:34:07
まだpythonにたどり着いてない気が…
346デフォルトの名無しさん:2008/05/17(土) 21:44:28
c:\ に置かせようとするセンスが理解出来ん
347デフォルトの名無しさん:2008/05/17(土) 21:50:30
センスっつーより悪意を感じる
348デフォルトの名無しさん:2008/05/17(土) 22:13:52
拡張子がcgiでも関連付けでpythonを起動してやるようにすれば動くかもしれない。
実行可能ならbatなんかでもCGIとして動作するみたいだから。
349デフォルトの名無しさん:2008/05/19(月) 16:39:43
こんにちは。いつも参考にさせていただいております。
さて、早速なのですがPythonでテキストファイルへの書き込みは出来るのですが追加の書き込みの方法がわかりません。
一度内容を読み込んで結合してから書き込んでもよいのですがあまりスマートとは思えませんでしたのでここに投稿した次第です。
方法をご教授いただければ幸いです。
350デフォルトの名無しさん:2008/05/19(月) 16:42:06
open(path, 'a')
351デフォルトの名無しさん:2008/05/19(月) 16:48:57
レスありがとうございます。解決いたしました。
352デフォルトの名無しさん:2008/05/19(月) 20:59:01
下記をCGIとして動かしてみたところ、何も表示されません。
# -*- 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"


解決策など示していただければ幸いです。
353デフォルトの名無しさん:2008/05/19(月) 21:06:40
returnが関数外じゃない?
354デフォルトの名無しさん:2008/05/19(月) 21:18:28
すいません。インデントが外れていたので
http://codepad.org/r6g67n1j
http://codepad.org/vUcQXO9g
355デフォルトの名無しさん:2008/05/19(月) 21:30:37
return→sys.exit()に
356デフォルトの名無しさん:2008/05/19(月) 21:33:21
いや、だから>>353
が言っているように、関数内じゃないのに
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()
357デフォルトの名無しさん:2008/05/19(月) 21:34:44
apacheならerror_log(error.log)に出なかったっけ
358デフォルトの名無しさん:2008/05/19(月) 21:38:05
pychecker, pylintあたりで文法チェックしといた方がいいかもね
359デフォルトの名無しさん:2008/05/20(火) 06:24:41
>>355でFAもいいところなわけだが
360デフォルトの名無しさん:2008/05/20(火) 13:59:12
http://codepad.org/AkQK38ei

関数の引数って参照渡しなの?
Traclight/plugins/themaengine/api.py

あとTracってAPacheがないと動かせないですか?
PythonをUSBメモリに入れて持ち運びたい(できればtracも持ち運びたひ…)
361デフォルトの名無しさん:2008/05/20(火) 14:50:11
>>360
>関数の引数って参照渡しなの?

そうだよ。入門書嫁。
362デフォルトの名無しさん:2008/05/20(火) 14:54:54
どんな入門書だよ
363デフォルトの名無しさん:2008/05/20(火) 14:55:42
>>360
いっちゃうと代入も何もかもぜんぶ参照渡しです。
だから逆に参照渡しという概念がでてこない。

TracはFastCGIやWSGIでも動作するからApacheじゃなくてもいい。
lightyなんかいいとおもう。
あとWindows版Pythonならパスが変わっても動作するはず。
364デフォルトの名無しさん:2008/05/20(火) 15:08:52
>>362
まともな入門書にはたいてい書いてあるよ
365デフォルトの名無しさん:2008/05/20(火) 15:09:35
Pythonって参照渡しって言うのかな

>>> def foo(x): x = 2
...
>>> a = 1
>>> foo(a)
>>> a
1

いわゆる参照渡しだと、aの値が書き換えられるんじゃないの
366デフォルトの名無しさん:2008/05/20(火) 15:10:56
>>365
def foo(&x): x = 2

これでOK
まともな入門書にはかいてあるよ
367デフォルトの名無しさん:2008/05/20(火) 15:15:57
>>366
つまり、「何もかもぜんぶ参照渡し」というわけでなく、
特に指定しなければ値渡し、ということじゃない?
368デフォルトの名無しさん:2008/05/20(火) 15:16:42
参照をリファレンスという意味で使ったなら
ある意味正しいと思う
369デフォルトの名無しさん:2008/05/20(火) 15:21:18
>>> def foo(&x): x = 2
SyntaxError: invalid syntax
ついに嘘書く奴が出てきたよ
370デフォルトの名無しさん:2008/05/20(火) 15:30:59
>>365
def foo(x):
↑ここのxには確かにa = 1と同一の1が渡る。
 x = 2
↑でもこれはその1を2に置き換えるのではなく
xの参照先を2に変更することになるのでaは1のまま。
371デフォルトの名無しさん:2008/05/20(火) 15:31:48
>>365
Pythonで数字はイデア界にあるから
書き換え不能なんですよ。
372デフォルトの名無しさん:2008/05/20(火) 15:33:56
>>369
嘘を嘘と見抜く練習をしような(w
373デフォルトの名無しさん:2008/05/20(火) 15:49:35
つまり = は代入ではなく束縛ってことか

ところで
>>> lst = [0]
>>> lst[0] = lst
>>> lst
[[..]]
>>> def p(x): print x
>>> [p(x) for x in lst]
[[..]]
[None]

なんぞこれ
374デフォルトの名無しさん:2008/05/20(火) 15:55:14
循環参照は[...]になるのか。賢いな。
375デフォルトの名無しさん:2008/05/20(火) 18:42:18
>>370-371
えーと、本当に参照渡しの意味わかってんの?

fooの仮引数がxと宣言されているが、aを渡したときにそのxがaのエイリアスとして
機能する(つまりxがaと同等である)ようなものが参照渡しなんだが。
FORTRANはデフォで参照渡しだし、C++やC#は参照渡しもサポートする。

Pythonの場合、a, xは同一のオブジェクトを指している*別変数*だから、
xへの代入はaに影響を与えない。
そういうのは参照渡しとはいえないでしょ。
376デフォルトの名無しさん:2008/05/20(火) 19:00:23
>>365
引数そのものはimmutable(不変)なので、関数内で書き換え不可。
この場合の引数とは、変数のアドレスのこと。
変数が指しているデータを書き換えたい場合は、例えば以下のように出来る。

def bar(x):x[0] = 2
a = [1,2,3]
bar(a)
print a # --> [2, 2, 3]
377デフォルトの名無しさん:2008/05/20(火) 19:14:55
ミュータブルorイミュータブルというのはオブジェクトの特性であって
変数の特性ではない
378デフォルトの名無しさん:2008/05/20(火) 20:15:06
そもそもPythonのオブジェクトには代入演算子ないし
379デフォルトの名無しさん:2008/05/20(火) 20:36:17
Mr.NishioのJython本を読むと、変数はオブジェクトへのリファレンス貼る
ってことが書いてある。
買って読んでみなよ。
380デフォルトの名無しさん:2008/05/20(火) 21:01:56

> 変数はオブジェクトへのリファレンス貼る

俺の頭が弱いのか? 何が言いたいのかわからん

381デフォルトの名無しさん:2008/05/20(火) 21:05:15
C風に言えば、Pythonの変数はオブジェクトへのポインタ
代入はポインタのコピー
関数呼び出しは全部値渡し
Javaも値型(基本データ型)以外は一緒
382デフォルトの名無しさん:2008/05/20(火) 21:12:01
>>360
> 関数の引数って参照渡しなの? 

違います。

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 でいうところの代入によって渡されることを思い出して下さい。代入は単にオブジェクトへの参照を作るものなので、
呼び出す側の引数名と呼び出された側の引数名のあいだにはエイリアスはなく、「参照による呼び出し」も本質的に存在しません。)
383デフォルトの名無しさん:2008/05/20(火) 21:44:09
渡す物がlistになると挙動が変わるはず
384デフォルトの名無しさん:2008/05/20(火) 21:47:37
>>383
リストだろうが何だろうが、何も変わらない。

>>> def f(x): x = [1,2,3]
...
>>> a = []
>>> f(a)
>>> a
[]
>>>
385デフォルトの名無しさん:2008/05/20(火) 21:58:26
>>> m = []
>>> def a(x): x.append(3)
>>> a(m)
>>> a(m)
>>> m
[3, 3]

これは何が起きているんだ?


俺の頭が弱いのか? 何が言いたいのかわからん
386デフォルトの名無しさん:2008/05/20(火) 21:59:18
>>385
リストだろうが何だろうが、何も変わらない。

>>> def f(&x): x = [1,2,3]
...
>>> a = []
>>> f(a)
>>> a
[1,2,3]
>>>
387デフォルトの名無しさん:2008/05/20(火) 22:04:59
Pythonを学ぼうと思うのですが
http://python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1
で何を選べばいいのかわかりません。
388デフォルトの名無しさん:2008/05/20(火) 22:06:34
他言語経験は?
389デフォルトの名無しさん:2008/05/20(火) 22:09:35
>>385
頭が弱いんじゃなくて、基本が理解できてない。
一体どんな教材でPython覚えたんだよ?
390デフォルトの名無しさん:2008/05/20(火) 22:14:55
>>385
>>384の例は、代入によって「変数自体」を変更している
変数の変更とは、変数が持っていたオブジェクトへの参照を破棄し、
別のオブジェクトを指すようにする、ということだ

>>385の例は、破壊的メソッドによって、変数によって指されている
「オブジェクトの中身」を変更している。変数自体は何も書き換わっていない
391デフォルトの名無しさん:2008/05/20(火) 22:25:40
>>388
初めてのC#を読みました。
作ったソフトウェアは2つほどでオブジェクト指向はある程度理解しているつもりです。
392デフォルトの名無しさん:2008/05/20(火) 22:26:09
393デフォルトの名無しさん:2008/05/20(火) 22:26:37
>>392
ありがとうございます。
394デフォルトの名無しさん:2008/05/20(火) 22:28:18
>>392
表紙でtypoが名著とはこれ如何に
395デフォルトの名無しさん:2008/05/20(火) 22:31:19
ほんとだ噴いた
396デフォルトの名無しさん:2008/05/20(火) 22:34:29
>>392
家宝にさせていただきます
397デフォルトの名無しさん:2008/05/20(火) 22:45:04
>>391
プログラミング経験有りなら書籍ではないけれど
本家のチュートリアルの邦訳をまず読んでみれば
http://www.python.jp/doc/release/tut/
398デフォルトの名無しさん:2008/05/20(火) 22:45:52
x = 23
はxのポインタの値が書き換わる。
x.append(3)
はポインタの先の値が書き換わる。
399デフォルトの名無しさん:2008/05/20(火) 22:51:39
>>376>>384の挙動の違いがよくわからない
400デフォルトの名無しさん:2008/05/20(火) 22:54:11
>>399
>>376もポインタが指しているオブジェクトの中身を書き換えているだけだ

xとaは別の変数だが同じオブジェクト(リスト)を指しているから、
x経由で変更したオブジェクトをaから参照しても
同じように見えるのは当たり前だ
401デフォルトの名無しさん:2008/05/20(火) 23:02:28
>>400
>>384の場合はx=[1,2,3]で新たにリストのオブジェクトを生成して、
変数xはそれを指すから、結果的に変数aの指すオブジェクトの中身は
書き換えられなかったってことでいいのかな?
402デフォルトの名無しさん:2008/05/20(火) 23:04:21
>>401
うん
403デフォルトの名無しさん:2008/05/20(火) 23:15:12
なるほど、スッとした。さんくす。
404デフォルトの名無しさん:2008/05/20(火) 23:29:50
やっぱりスッとしない。
405デフォルトの名無しさん:2008/05/21(水) 00:02:10
>>392
Amazonって、ランキングが出るじゃん。見たんだけどさ。
 
 
 
この時期でこのランキングはないわ。
名著なのに売れないなんておかしいな。
芸術作品ですか。
406デフォルトの名無しさん:2008/05/21(水) 00:12:37
>>70のリンクの人から見ると名著なんだよ
407デフォルトの名無しさん:2008/05/21(水) 00:20:13
>>70のリンクの人のせいで売れないんじゃね?
まるで逆宣伝だし。
408デフォルトの名無しさん:2008/05/21(水) 00:27:14
そもそも対象となる層が少なすぎる感じがする
409デフォルトの名無しさん:2008/05/21(水) 00:28:39
日本人限定だしね
410デフォルトの名無しさん:2008/05/21(水) 00:39:27
そのうえ変な人に気に入られてるようじゃ相当マイナスだね。
411デフォルトの名無しさん:2008/05/21(水) 01:00:29
Jython使うとPOIも使えると思うのですが
CPythonからPOIを使えるようにはできませんか?
412デフォルトの名無しさん:2008/05/21(水) 01:08:00
Java使え
413デフォルトの名無しさん:2008/05/21(水) 01:10:44
替わりにwin32comかpyExceleratorを使うとか
414デフォルトの名無しさん:2008/05/21(水) 02:00:14
win32comもpyExceleratorは使ったことがあるのですが
どっちもいまいちなのでPOIを使いたいんですけど
Javaは使いたくないんです
415デフォルトの名無しさん:2008/05/21(水) 02:30:37
GroovyとJRubyやるからどっかいけ

416デフォルトの名無しさん:2008/05/21(水) 02:33:37
>414
ならばCPythonでJava classファイルを使えるようにする仕掛けをこさえるしかなかろ
それって結局JavaVMの特殊な独自実装になるような気もするが。
となると「Javaを使わない」という目的からは厳密には外れるな。

あるいはPure PythonでPOIを書き直すとか
417デフォルトの名無しさん:2008/05/21(水) 02:50:31
そうですね
そうします
418デフォルトの名無しさん:2008/05/21(水) 03:46:21
死ねばいいよ
419デフォルトの名無しさん:2008/05/21(水) 04:20:22
死ねって・・・
Pythonの信者の人が反社会的っていうのはほんとなんですね
420デフォルトの名無しさん:2008/05/21(水) 08:00:56
Jython本を読むと心が洗われます
421デフォルトの名無しさん:2008/05/21(水) 09:01:36
>>406
これはむしろ愛と呼べる代物だ。
温泉ではアッー!な光景が繰り広げられるに違いない。
422デフォルトの名無しさん:2008/05/21(水) 11:30:56
>>421
結論から言うと、今回のRuby Kaigiのテーマは"愛"。
:
Ruby愛以外に何か付け加えるものがあるとするならば、あとは、覚悟。
423デフォルトの名無しさん:2008/05/21(水) 11:44:02
イケメンハッカーはJRubyの本を出せばよかったんじゃね?
424デフォルトの名無しさん:2008/05/21(水) 13:12:48
Pythonソースコード完全解説とかなら普通に読みたいな
425デフォルトの名無しさん:2008/05/21(水) 13:14:46
自分でコードも読めない奴は、技術者としては失格だと思うがな。
426デフォルトの名無しさん:2008/05/21(水) 14:17:31
neet山
427デフォルトの名無しさん:2008/05/21(水) 14:32:01
RubyConsortium
Rubycon
不良品乱発
428デフォルトの名無しさん:2008/05/22(木) 03:50:04
会社で作るソフトに組み込むスクリプトとしてぜひ Python を押したいんだけど、
「(スクリプトの)逆アセンブルがすげー簡単ぽいけど、どうなのよ」みたいなこと言われたんだ。
そういうわけで、会社を納得させるべく、「思いつきでちょっと解析したぐらいでは分からない程度」
に Python スクリプトの難読化について考えてみたい。
429デフォルトの名無しさん:2008/05/22(木) 04:01:50
(自分がパッと思いつく程度の)スクリプトの解析方法に付いて考えてみる。

A. python スクリプトファイルが丸見えの場合
.py ソースは問題外。
.pyc は dis モジュールに食わせてダンプして終了。しかもドキュメンテーション文字列付き。
.pyo も dis モジュールに食わせて終了。

B. スクリプトファイルが見えない場合
Python##.dll を改造してアプリケーション付属のDLLと差し替えて、
インポートしたモジュールのコードオブジェクトをダンプするなり別ファイルに書き出すなりする

C.コンパイル済みモジュールファイルが丸見えだが、dis に食わせても解析失敗する場合
カスタム Python を使用している事を疑う.
アプリケーション付属の Python##.dll を参照するようにして python.exe を実行し、
自作のスクリプトを pyc に変換させ、純正の pyc と比べてみる。


430デフォルトの名無しさん:2008/05/22(木) 04:17:33
そう考えると、
•独自のインポータを sys.path_hooks に組み込んで自作アーカイブからスクリプトファイルを読み出すようにする
•独自アーカイブに含まれているスクリプトは、カスタム Python を使って読み書きするための特殊 pyc
•カスタムといっても、ようは pyc の読み書き部分だけつじつまを合わせれば良い
•従って、改造するのは marshal.c あたり?

431デフォルトの名無しさん:2008/05/22(木) 05:37:37
>>428
「解析されて何か問題でも?」と答えておけ。
本当に解析されて困るプログラムなんて、この世にそれほど存在しないだろ。
432デフォルトの名無しさん:2008/05/22(木) 11:39:00
GPL
433デフォルトの名無しさん:2008/05/22(木) 11:49:46
JavaだってC#(IL)だって逆コンパイラは存在してるし
難読化とかもあるけど、最終的には>>431のような気がする
434デフォルトの名無しさん:2008/05/22(木) 12:15:57
事情をよく知らない割には権限だけ持っていて、
変化を嫌いたがるダメ官吏みたいな上司を説得するのが一番大変なんだよね〜。
435デフォルトの名無しさん:2008/05/22(木) 12:16:05
pyc や pyo はバイナリエディタで開いただけでも識別子名と関数名がまるわかりだからねえ
簡単な難読化ぐらいならやる価値あると思う
436デフォルトの名無しさん:2008/05/22(木) 13:34:43
難読化とかwww馬鹿だろwww
死ねばいいのに
437デフォルトの名無しさん:2008/05/22(木) 16:17:07
簡単な難読化をしてみせるだけで>428の仕事が楽になるならいいじゃないか。
それ自体に意味があるかどうかはどうでもいいのだ。
438デフォルトの名無しさん:2008/05/22(木) 16:19:55
マってたまに、子供騙しで騙してしまえばいい相手の要求に対して、
妙に本気になって対処してしまうことがあるよね。自戒も含めてw
439デフォルトの名無しさん:2008/05/22(木) 16:46:15
全て eval を使って文として
他のプログラムに仕込むとか
440デフォルトの名無しさん:2008/05/22(木) 18:07:12
子供騙しで手を抜く奴はプログラマだ!
バレないように手を抜く奴は訓練されたプログラマだ!

こうですか? わかりません (>_<)
441デフォルトの名無しさん:2008/05/22(木) 19:29:23
>>434
そういうときはその上司の上司を説得するべき
442デフォルトの名無しさん:2008/05/22(木) 21:44:24
適当にxorして「暗号化しました!」
とか言っとけば大丈夫
443デフォルトの名無しさん:2008/05/22(木) 22:47:10
ソースコード自身とxorしたから大丈夫です!
444デフォルトの名無しさん:2008/05/23(金) 01:11:01
>>443
0x00とXORしないとダメだよ!!
445デフォルトの名無しさん:2008/05/23(金) 02:15:01
ネタならネタで良いんですが
もう少し楽しめるのをおながいします
446デフォルトの名無しさん:2008/05/23(金) 02:44:30
pygameで英語分からなくて暴れてる厨房だろ
放っとけよ
447デフォルトの名無しさん:2008/05/23(金) 08:11:47
pygameの和訳さっさと進めろよハゲども
448デフォルトの名無しさん:2008/05/23(金) 08:45:46
自己解決しました。
449デフォルトの名無しさん:2008/05/23(金) 09:17:04
やめてください
450デフォルトの名無しさん:2008/05/23(金) 10:14:11
イケメンハッカーが自決しました。
451デフォルトの名無しさん:2008/05/23(金) 10:33:08
やめてください。
452デフォルトの名無しさん:2008/05/23(金) 10:33:59
自己解決禁止
453デフォルトの名無しさん:2008/05/23(金) 10:34:36
>>441
お花畑にお住まいの妖精さんですか?
現実は厳しいですよ。
454デフォルトの名無しさん:2008/05/23(金) 10:35:08
neet山が自己休刊やめてください。
455360:2008/05/23(金) 10:59:40
>>360
>>> 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}

渡すものが、辞書かリストか、で字面的に違うということですね
事故解決しました。(&なんて使わねー)(*はリスト**は辞書ですが無くても動くのです無害です)
456デフォルトの名無しさん:2008/05/23(金) 11:07:57
>455

ぜんぜん解決してない ...

>>> 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ありそうな気もするけど)


457360:2008/05/23(金) 11:30:33
>>456
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とか、いい感じなものだと最近わかり始めてきますた
458デフォルトの名無しさん:2008/05/23(金) 12:07:53
自己解決禁止しちゃいかんだろww
459デフォルトの名無しさん:2008/05/23(金) 16:11:33
D:\TracLight\python>python
Python 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'

同じディレクトリ下にあるファイルを読むにはどう書けば良いですか?
460デフォルトの名無しさん:2008/05/23(金) 16:19:24
>>> fn = os.path.join(os.getcwd(), 'test-file.txt')
>>> fn = os.path.join('./', 'test-file.txt')
>>> open(fn).read()

.txt 拡張子が余計に付いてだけでした orz
事故レスすまそ
461デフォルトの名無しさん:2008/05/23(金) 17:41:49
>>459
なんでバグだらけの旧バージョン使ってるんだ?
462デフォルトの名無しさん:2008/05/23(金) 19:29:52
うるさいだまれ
463デフォルトの名無しさん:2008/05/23(金) 19:36:57
自己憤慨しました。
464デフォルトの名無しさん:2008/05/23(金) 21:15:47
自己発電しました。
465デフォルトの名無しさん:2008/05/23(金) 22:41:04
助けて
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)
466デフォルトの名無しさん:2008/05/23(金) 22:43:40
467デフォルトの名無しさん:2008/05/23(金) 23:13:26
マルチしちゃったか
死ね
468デフォルトの名無しさん:2008/05/23(金) 23:38:32
ちょっと教えて欲しいんだけど、pythonの正規表現で先読みって使えないの?
下みたいに書いても全然文字列を分割してくれないんだけど

line = '123,456,79'
regexp = re.compile('(?=5)')
print regexp.split(line)
469デフォルトの名無しさん:2008/05/23(金) 23:56:48
>>468
http://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']
470デフォルトの名無しさん:2008/05/23(金) 23:57:19
>>468
先読みが使えないっていうより
re.split() に長さ 0 のパターンを渡しても何もしてくれないとかじゃない?
他の言語とかは挙動が違った気がする
471デフォルトの名無しさん:2008/05/23(金) 23:57:58
>>468
ライブラリリファレンスを見れば分かるけど、先読みは使えるよ。

よくわからんが、split()がzero-width assertionでは機能しないのかもな。
split()に与えた正規表現にマッチした文字列をデリミタとみなして分割するから、
「位置」じゃなくて「文字(列)」にマッチする正規表現じゃないとダメ、とかさ。

ただの想像だけど。
472471:2008/05/23(金) 23:58:39
ぐは。レスかぶりまくりじゃん。
473デフォルトの名無しさん:2008/05/24(土) 00:15:30
先読みの使い方を間違えてる
474デフォルトの名無しさん:2008/05/24(土) 00:38:16
お前は次に「自己解決しました」と言う。
475デフォルトの名無しさん:2008/05/24(土) 00:46:50
自己解決しました
476468:2008/05/24(土) 01:09:50
レスサンクス
やっぱり場所指定の正規表現じゃ分割しないみたいだね
perlとrubyでもsplit関数を動かしてみたんだけど、
perlはpythonと同様で場所指定の正規表現じゃ分割してくれなかったよ
一方rubyは意図したとおりに場所指定で分割できた
言語毎に結構挙動が違うもんなんだね


477デフォルトの名無しさん:2008/05/24(土) 01:31:05
>>472
ぐは禁止。きもい。
478デフォルトの名無しさん:2008/05/24(土) 01:32:10
ruby最強!
479デフォルトの名無しさん:2008/05/24(土) 01:33:37
regexp = re.compile('.(?=5)')
480デフォルトの名無しさん:2008/05/24(土) 01:50:44
>479
それだと一文字消えちゃうだろう常識で考えて
481デフォルトの名無しさん:2008/05/24(土) 03:40:04
pyunoでOpenOfficeの制御したかったのだけど
ubuntu7.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'
482デフォルトの名無しさん:2008/05/24(土) 03:49:34
>>468

Perlのバージョンは?
試したらできたよ。

my @f = split /(?=5)/, $str;
print join(':', @f), "\n";

483デフォルトの名無しさん:2008/05/24(土) 05:24:45
>>> import re
>>> line = '123,456,79'
>>> regexp = re.compile('')
>>> regexp.split(line)
['123,456,79']

そもそもこうなるんだもんなぁ
484デフォルトの名無しさん:2008/05/24(土) 08:28:25
>>477
ぐはははははははははははhahahahahahahahaha!!!!!
485デフォルトの名無しさん:2008/05/24(土) 10:14:48
ぐは。自己解決しました。
486デフォルトの名無しさん:2008/05/24(土) 12:39:52
>482
perlでもsplitできるね

pythonで位置指定の分割ってどうやんだろ
487デフォルトの名無しさん:2008/05/24(土) 13:03:35
こんな感じの関数を自分で作って使えばいいんじゃね

def 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
488デフォルトの名無しさん:2008/05/24(土) 13:14:27
リスト返すようにしちゃったけど、ジェネレータにすべきだったか
ま、その辺は好きに汁
489デフォルトの名無しさん:2008/05/24(土) 14:06:35
>487
re.findall()
490デフォルトの名無しさん:2008/05/24(土) 14:18:04
re.findall()がどうしたの?
491デフォルトの名無しさん:2008/05/24(土) 15:33:29
Perl で split('', $str); に相当するのは
Python ではどう書けばよいですか?
492デフォルトの名無しさん:2008/05/24(土) 15:37:47
>>491
list(str)
493デフォルトの名無しさん:2008/05/24(土) 19:16:39
オブジェクトのメソッドを一覧で取得するにはどうすればええの?
494デフォルトの名無しさん:2008/05/24(土) 19:24:33
filter(callable, dir(hoge))
495デフォルトの名無しさん:2008/05/24(土) 19:25:54
[x for x in dir(obj) if callable(getattr(obj, x))]
496デフォルトの名無しさん:2008/05/24(土) 21:30:26
>>494
動きません。
自己確認してください。
497デフォルトの名無しさん:2008/05/24(土) 22:48:52
自己完結しました
498デフォルトの名無しさん:2008/05/24(土) 22:51:21
>>494
オッサン臭いコードだな。その上動かないってどんだけ(www
499デフォルトの名無しさん:2008/05/24(土) 22:58:55
itertools は使えそうで使えない
500デフォルトの名無しさん:2008/05/24(土) 23:03:49
>>498
まさに労害(WWW
501デフォルトの名無しさん:2008/05/24(土) 23:17:21
おれさまがなおしてやった
filter(lambda x : callable(getattr(obj, x)), dir(obj))
502デフォルトの名無しさん:2008/05/24(土) 23:28:11
ここまで来ると、わざわざfilterを使う意味なくね?
503デフォルトの名無しさん:2008/05/25(日) 00:07:56
pythonのlambdaって読みづらいだけじゃね?
pythonの基本的な文法と比べると汚い
504デフォルトの名無しさん:2008/05/25(日) 00:14:14
Guidoもlambdaは嫌いだったと思う。
lambdaを使うのは変態か、自称イケメンハッカーのワンライナー芸人だけだろ。
505デフォルトの名無しさん:2008/05/25(日) 01:19:41
どうせ残すなら
いろいろできるようにすればいいのに
506デフォルトの名無しさん:2008/05/25(日) 01:32:31
cshといっしょでコード互換のために残してるだけなんだから
もう新規につかうようなもんじゃないだろ。
507デフォルトの名無しさん:2008/05/25(日) 02:44:32
Pythonプログラミング入門はクソだとよ。
508デフォルトの名無しさん:2008/05/25(日) 03:45:36
自分の言葉で語りなさい
509デフォルトの名無しさん:2008/05/25(日) 05:36:58
ということにしたいのですね
510デフォルトの名無しさん:2008/05/25(日) 09:50:46
懐かしいフレーズだ
511デフォルトの名無しさん:2008/05/25(日) 10:51:46
皆さん lambda と聞くと昔の傷がうずくのですね
512デフォルトの名無しさん:2008/05/25(日) 10:52:28
Twisted本、クソ本フラグがたった感が。
513デフォルトの名無しさん:2008/05/25(日) 11:37:37
うはは、わかりません。
514デフォルトの名無しさん:2008/05/25(日) 12:29:07
関数をファーストオブジェクトとして扱えないのはしょうがないが
だからってpython の lambda はちょっと無しだろ
C++みたいに演算子()をオーバーロードできればいいのに
515デフォルトの名無しさん:2008/05/25(日) 12:33:36
>>514
関数内で関数が定義できるんだから、lambdaはあれで良い。
演算子オーバーロードも、__call__でできるじゃないか。
516デフォルトの名無しさん:2008/05/25(日) 12:40:01
うはは、わかりません。
517デフォルトの名無しさん:2008/05/25(日) 13:11:22
>>514
Pythonの関数はファーストクラスオブジェクトだが
518デフォルトの名無しさん:2008/05/25(日) 13:23:23
ファーストオブジェクトってどういう意味?
519デフォルトの名無しさん:2008/05/25(日) 13:32:38
http://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88
>>514は、匿名リテラルで宣言できる関数が制限されていると言いたいんだと思う。
でも、def foo() して、 bar = foo; del foo; したら、foo()できなくなる。Pythonのdefは関数定義と
変数への代入を同時にしているというだけなので、関数がファーストクラスオブジェクトと言っても良い。
520デフォルトの名無しさん:2008/05/25(日) 14:00:35
>>519
ありがとう。ファーストクラスオブジェクトでググればよかったのか。

俺もPythonのlambdaは気持ち悪いと思う。
あと、exceptで例外が複数のときだけ括弧つけるのも気持ち悪い。
521デフォルトの名無しさん:2008/05/25(日) 14:11:16
(UNIX環境の)Pythonってソースプログラム実行中にソースの書き換えってできるの?
インタプリタだから、できそうなイメージなんだけど
522デフォルトの名無しさん:2008/05/25(日) 14:13:28
pythonって関数内で関数作って関数を返す関数作れたっけ?
523デフォルトの名無しさん:2008/05/25(日) 14:26:28
tupleが (a,) ってなるのがきもい



524デフォルトの名無しさん:2008/05/25(日) 14:50:03
python の快活環境どれがおすすめですか?
525デフォルトの名無しさん:2008/05/25(日) 15:54:31
>>522
いろんなデコレータのソース読んでみたら?そういうのばっかりだから。
Pythonのデコレータは、関数を引数にして関数を返す関数。
@foo(a,b)
def bar():
の場合、fooは、"関数を引数にして関数を返す関数"を作成して返す関数になる。
526デフォルトの名無しさん:2008/05/25(日) 15:58:09
間違えた
快活環境じゃなくて開発環境
527デフォルトの名無しさん:2008/05/25(日) 16:27:51
>>522
名前なしでそれができない、ってだけ。

あと定義された時の環境に対して書き換えが効かない。
528デフォルトの名無しさん:2008/05/25(日) 17:03:38
385 名前:デフォルトの名無しさん[] 投稿日:2008/05/23(金) 22:18:26
助けて
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)
529デフォルトの名無しさん:2008/05/25(日) 17:56:17
御臨終です
530デフォルトの名無しさん:2008/05/25(日) 17:59:29
org が orz の相似に見えた
531デフォルトの名無しさん:2008/05/25(日) 19:11:41
そういやIronPythonのスレはあるのにJPythonのスレはないんですね
532デフォルトの名無しさん:2008/05/25(日) 20:08:15
Jythonのスレならあるでしょ。
専用じゃないけど
533デフォルトの名無しさん:2008/05/25(日) 20:17:07
>>523
これならきもくない?
tup = (
a,
)
534デフォルトの名無しさん:2008/05/25(日) 20:48:17
>>525,527

ありがとう
やってみたら出来たよ
これで使いやすいschemeの代わりが出来た
535デフォルトの名無しさん:2008/05/25(日) 21:57:03
そんな見た目だけの問題じゃないよ! >533

誰かが「カンマがtupleを作るんだ、カッコじゃない」と言ってたが、

>>> x=()
>>> type(x)
<type 'tuple'>

キモイヨー
536デフォルトの名無しさん:2008/05/25(日) 22:22:42
>>535
男なら、空のタプルを作りたいときがあるってもんだ。
537デフォルトの名無しさん:2008/05/26(月) 00:00:59
python for S60のスレはないよなぁ
538デフォルトの名無しさん:2008/05/27(火) 00:06:35
パックリ(i)

キモイヨー
539デフォルトの名無しさん:2008/05/27(火) 00:15:23
RDBで言うテーブルに対するビュー
Cで言う配列に対するポインタ
みたいなノリで使える、オリジナルデータを更新可能なスライスみたいなの無いかな

スライスみたいにコピーするんじゃなくて参照を握っていて、
更新も出来るやつ
自分で作るしかない?
540デフォルトの名無しさん:2008/05/27(火) 00:44:42
うはは、キモイヨー。
541デフォルトの名無しさん:2008/05/27(火) 00:49:16
>>537
需要があるのか?
542デフォルトの名無しさん:2008/05/27(火) 01:48:06
>>539
ありますよ
543デフォルトの名無しさん:2008/05/27(火) 09:27:23
>539

10行ぐらいで書けそうだから、必要な人は手元で書いちゃうんでは。
544デフォルトの名無しさん:2008/05/27(火) 09:57:14
ちょちょっっと書いてみていただけませんか?
545デフォルトの名無しさん:2008/05/27(火) 11:27:27
>>544
書きました。
見せないけど。
546デフォルトの名無しさん:2008/05/27(火) 16:41:49
さては11行になったな?
547デフォルトの名無しさん:2008/05/27(火) 17:55:58
>>539
arrayじゃ駄目なの?
548539:2008/05/27(火) 18:28:38
レスくれた人どうもです

>>542 モジュール名を教えていただけませんか

>>543 書いてみましたが、自分は10行では無理でした
__getitem()__に負のインデクスやsliceオブジェクトが渡された時の
処理とかをいちいち書くのがウザいです

>>547 arrayは全く用途が違うのではないでしょうか
シークエンスの部分列を「参照」するだけならただのスライスで良いし
itertools.islice()ならコピーを避けられますが、
元のシークエンスを「更新」もしたいわけです
549デフォルトの名無しさん:2008/05/27(火) 18:51:41
pygameの和訳完成してもいいころなんじゃねーの
550デフォルトの名無しさん:2008/05/27(火) 19:40:47
547は配列を作りたいのかと勘違いした。
ようするに、ポインタに相当するものを作りたいのか。
551デフォルトの名無しさん:2008/05/27(火) 19:53:15
うはは、すみません
552デフォルトの名無しさん:2008/05/27(火) 20:10:20
>>548
要するにスライスをスライスして新しいスライスを作れればいい(そこを自前で実装するのは面倒)ということだな。
スライスをスライスしてスライスを作るというのはありがちな気がするので既にありそうだが。俺は残念ながら知らん。
自前で実装するのは確かに面倒そうだ。
553デフォルトの名無しさん:2008/05/27(火) 22:02:45
>>539
http://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で場合分け必要だし
554デフォルトの名無しさん:2008/05/27(火) 22:15:15
numarray
555デフォルトの名無しさん:2008/05/27(火) 22:36:17
http://coding.derkeiler.com/Archive/Python/comp.lang.python/2006-10/msg02680.html

これとかヒントになるかも
一部を掬って変化を加えたら、全体が書き換わる…
556539:2008/05/27(火) 22:52:01
ありがとうございます
NumPyですか
数値計算が目的という訳ではなかったので完全に盲点でしたが、使えそうですね

ちょっと試してみます
557デフォルトの名無しさん:2008/05/28(水) 09:09:02
これからはRuby一色の時代。
PerlもPythonも廃れ、Rubyだけが生き残る新時代
558デフォルトの名無しさん:2008/05/28(水) 09:42:45
その「新時代」になってから勉強しても全然遅くない。
559デフォルトの名無しさん:2008/05/28(水) 12:02:30
for e in dir():
  print e

とかで出力されるデータをA-Z, a-z, __??__で
頭文字ごとに改行して出力するにはどうしたら良いですか?
560559:2008/05/28(水) 14:23:42
>>> def print_elem_n(elem):
...  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
561デフォルトの名無しさん:2008/05/28(水) 14:35:40
>>> a2z="abcdefghijklmnopqrstuvwxyz"

>>> a2z=range(ord('a'), ord('z')+1)
562デフォルトの名無しさん:2008/05/28(水) 14:35:53
groupby使ってみるといいんじゃない?

from itertools import groupby
from operator import itemgetter
for k, g in groupby(sorted(dir(str)), itemgetter(0)):
 print ", ".join(g)
563デフォルトの名無しさん:2008/05/28(水) 14:36:51
>>560
printだけ書けば改行できるのに。

lastchar = dir()[0][0]
for e in dir():
if e[0] != lastchar:
print
lastchar = e[0]
print e,

これじゃダメ?
564デフォルトの名無しさん:2008/05/28(水) 14:37:50
インデント消えちゃったけど、まぁ分かるよね?w
565デフォルトの名無しさん:2008/05/28(水) 14:54:57
>>562
便利なもんがあるんだなー
こんな普通な奴しか思いつかなかった

def f(seq):
    d = {}
    for s in seq:
        d.setdefault(s[0], []).append(s)
    for k in sorted(d.iterkeys()):
        print ','.join(d[k])
566563:2008/05/28(水) 15:07:07
Python始めて1週間の俺には", ".join(g) の部分がよく分からなかったが、
gのシーケンスを", "で区切った文字列が得られるのか。
567デフォルトの名無しさん:2008/05/28(水) 15:18:09
むしろ g は glue の g かもしれないぜ
568デフォルトの名無しさん:2008/05/28(水) 17:07:40
>>563
for e in dir():
 1. if 違う要素かどうか判定: 改行\n + フラグを更新する
 2. 要素を出力する

d。ノートにでもまとめて整理しとく乙
569デフォルトの名無しさん:2008/05/28(水) 17:19:04
>>566
個人的には
リスト.join(区切り文字)
の方がわかりやすいと思ってる。
570デフォルトの名無しさん:2008/05/28(水) 17:27:24
1. FAQ嫁
2. Ruby使え
3. 俺もそう思う
571デフォルトの名無しさん:2008/05/28(水) 17:43:04
引数にジェネレータを与えられるのはstr.joinの一つの利点だと思う
572563:2008/05/28(水) 17:51:18
>>569
俺も文脈的に直感的でないと思うけど、文字列クラスにjoinメソッドがあるという
形だからしょうがないね。
静的関数として提供した方がいい気がするが、元々静的関数だったのが廃止されて
メソッドになったのね。
573デフォルトの名無しさん:2008/05/28(水) 19:13:53
djangoを使ってみようと思っています。

それでまずはmodelを定義してデータを入れるところまではできま
した(sqlite3とかで直接DBの中身見て入ったのを確認した)。

だけど、manage.py shellでデータを確認しようとしても見れません。

具体的にはhoge.objects.all()とかってやっても[]が表示されるだ
けです。

これはなぜなんでしょうか?

あと、adminのhogeの画面でも
5 hoges
のように表示されるだけで、DBに格納したデータをいじれたり、見
る事ができない状態です。

何かアドバイスがいただければ助かります。よろしくお願いします。
574デフォルトの名無しさん:2008/05/28(水) 20:13:19
うちではみれてる
575デフォルトの名無しさん:2008/05/28(水) 23:51:30
ディショナリをそのキー名の変数にするってどうすればいいんですか?
つまり
a{hoge:1,foo:2,bar:3}
を↓のようにしたいです。
hoge = 1
foo = 2
bar = 3
576デフォルトの名無しさん:2008/05/28(水) 23:56:27
>>575
入門書嫁。
577デフォルトの名無しさん:2008/05/29(木) 00:09:21
>576
みんpyには載ってませんでしたけど、ググッたら解決しました。
exec使えばいいんですね!
578デフォルトの名無しさん:2008/05/29(木) 00:10:11
D = dict(hoge=1, foo=2, bar=3)
locals().update(D)

あまり行儀良くないとは思うが一応
579デフォルトの名無しさん:2008/05/29(木) 00:11:39
D = {'foo': 1, 'bar': 2, 'baz': 3}
for k in D: exec "%s = %s" % (k, D[k])

ついでに漏れも生まれて初めて exec 使ったので記念に
580デフォルトの名無しさん:2008/05/29(木) 00:14:25
>>575
ローカル変数にする意図が全くわからない。
そんなことして何か嬉しいか?
581デフォルトの名無しさん:2008/05/29(木) 00:20:47
>>577
うはは、わかりません。
582デフォルトの名無しさん:2008/05/29(木) 00:21:30
クラスの属性の初期化時とか
583デフォルトの名無しさん:2008/05/29(木) 00:22:32
>>575
>a{hoge:1,foo:2,bar:3}

このコードはどんな入門書にも載ってないよ(www
584デフォルトの名無しさん:2008/05/29(木) 00:24:03
cur.execute("insert name (age,job,height) values (?,?,?)",
people['age'],people['job'],people['height'])
↑みたいなのを
cur.execute("insert name (age,job,height) values ?,?,?)",
age,job,height)
みたいにすっきりさせたいんです。カラムが多いので。
585デフォルトの名無しさん:2008/05/29(木) 00:26:53
>>577,579
execなんて危ないもの、初心者が使っちゃいけません!!
586デフォルトの名無しさん:2008/05/29(木) 00:27:54
>>584
%のフォーマットには辞書を渡す方法もある
"insert name (age,job,height) values %(age)s,%(job)s,%(height)s)" % people
587586:2008/05/29(木) 00:29:34
すまん、やりたいことと違うみたい
588575:2008/05/29(木) 00:33:18
>>586

へー。そういうのもあるんですね。勉強になります。今回は>>579
方のやつを使わせていただこうと思います。ありがとうございます!
589デフォルトの名無しさん:2008/05/29(木) 00:35:20
>>585
eval 使ったらこけて何これって思ったさ

>>584
これでもいけたような気がする。間違ってたらごめんね
cur.execute("insert name (age,job,height) values (:age, :job, :height)", people)
590デフォルトの名無しさん:2008/05/29(木) 00:39:42
>>582
目的によっては、
for k in dic:
 setattr(obj, k, dic[k])
で充分だったりする。
591デフォルトの名無しさん:2008/05/29(木) 01:24:15
>>590
せっかくだからiteritems()使おうよ。

for k, v in dic.iteritems():
 setattr(obj, k, v)
592デフォルトの名無しさん:2008/05/29(木) 05:49:04
djangoのチュートリアルに全部書いてあることばかりですねわかります
593デフォルトの名無しさん:2008/05/29(木) 08:04:47
iteritems なんてのがあったのか。。。 いままで items しか使ってなかったよ。

。。。。でもどうせ 2.6 あたりで統合されるんでしょ?
594デフォルトの名無しさん:2008/05/29(木) 09:13:26
djangoってなんで日本ではやらないんですか?
595デフォルトの名無しさん:2008/05/29(木) 09:23:42
お前が使ってなんかすごいの作ってくれよ
596デフォルトの名無しさん:2008/05/29(木) 09:42:04
なるほど、595さんみたいなダメな人しか使ってないからなんですね。
はやらない理由が分かりました。
597デフォルトの名無しさん:2008/05/29(木) 12:35:53
>>593
2.Xでは互換性維持、3.0以降からitemsがiteritems相当になる、だったと思う
598デフォルトの名無しさん:2008/05/29(木) 16:57:15
(日本では)、やらないか
599デフォルトの名無しさん:2008/05/29(木) 17:56:25
アッー、、、
600デフォルトの名無しさん:2008/05/29(木) 19:26:53
for k in (ここに使用):
としたときdictオブジェクトとかその.keys()いれたときのkに出てくる順番はどう決まるのですか?
601デフォルトの名無しさん:2008/05/29(木) 19:29:39
シェフの気まぐれ順。
602デフォルトの名無しさん:2008/05/29(木) 19:33:54
多分内部ハッシュ
気にしちゃダメ
順序に依存しない方法を考える>ordereddict自作
603デフォルトの名無しさん:2008/05/29(木) 19:40:09
>>599
ところでおまいら温泉行く?
604デフォルトの名無しさん:2008/05/29(木) 19:58:22
了解しました
どうもありがとうございました
605デフォルトの名無しさん:2008/05/29(木) 21:05:55
webアプリケーションフレームワークを使わないpython製のCMS(WIKI、BLOG含む)って
MoinMoinとPyblosxomくらいですか?
606デフォルトの名無しさん:2008/05/29(木) 21:08:28
温泉はいつも行ってる
607デフォルトの名無しさん:2008/05/29(木) 21:15:24
>>594
一時期マイブームだったけど
完成が速すぎて今はメンテナンスだけ
また何か作るときにお世話になると思う

以下djangoに限らずweb開発環境全般に言えるんだが

それなりの努力でそこそこのものが出来るのは利点だけど
プログラミングの面白さはあんまりないかも知れない

djangoだけで出来ない部分を自分でプログラムする訳だけど
そこは最初からdjango使わなくても出来ると言えば出来る訳で
あえてdjango使うのは手間を減らすためだから
djangoで出来る範囲のことをdjangoに精いっぱいやらせるのが良い

「知ってれば簡単」という状態を期待してdjangoを使っている
だけどそのためにはdjangoでどうするのかを知ってないといけない
すごいジレンマが起きる
一通り覚えるまで苦労する
608デフォルトの名無しさん:2008/05/29(木) 21:35:42
turbogearsってなんで日本
609デフォルトの名無しさん:2008/05/29(木) 22:51:51
そういやZopeとかもあったなぁ。くだらないアプリだったけど。
あってもなくてもどうでもよかった。
610デフォルトの名無しさん:2008/05/29(木) 22:53:36
python2 と3の違いが列挙されているサイトはありませんか?
611デフォルトの名無しさん:2008/05/29(木) 22:58:26
612デフォルトの名無しさん:2008/05/29(木) 23:00:19
>>611
ありがとうございます
どのように変わるのか知りたかったのでこれから見てみようと思います
613デフォルトの名無しさん:2008/05/29(木) 23:37:35
本家のも見ておくと良いかも
http://docs.python.org/dev/3.0/whatsnew/3.0.html
614デフォルトの名無しさん:2008/05/30(金) 10:02:34
楽しようとして倍苦労する
そして二度と使わない
615デフォルトの名無しさん:2008/05/30(金) 11:27:00
3つのなかではdjangoが一番おすすめなの?
616デフォルトの名無しさん:2008/05/30(金) 11:48:16
>>615
お手軽・・・ならDjangoかもな。
まじめにやるなら、Paste/Pylonsで、wsgiをベースにしたデザインのフレームワークを使った方が良いかも知れない。
617デフォルトの名無しさん:2008/05/30(金) 12:19:33
日本のコミュニティのgdgdぶりならdjango,pylonsもかわりないよ!
618デフォルトの名無しさん:2008/05/30(金) 15:47:25
import するとそれのpycが作られてしますんですがこれを抑制できませんか?
変数がつまったちょくちょく変更される.pyのファイルがあり、
それを実際動かすほうで取り込んで変数を使っているのですが
pycがあるといちいち消さなくてはいけなくて不便です
619デフォルトの名無しさん:2008/05/30(金) 16:00:27
>>618
pycを消す必要はないと思うが。
タイムスタンプが古ければ無視されるから害はないかと。
620デフォルトの名無しさん:2008/05/30(金) 16:06:36
そうだったんですか、pyc優先だと思い込んでました
どうもすいません
ありがとうございました
621575:2008/05/30(金) 16:42:02
>>589

そのやり方でできました!

↓に落ち着こうと思っていたんですが、気持ち悪いなーと思っていました。
for k,v in item.iteritems(): exec '%s = u"%s"' % (k,v)

そちのやり方の方が分かりやすく安全ですね。使わせていただきます。すば
らしいです。ありがとうございます。

pysqliteのマニュアルはtutorial部分ちゃんと読んだつもりなんですが、
そのやり方は知らなかったです。
622デフォルトの名無しさん:2008/05/30(金) 17:13:56
あれ?チュートリアルに書いてなかったか?
いや、2.5のドキュメントの方か。
623デフォルトの名無しさん:2008/05/30(金) 19:58:50
サンプルソース
624デフォルトの名無しさん:2008/05/30(金) 20:00:35
code/execute_2.py
code/execute_3.py
625デフォルトの名無しさん:2008/05/30(金) 23:09:01
626デフォルトの名無しさん:2008/05/31(土) 00:40:25
コミュニティコミュニティうさんくさい。
627デフォルトの名無しさん:2008/05/31(土) 01:10:01
628デフォルトの名無しさん:2008/05/31(土) 01:18:33
日本のPythonユーザー激増ですね。わかります
629デフォルトの名無しさん:2008/05/31(土) 02:38:21
>>621
ちなみに、そのやり方が無くても、工夫次第で何とかなる。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とか*の使い方は覚えておくと応用が利く
630デフォルトの名無しさん:2008/05/31(土) 03:45:29
そして%sにとんでもない内容のSQLをぶち込まれて涙するわけですね
631デフォルトの名無しさん:2008/05/31(土) 03:59:27
そして高木先生に怒られるわけですね
632デフォルトの名無しさん:2008/05/31(土) 04:24:39
>>627
>おはようって言ったらおはようって返してくれるよ!

sugeee---!!!
633デフォルトの名無しさん:2008/05/31(土) 04:34:13
>>629
%s と ? の数も zip(*d.items()) の個数で自動にできませんか?
634デフォルトの名無しさん:2008/05/31(土) 09:01:54
d = { 'age': 23, 'job': 'neet', 'height': '164' }
locals().update(d)

じゃだめなの?
635デフォルトの名無しさん:2008/05/31(土) 09:13:11
オタはRubyでもやってろ。
それか死ね。
636デフォルトの名無しさん:2008/05/31(土) 09:21:56
>>627
>おはようって言ったらおはようって返してくれるよ!

kimeeeeeeeeeeee------------------------(wwwwwwwwwwww
637デフォルトの名無しさん:2008/05/31(土) 09:23:13
>>630
辞書のキー側にunsafeな文字列入れるわけ無いじゃん。
638575:2008/05/31(土) 09:27:52
>>629

なるほど。面白いやり方ですね。勉強になります。

早速zipについてライブラリリファレンスを見てるんですが、
zip(*d.items())についている*の意味が分かりません。

検索にも引っかからないんで、もしよかったら教えていただ
けませんか?

よろしくお願いします。
639デフォルトの名無しさん:2008/05/31(土) 09:31:56
>>634
locals()で取れる辞書を変更してもローカル変数には関係ないよ。
書き込む前に自分で試せ、人の手を煩わせるな。

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
640デフォルトの名無しさん:2008/05/31(土) 09:33:33
641デフォルトの名無しさん:2008/05/31(土) 09:38:49
>>633
もっとうまいやり方があるかもしれんが、、、
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) で行けると思う。
642デフォルトの名無しさん:2008/05/31(土) 09:39:24
>>632
リアルで女と話したこと無いだろ(wwwww
あ、かあちゃんは女じゃないからな(wwww
643デフォルトの名無しさん:2008/05/31(土) 09:43:30
>>> d={1:'a',2:'b',3:'c'}
>>> 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)
644641:2008/05/31(土) 09:44:13
うぁぁ、辞書の .keys() と .values() って同じ順番だって保証されてた。
In [18]: k = d.keys()
In [19]: ','.join(k)
Out[19]: 'age,weight,height'
In [20]: ','.join('?'*len(k))
Out[20]: '?,?,?'
zip()とか*d.items()とかイラネェ
645デフォルトの名無しさん:2008/05/31(土) 10:08:38
>644
d={u'長門':(u'おはよう', u'おはよう')}

これでおk。
 
 
 
 
つーかきめぇ(www
646643:2008/05/31(土) 10:11:02
>>> wiki=''; template=[]
>>> 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
雨降って暇だし、移植してみるか…
647デフォルトの名無しさん:2008/05/31(土) 12:55:44
648デフォルトの名無しさん:2008/05/31(土) 14:10:49
>>647
>長門は俺のIDLE
だれが上手いこと
649デフォルトの名無しさん:2008/05/31(土) 14:43:03
ツッコミ入ってるのに延々やってる奴いい加減自重しる

ttp://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)
650643:2008/05/31(土) 15:06:45
http://codepad.org/ShbrDxt1

1. stat の使い方がよくわからなかた
2. print が親切すぎる ex: print str, int, str[,] # 型変換と改行処理
3. sorted ではまる # os.listdir('./').sort() では駄目ぽ

* size と date でも sort できるようにする
* テンプレートと処理を分離する

時間で sort するのってどうすればいいんだろう…
651デフォルトの名無しさん:2008/05/31(土) 15:25:22
>>650
sort(key = os.path.getmtime())
http://codepad.org/h7Fb2zrE
652643:2008/05/31(土) 16:32:34
>>651
http://codepad.org/PRAzdgBm

dirs = os.listdir(FOLDER) は

>>> type(os.listdir('./'))
<type 'list'>

リストしか返さない罠
653デフォルトの名無しさん:2008/05/31(土) 16:56:16
>>652
だから?
654デフォルトの名無しさん:2008/05/31(土) 17:43:43
だから651は馬鹿
655デフォルトの名無しさん:2008/05/31(土) 17:44:21
Perlでいう
@salt = ['a'..'z', 'A'..'Z', '0'..'9', '.', '/']
これをPythonで書きたいんだけど、スッキリ書く方法ないですか?
シーケンス型なら何でもいいです。
656デフォルトの名無しさん:2008/05/31(土) 17:52:04
題意に沿ってるかは怪しいけど
salt = list("azAZ09./")
657656:2008/05/31(土) 17:54:04
うん、範囲演算子っぽいものが見えなかったんだ
吊ってくる
658デフォルトの名無しさん:2008/05/31(土) 18:00:57
標準ではないから、すっきり書きたいなら関数を一つ書く必要があるね
salt = 'abcdefghi...' とベタに書くのが一番簡単かもしれない。
659デフォルトの名無しさん:2008/05/31(土) 18:02:25
>>655
import string
string.letters + string.digits + './'
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./'
660デフォルトの名無しさん:2008/05/31(土) 18:09:54
import re
def 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./'))
とでもするとかな
661デフォルトの名無しさん:2008/05/31(土) 18:17:49
import re
re.findall(r"[a-zA-Z\./]", "".join(map(chr, range(256)))
662デフォルトの名無しさん:2008/05/31(土) 18:22:39
PerlはTMTOWTDI
Pythonは誰が書いても同じようなコード

そう信じていたころが僕にもありました
663デフォルトの名無しさん:2008/05/31(土) 18:28:03
mがNoneで脂肪
664655:2008/05/31(土) 18:42:39
やっぱり、標準的な構文で簡単に書く方法はないですか。
今は>>659の書き方をしてますが、もっと汎用的な方法があればと
思ったのですが。

>>661
まいりました _no
665デフォルトの名無しさん:2008/05/31(土) 19:18:42
>>664
http://www.daniweb.com/forums/thread71264.html
http://www.daniweb.com/code/snippet649.html

入れ子になったデータを展開する関数を定義して上げて
rubyだとbuilt-inで リスト#flattenメソッド list.flatten() 使う

http://codepad.org/0EAY6tJ7

再帰で、入れ子を展開してから、次の処理に繋いでく
666デフォルトの名無しさん:2008/05/31(土) 20:13:00
import re
re.findall(r"[a-zA-Z0-9\./]", "".join(map(chr, range(256)))
667デフォルトの名無しさん:2008/05/31(土) 21:39:30
>>664
a-zとかいう書き方は、aからzまでの文字コードが連続している環境に依存した書き方。
「汎用的な書き方」ではないので注意。
でも、Unicode文字列なら環境依存とか気にしないでいいから、こういった範囲指定構文もほしいね。
c-f なんて何に使うのか知らないけど。
668デフォルトの名無しさん:2008/05/31(土) 21:41:22
0-255の文字列はstring.maketrans('','')でもいいな
669デフォルトの名無しさん:2008/05/31(土) 21:55:37
>>667
こらこら嘘を言うな
670デフォルトの名無しさん:2008/05/31(土) 23:36:46
>>669
どのへんが嘘?
>a-zとかいう書き方は、aからzまでの文字コードが連続している環境に依存した書き方。
これ?
671デフォルトの名無しさん:2008/05/31(土) 23:51:40
ぶっちゃけEBCDIC環境とか気にしたこと一度もないな
ましてPythonではな
672デフォルトの名無しさん:2008/06/01(日) 00:43:19
突然だけどVPython面白いね。
betaで半透明も使えるようになってるし。
簡単な3Dオブジェクト動かしてデモさせるのにええよ。
673デフォルトの名無しさん:2008/06/01(日) 00:58:50
import re
re.findall(r"[a-zA-Z0-9\./]", "".join(map(chr, range(256))))
674デフォルトの名無しさん:2008/06/01(日) 01:01:55
>>672
出来あがった画をmpgやgifに出来ますか?
675デフォルトの名無しさん:2008/06/01(日) 02:10:36
わたしもみてみたいなあ
676デフォルトの名無しさん:2008/06/01(日) 02:16:33
>>672
長門も作れるかな?
677デフォルトの名無しさん:2008/06/01(日) 02:43:45
そっから離れようぜ
678デフォルトの名無しさん:2008/06/01(日) 07:20:54
>>655
A-Za-z0-9./ で作ったシーケンスは何に利用するの?

場合によっては、(Pythonでは)そもそもシーケンスを作るという必要がない可能性が。

679デフォルトの名無しさん:2008/06/01(日) 07:31:04
saltって書いてあるがな
680デフォルトの名無しさん:2008/06/01(日) 09:15:01
じゃあハルヒは作れるの?
681デフォルトの名無しさん:2008/06/01(日) 10:01:52
>>678
trip解析だろ
682デフォルトの名無しさん:2008/06/01(日) 10:10:41
こらこら嘘を言うな
683デフォルトの名無しさん:2008/06/01(日) 10:39:49
昨日から考えてたが>>652が何を言いたいかわからん
684デフォルトの名無しさん:2008/06/01(日) 10:48:55
それ以前に>>644からの流れが謎すぎて
685デフォルトの名無しさん:2008/06/01(日) 10:49:51
ああ>>646
686デフォルトの名無しさん:2008/06/01(日) 15:05:22
>>678
crypt.cryptに与える第二引数
687デフォルトの名無しさん:2008/06/01(日) 21:09:21
pyhtonで2chに書き込むスクリプトを書こうとしているのですが、

# 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あたりの使い方が適切でないのかなと思っているのですが、心当たりのある方はいらっしゃらないでしょうか。
688デフォルトの名無しさん:2008/06/01(日) 21:28:35
>>687
> pyhtonで2chに書き込むスクリプトを書こうとしているのですが、

なるほど、スクリプト荒らしか
689デフォルトの名無しさん:2008/06/01(日) 21:33:07
>>688
そうそうその通り、ってちげーよw
cuiな2chブラウザが作りたいだけぽ
690デフォルトの名無しさん:2008/06/01(日) 21:36:07
urllib2.urlopen()の後でread()抜けてる
691デフォルトの名無しさん:2008/06/01(日) 21:39:59
>>690
あ、ほんどだ・・・
すみません、また分からなかったら聞きにきます><
692デフォルトの名無しさん:2008/06/01(日) 21:40:30
やれば出来る子なんですよ。
やる気になったことがないだけで。
693687:2008/06/01(日) 22:21:18
やった、書き込めた
わっしょい、わっしょい、わっしょい!
694デフォルトの名無しさん:2008/06/01(日) 22:56:56
FileCookieJarとかでキチンとスクリプト内でクッキーのやり取り行える様にしたほうがよくねえか?
695デフォルトの名無しさん:2008/06/01(日) 23:17:27
スクリプトのテストとかは厨房板じゃなかったけかな
普通の板でオイタするとアク禁されちゃうぞ
696デフォルトの名無しさん:2008/06/02(月) 03:45:56
697デフォルトの名無しさん:2008/06/02(月) 10:32:28
書き込みテストとスクリプトのテストは違うけどな・・・
698デフォルトの名無しさん:2008/06/02(月) 10:37:47
まあ古きよき MH みたいにコマンドラインで扱える 2ch ってのが
あってもいいとは思うけど悪用されやすそうだな…
699デフォルトの名無しさん:2008/06/02(月) 16:54:47
読み込みは比較的簡単にできるのだが
書き込みが面倒くさいんだよなぁ。
700デフォルトの名無しさん:2008/06/02(月) 17:20:56
doreamhost申し込むとgoogle app eng が使えるんだな
知らなかったぜ
701デフォルトの名無しさん:2008/06/02(月) 19:08:25
知らない間にJinjaが準公式ライブラリになってたんだな。
702デフォルトの名無しさん:2008/06/02(月) 23:27:24
WindowsXPでPython2.5を使っていて
標準入出力を行うプログラムを作ったのですが
例:
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の関連付けは出来ていると思うのですが、なにが足りないのでしょうか?
703デフォルトの名無しさん:2008/06/02(月) 23:30:42
704デフォルトの名無しさん:2008/06/02(月) 23:31:57
level
705デフォルトの名無しさん:2008/06/02(月) 23:33:32
>>703
ありがとうございます!!
これで解決できそうです!!
706デフォルトの名無しさん:2008/06/03(火) 02:48:30
>>700
意外と使うやつ増えるかと思って
doreamhostの割引コード生成してきた

PRLIQUID
707デフォルトの名無しさん:2008/06/03(火) 10:21:17
Python では組み込みの辞書クラスやリストクラスを継承して
何か新しいメソッドを追加するなどということができるのでしょうか?

C++ でコンテナクラスライブラリを継承して用途に特化した
メソッドを追加するということを時々するのですが,
同様のことが Python でもできれば便利だなと思っています.
708デフォルトの名無しさん:2008/06/03(火) 10:25:10
基本的型 である int, float, str, list, tuple, dict と file は、
2.2 以降、 基底クラスオブジェクトを継承したクラスとして動作する。
その継承もできる。
ーーーーーーーーー
ということらしい.
709デフォルトの名無しさん:2008/06/03(火) 10:55:17
>>700
>>706
スペルが違う
dreamhost.com
710デフォルトの名無しさん:2008/06/03(火) 11:16:29
http://wiki.dreamhost.com/Google_Apps
登録できたけど次に何して遊ぼう
711デフォルトの名無しさん:2008/06/03(火) 12:32:16
リンク貼っておくから、宣伝やめて。

【海外鯖最強】 DreamHost 【200GB/月$9.95】
http://pc11.2ch.net/test/read.cgi/hosting/1166966706/
712デフォルトの名無しさん:2008/06/03(火) 12:44:54
Python であるオブジェクトの方を表示するにはどうすればいいのでしょうか?
単にある文字列がバイト列の文字列(というのか?)なのか Unicode 文字列
かというのを判定したいのですが、できればより一般的に任意のオブジェクトの
型情報をデバッグ時に表示させたいことがあります。

C++ における typeof のようなものをイメージしています。
713712:2008/06/03(火) 12:46:44
すんません、勘で type(object) のようにしてみたら
なんか取得で北っぽい。
714デフォルトの名無しさん:2008/06/03(火) 12:48:32
typeofに相当するものなら、組み込み関数にtype()があるけど
715デフォルトの名無しさん:2008/06/03(火) 13:08:27
旧スタイルクラスは型ではないので
typeは全部classobj / instanceになるんで注意汁
716712:2008/06/03(火) 13:44:11
>>715
たしかに、codec.open で返ってくるファイルオブジェクトを
type でみたら instance になっちゃうね・・・
最近 boost.python に触発されて使い始めたばっかりだから
「旧スタイル」ってのがわからないが。

boost.python のおかげで C++ ともうまくやっていけそう。
717デフォルトの名無しさん:2008/06/03(火) 13:47:34
>>> class OldStyle: pass

>>> class NewStyle(object): pass

objectを継承するかどうかで決まる
718デフォルトの名無しさん:2008/06/03(火) 13:49:23
>>716
組み込みのobjectから直接ないし間接に継承してるクラスは
new style classになり、そうでないものが旧スタイル、のはず

とりあえずclassobjの場合はcls.__name__
instanceの場合はobj.__class__.__name__
とかやればクラス名は取れる

単にxはAのインスタンスかを知りたい場合は
isinstance(x, A)を使うといいよ
これは旧スタイルクラスに対しても意図した通りに働く
719712:2008/06/03(火) 14:57:27
よくわかりました、ありがとう。
ところで print ステートメントで簡単にデバッグ用表示が
できるようい __str__ メソッドを用意してみたんだけど、
Unicode 文字列を返しちゃだめなんだね・・・
720デフォルトの名無しさん:2008/06/03(火) 15:06:50
__unicode__ もあるよ
721デフォルトの名無しさん:2008/06/03(火) 15:32:54
デバッグなら__repr__
722712:2008/06/03(火) 16:15:32
おお、いろいろあって面白いな。
今ディープコピーしようとして import copy して
y = copy.copy(x) とかするって知ったんだけど、
結局ダックタイピングだから __deepcopy__()
が定義されていればいいということ?
じゃ、__deepcopy__() を直接呼び出せばいいんじゃね?
723712:2008/06/03(火) 16:16:35
ディープコピーは copy.deepcopy(x) だった
724デフォルトの名無しさん:2008/06/03(火) 16:23:43
725デフォルトの名無しさん:2008/06/03(火) 22:30:07
>>724
具体的にどういうことやるの?
726デフォルトの名無しさん:2008/06/03(火) 22:52:54
アッー
727デフォルトの名無しさん:2008/06/03(火) 23:17:56
>>724
イベント全体としての趣旨と受講対象者は、どんな感じなんだろうか
勉強会は、建前で。出会い目的としての懇親会がメインなの?

あと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
728デフォルトの名無しさん:2008/06/03(火) 23:22:26
>>727
>出会い目的としての懇親会

こういう感覚って逆に新鮮(wwww
729デフォルトの名無しさん:2008/06/03(火) 23:24:56
>>724
ていうか申し込みできないくさいんだが。
730デフォルトの名無しさん:2008/06/03(火) 23:28:10
>729
すぐに満員になったから締め切ったんだよ.
なんとか温泉とは大違いだね.
731デフォルトの名無しさん:2008/06/03(火) 23:38:54
>>728
もちろん、異性出会いという意味じゃないよ
勉強会とか、学校っていわゆる人脈づくりが目的でしょ?

人脈というとなんかあれだけど
732デフォルトの名無しさん:2008/06/03(火) 23:53:04
>>731
>異性出会いという意味じゃないよ

誰もそんなこと言ってないけど(wwww
733デフォルトの名無しさん:2008/06/04(水) 00:18:33
pythonってなんかいい本ある?
734デフォルトの名無しさん:2008/06/04(水) 00:23:30
LLやるとモテますか?
735デフォルトの名無しさん:2008/06/04(水) 01:09:44
>>732
誰かが言ってたら「そういう意味じゃないよ」みたいな書き方になるだろう。
まだ言っていないことを先に言うから「異性出会いという意味じゃないよ」と、説明的になる。

誰も言ってないから書かれたものに「誰もそんなこと言ってない」と返しても、あんまり意味が無い。
736デフォルトの名無しさん:2008/06/04(水) 01:19:17
見えないレスと戦っている人がいるんだな。
737デフォルトの名無しさん:2008/06/04(水) 01:43:01
同性出会いってこと?
738デフォルトの名無しさん:2008/06/04(水) 03:20:13

勉強会初心者ですが質問させてください。
女性の参加者は全体の何%くらい居ますか?
739デフォルトの名無しさん:2008/06/04(水) 03:43:20
>>738
大抵0%だから安心していいよ。
740デフォルトの名無しさん:2008/06/04(水) 03:56:26
copy読んでも面白くなさそうだけどなぁ。
IronPythonのソース読むなら参加したいかもw
741デフォルトの名無しさん:2008/06/04(水) 08:09:17
ログインシェルをPythonにして生活出来ないものかと試してみたがにっちもさっちも行かなくなった
そういう使い方は無しなのか。
742デフォルトの名無しさん:2008/06/04(水) 08:56:17
>>741
IPythonならもう少し何とかなると思うよ。
でも、最近のbashとかまでは補完機能強くないなぁ。
743デフォルトの名無しさん:2008/06/04(水) 08:57:25
>740
こういう奴に限って基本が抜けている。
たいてい仕事に使えないので注意。
744デフォルトの名無しさん:2008/06/04(水) 09:09:29
>>734
非モテはLLやっても非モテだろJK(wwwwwwwwwwwwwwwwwwwww
745デフォルトの名無しさん:2008/06/04(水) 11:04:15
>>727

http://groups.google.com/group/python-code-reading

MLがあるみたいだから読んでみればいいんじゃね?ていうかggrks?
746デフォルトの名無しさん:2008/06/04(水) 11:22:46
シーケンスの中から特定の要素を全部削除したいのだけど,
効率のいいやり方ってありますか?
自分は以下のおそらく非効率的なやり方をしています.

a = ["", "a", "b", "", "c"]
print a
while True:
try:
a.remove("")
except ValueError:
break
print a
747デフォルトの名無しさん:2008/06/04(水) 11:24:23
整形してみました
http://pastebin.windy.cx/?page=view&id=1212546216
2ch でうまくコードを整形して表示させるのは難しいなぁ.
748デフォルトの名無しさん:2008/06/04(水) 11:29:31
a = [i for i in a if a != ""]
749デフォルトの名無しさん:2008/06/04(水) 11:29:42
while '' in a: a.remove('')
これでも同じか…
in を処理するときにいちいちサーチしているんだよねぇ
750デフォルトの名無しさん:2008/06/04(水) 11:36:14
>>748
そこでiをチョイスするのはなんだかなぁとおもった。
751デフォルトの名無しさん:2008/06/04(水) 11:37:12
a = filter(lambda x:x!="", a)
752デフォルトの名無しさん:2008/06/04(水) 11:39:33
filterおじさんキターーー!!!
753デフォルトの名無しさん:2008/06/04(水) 11:39:47
>>748
ふむ,そういう書き方をするのか.
リストの内包表現というのだな・・・
他の言語から来た人間には目新しい。
たぶん Python にはたくさんそういう技があるんだろう。
C/C++/Java しか触ったことないから違いだけに着目して勉強したい。
754デフォルトの名無しさん:2008/06/04(水) 11:40:04
a = list(itertools.ifilterfalse(None, a))

> ifilterfalse( predicate, iterable)
> predicateがFalseとなる要素だけを返すイテレータを作成します。
> predicateがNoneの場合、値が偽であるアイテムだけを返します

755748:2008/06/04(水) 11:44:12
>>750

そんなくだらないところを指摘する暇があったら、間違いを指摘してくれよ(嘲笑

a = [i for i in a if a != ""]

a = [i for i in a if i != ""]
756デフォルトの名無しさん:2008/06/04(水) 11:46:21
いっぱいやり方があるもんだね。
いずれにせよ一時的な作業用に元のリスト a と
最大で同じだけの大きさのリストができてしまうのは仕方ないのか。
757デフォルトの名無しさん:2008/06/04(水) 11:47:18
といってもリストに入ってるのは参照だけだから問題な鹿。
758デフォルトの名無しさん:2008/06/04(水) 11:59:03
a[:] = itertools.ifilterfalse(None, a))
ならワークの配列なしのinplaceな変換になるんじゃないかな
759デフォルトの名無しさん:2008/06/04(水) 12:00:47
ごめん
余分な ) がついてた
760デフォルトの名無しさん:2008/06/04(水) 12:04:17
>>756
del という手もある。

a = ["", "a", "b", "", "c"] 
i = 0
while i < len(a):
    if a[i] == "":
        del a[i]
    else:
        i += 1
print a
761デフォルトの名無しさん:2008/06/04(水) 12:07:49
>>760
最初はそれでやろうと思ったんですが、
del すると要素数が変わっちゃうなぁと思いまして。
でも毎回 len(a) でチェックしてるからいいのか。

>>758
先頭の a[:] の効果って何なんでしょうか?
スライス・・・・・・とりあえず全部の要素をさしている?
762デフォルトの名無しさん:2008/06/04(水) 12:10:39
a = [x for x in itertools.ifilter(lambda x: x!="", a)]
ってやっちゃったら、当然中間生成物(?)ができますよね。
763748:2008/06/04(水) 12:14:26
>>762
なにそのキメラ(wwwww
764デフォルトの名無しさん:2008/06/04(水) 12:15:42
>>761
代入文の左辺がsliceの場合は、その範囲がクリップされて、
そこに右辺のシークエンスを突っ込むんだよ

ぶっちゃけ書いてはみたけど、俺ならこんな書き方はしない
765デフォルトの名無しさん:2008/06/04(水) 12:16:27
>>763
だって120秒前まではスライス代入なんて構文知らなかったから(笑
ラムダ式が使えるってさっき知った。
766デフォルトの名無しさん:2008/06/04(水) 12:17:32
>>764
in-place にこだわらなければ内包表記ですか?
767デフォルトの名無しさん:2008/06/04(水) 12:26:53
>>766
うん
というか、一見ワークを使ってないように見えて、こんなのが動くってことは
多分使ってるんじゃないかな
結局、わかりにくい上に遅くなるだけだと思う
768デフォルトの名無しさん:2008/06/04(水) 12:27:13
文字列しか入っていないならfilter(len,a)でもいいな
769デフォルトの名無しさん:2008/06/04(水) 12:38:17
あんまりワーク使うとかこだわらないな。
そもそも、そういうことにこだわるレベルのコード書くのににPython使わない。
770デフォルトの名無しさん:2008/06/04(水) 12:56:05
>>769
確かにメモリが不足するほどの作業をPython使ってやるものじゃ
ないのかもしれませんね。ただ、自分はいままで C++ と Java
でやってた結構メモリを食う操作(大規模なグラフ構造の処理とか)
をやってみようと思ってたんで、逆にヒープ(ってPythonでも言う?)
が不足してOSからメモリを取得しようとしてページングもガリガリ
おき始める手前くらいまではメモリを使い切りたいって思ってます。

いましがたでっかい辞書とかリストを作りまくってみたら1.7GBくらい
メモリを消費したところでやばい気がしたのでpython.exeをきりました。
逆に「ここまでならメモリ使っていいよ」って上限をpython処理系に
最初から教えてあげるとかプログラム内から指定するってことは
できるんですかね。それは言語の仕様の外?あくまで言語としては
例外が投げられるよってところまで?
771デフォルトの名無しさん:2008/06/04(水) 13:38:06
Windows Server系だと、リソースマネージャでその辺のリソース割り当てを
設定できるみたいだな
772デフォルトの名無しさん:2008/06/04(水) 13:51:33
タブ区切りのレコードをパース仕様としていてはまった
"".split("\t") って [""] なんだな。
"".split("\t") を [] と比較していたよ。
Python という言語とはあんまり関係ないかも試練が。
773デフォルトの名無しさん:2008/06/04(水) 13:54:37
>>770
以下の不等式が成り立つならメモリをガッツリ爪

メモリの値段 < お前が考えている間の人件費
774デフォルトの名無しさん:2008/06/04(水) 13:57:38
>>772
自然にsplit()を実装すれば当然そうなるし、自然な仕様だと思うよ

"a".split("\t") -> ["a"]
なんだから
"".split("\t") -> [""]
でしょう
775デフォルトの名無しさん:2008/06/04(水) 14:50:50
>>772
>>> 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が渡されたら、区切ってリスト化する…
776デフォルトの名無しさん:2008/06/04(水) 15:01:59
>>> 'a'.split('\t') # tab separator
['a']
>>> 'a'.split('b')
['a']

ただ単に、セパレートに失敗してるだけだ

>>> 'a'.split('a')
['', '']

正しいセパレート

>>> 'aaa'.split('a') 分割
['', '', '', '']
>>> 'katana'.split('a') 分割
['k', 't', 'n', '']
>>> 'akasatana'.split('a') 分割
['', 'k', 's', 't', 'n', '']
777デフォルトの名無しさん:2008/06/04(水) 15:20:34
>>> "".split("\t") 分割失敗。塊は一つ
[""]

>>> 'a'.split('a') 分割成功。塊二つ
['', '']

分割したら、その結果、いくつに分かれるかか…
なんかよく考えてみるややこしいな
778772:2008/06/04(水) 16:28:03
ううむ、こんなにレスが付いてるとは。
まぁ当たり前の仕様といえばそうだけど。
split したものを join したら必ず元に戻るという保証はあるわけか。

ところで、UTF-8で円コーディングされてるJSON形式のデータって、
Pythonでもそのままパースできるよね?タブ区切りのデータ処理
できるようにしたら、JSON形式でも突っ込む予定ありだからよろしく
って言われた。
779デフォルトの名無しさん:2008/06/04(水) 16:55:06
ここまでならメモリ使っていいよって上限をpython処理系に
最初から教えてあげるとかプログラム内から指定するってことはできるんです
780デフォルトの名無しさん:2008/06/04(水) 17:02:38
Pythonって{}な括弧はどんなところで使うの?
781デフォルトの名無しさん:2008/06/04(水) 17:13:42
dictのリテラル(3.0ではsetも)
782デフォルトの名無しさん:2008/06/04(水) 17:25:43
>>781
それだけっすか?
Pythonって記号が少ないですね。
783デフォルトの名無しさん:2008/06/04(水) 18:03:58
>779

なにがしたいの? (それはOSの仕事だと思うヨ)
784デフォルトの名無しさん:2008/06/04(水) 19:17:21
> なにがしたいの? (それはOSの仕事だと思うヨ)

779じゃないけど、ヒープが実メモリに収まっているうちにガベコレを走らせたい
とかそういう需要はあるかと。ってもpythonだとリファレンスカウントか。
785デフォルトの名無しさん:2008/06/04(水) 22:50:10
for i in xrange(1e100):
  hoge['hoge%d' % i] = 'fuga%d'
786デフォルトの名無しさん:2008/06/04(水) 22:58:03
hoge = {}
for j in xrange(10):
  for i in xrange(10**j):
    hoge['hoge%d' % i] = 'fuga%d'
  print j, len(hoge)
787デフォルトの名無しさん:2008/06/04(水) 23:07:53
>>782 はおれがPythonを気に入った理由…
788デフォルトの名無しさん:2008/06/05(木) 02:11:47
Rubyのbeginendも邪魔だけど
Cの{}さえも邪魔とか
789デフォルトの名無しさん:2008/06/05(木) 02:57:42
括弧が少ないのは慣れると思った以上に快適
790デフォルトの名無しさん:2008/06/05(木) 08:22:54
明示的なlisp叩きですね、わかります
791デフォルトの名無しさん:2008/06/05(木) 15:30:45
Lisp の括弧の色を薄くする設定のエディタもあったらしいが…
括弧なんて飾りです!
792デフォルトの名無しさん:2008/06/05(木) 16:30:24
括弧が多いとほんと見辛い。
使ってると見慣れてくるもんなんだろうか。エディタで色分けしてるのかな。
793デフォルトの名無しさん:2008/06/05(木) 16:37:02
Pythonのインデントってタブなの?スペースなの?
794デフォルトの名無しさん:2008/06/05(木) 16:38:44
スペース4個
795デフォルトの名無しさん:2008/06/05(木) 18:16:38
スペースだとインデント戻すのにBS4回押すのが面倒なのでタブ派
796デフォルトの名無しさん:2008/06/05(木) 18:23:38
>>795
IDLE とか Emacs の Python モードならスペース4個のインデントを一括で入力したり削除したりできるよ。
797デフォルトの名無しさん:2008/06/05(木) 19:14:17
タブ幅を4にする派
798デフォルトの名無しさん:2008/06/05(木) 19:41:44
pythonの開発者は、google用コードがスペース2個、
オープンソース用コードがスペース4個、
タブを使ったコードは俺のコードじゃない、とか言ってたな。
799デフォルトの名無しさん:2008/06/05(木) 20:22:19
boostのコーディング規約でも
タブがスペース何個に相当するかまちまちだから
いっそのことタブは使わないようにしたって書いていた
800デフォルトの名無しさん:2008/06/05(木) 20:24:43
おっと3タプ同盟はスレ違いだ
801デフォルトの名無しさん:2008/06/05(木) 22:40:28
世界中のプログラマがスペース2でコーディングしてくれたらいいのにな。
802デフォルトの名無しさん:2008/06/05(木) 23:19:16
エンコードの指定つけたんだから、タブ幅の指定もつければいいのに。
803デフォルトの名無しさん:2008/06/05(木) 23:20:21
802は自分でクソ言語つくればいいとおもうよ。
804デフォルトの名無しさん:2008/06/05(木) 23:30:19
単なる色分け表示だけじゃなくて、入力補完もできるので
軽いエディタないかな?
805デフォルトの名無しさん:2008/06/05(木) 23:34:32
>>802
Emacs の Python モードなら
# -*- coding: sjis; py-indent-offset: 2 -*-
とかすればオケ。IDLE では効かなかった。
806デフォルトの名無しさん:2008/06/05(木) 23:45:13
まじ?ちょっとコンビニでEmacs買ってくる
807デフォルトの名無しさん:2008/06/05(木) 23:54:22
>>806
3点
808デフォルトの名無しさん:2008/06/05(木) 23:54:28
python-mode使うならpymacsとpy-completeも入れるのオヌヌメ
809デフォルトの名無しさん:2008/06/05(木) 23:56:27
>>808
いれるとどうなるんですか?
810デフォルトの名無しさん:2008/06/06(金) 00:08:13
xyzzyのpythonモード用lisp使ったら、
途中にコメント行があるとインデント
うまく認識してくれんかったんだよな…
811デフォルトの名無しさん:2008/06/06(金) 02:11:48
xyzzy の py-mode はエディタが固まるバグがあるから嫌い
812デフォルトの名無しさん:2008/06/06(金) 05:33:40
試しにMeadowで開いてみたけど、"""の中で"を使っていると
色分けがおかしくなるなぁ。
813デフォルトの名無しさん:2008/06/06(金) 08:51:18
http://coreblog.org/jp
これ使ってる人あんまりいないみたいだけど
なんで?
814デフォルトの名無しさん:2008/06/06(金) 09:11:00
>>813
「Plone又はZope環境で稼働するプログラム。」
↑が原因じゃない?
海外だとplone人気らしいけど、日本だとほとんど聞かないし。
815デフォルトの名無しさん:2008/06/06(金) 09:17:22
>812
面倒だから " は偶数回使うことにしている
816デフォルトの名無しさん:2008/06/06(金) 09:29:31
>>801
自分はそうしてる
千里の道も一歩から
千個のレスも一個から
自分で出来ることから始めるしかないと思う
817デフォルトの名無しさん:2008/06/06(金) 11:01:22
俺はスペース四つだなn
818デフォルトの名無しさん:2008/06/06(金) 11:11:25
emacsの時はスペース4つだが、
たまにviで小物をかき捨てるときはスペース1つ。
819デフォルトの名無しさん:2008/06/06(金) 11:37:12
vimではexpandtabs指定、インデントはスペース4つ分だな
まあ、vi系だとindent/dedentって^D,^Tや<<,>>でやるから
あまり意識することは無いが

vimじゃないviは最近使ったことが無いが、expand通しとかないと怪しいかな
820デフォルトの名無しさん:2008/06/06(金) 11:55:27
スペース4つだと def や for が美しくなるんだぜ。
821デフォルトの名無しさん:2008/06/06(金) 13:37:13
def hogehoge:
  for fugafuga in sinesine:
    hagehage
def hogehoge:
    for fugafuga in sinesine:
        hagehage
822デフォルトの名無しさん:2008/06/06(金) 14:29:15
def hogehoge:
   for fugafuga in sinesine:
      hagehage
823デフォルトの名無しさん:2008/06/06(金) 16:41:21
なんで同じメソッドを何度も
def するんだ www
824デフォルトの名無しさん:2008/06/06(金) 16:44:11
単にスペースの比較だろ
825デフォルトの名無しさん:2008/06/07(土) 00:19:31
おまえらプロポーショナルフォントでソース書いてる?
826デフォルトの名無しさん:2008/06/07(土) 00:34:19
ソースはフォントまで気にする時代なのかw
827デフォルトの名無しさん:2008/06/07(土) 00:40:07
>>826
こんな馬鹿初めて見た
828デフォルトの名無しさん:2008/06/07(土) 00:40:58
826は時代を超越したバカ
829デフォルトの名無しさん:2008/06/07(土) 00:43:08
>>826 の人気に嫉妬
830デフォルトの名無しさん:2008/06/07(土) 01:02:05
そういえば「プログラミング言語C++」ではコードの部分が
プロポーショナルフォントで書かれてたな
831デフォルトの名無しさん:2008/06/07(土) 01:13:57
>>826
最高に頭の悪い発言をしてくださいinム板(XII)
http://pc11.2ch.net/test/read.cgi/tech/1179394713/
832デフォルトの名無しさん:2008/06/07(土) 01:19:26
hoge = {'hage':5, 'fuga':3, 'shine':1}
これを 5, 3, 1 の部分で sort して
fuga = ['shine', 'fuga', 'hage']
みたいな出力を欲しいのですが
sorted(hoge)
で合ってるのでしょうか?
833デフォルトの名無しさん:2008/06/07(土) 01:20:52
>>825
英文にContras、日本語はメイリオを同幅にしてるのを使っている。
834デフォルトの名無しさん:2008/06/07(土) 01:22:21
×Contras
○Consolas
835デフォルトの名無しさん:2008/06/07(土) 01:26:41
sorted(hoge, lambda x,y: x>y)
836デフォルトの名無しさん:2008/06/07(土) 01:30:37
sorted(hoge)はsorted(hoge.keys())と同じになるんじゃない?

>>> from operator import itemgetter
>>> hoge = {'hage':5, 'fuga':3, 'shine':1}
>>> map(itemgetter(0), sorted(hoge.iteritems(), key=itemgetter(1)))
['shine', 'fuga', 'hage']
837デフォルトの名無しさん:2008/06/07(土) 01:30:45
>>835
できました
ありがとうございました
838デフォルトの名無しさん:2008/06/07(土) 01:31:38
>>> hoge = {'hage':5, 'fuga':3, 'shine':1}
>>> 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)]
839デフォルトの名無しさん:2008/06/07(土) 01:36:32
>>835
x>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)]
840デフォルトの名無しさん:2008/06/07(土) 01:39:54
>>839
それならこれでいいんじゃないの?

>>> 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)]
841デフォルトの名無しさん:2008/06/07(土) 01:42:28
>>840
ありがとうございます
lambda の方が import 書かなくて良いのと他にも融通利きそうなので・・・

842838:2008/06/07(土) 02:24:37
>>> hoge = {'hage':5, 'fuga':3, 'shine':1}
>>> [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
843デフォルトの名無しさん:2008/06/07(土) 03:00:43
>826やるなー。

馬鹿と賢い人が共存していて面白い。
844デフォルトの名無しさん:2008/06/07(土) 05:56:11
845デフォルトの名無しさん:2008/06/07(土) 09:33:16
self は全部 $ で書くと面白い
846デフォルトの名無しさん:2008/06/07(土) 20:00:39
あのですねpytyonでcookielibつかってなんかクッキー処理してもらってるんだけど、
このクッキーってどっかに保存されてるの?
847デフォルトの名無しさん:2008/06/07(土) 20:23:39
台所の棚の上
848デフォルトの名無しさん:2008/06/07(土) 20:35:49
>>846
どのクラス使ってるのか知らんが、
saveメソッドを呼ばなきゃ保存されないと思う。
849デフォルトの名無しさん:2008/06/07(土) 20:39:21
特に保存するような操作してなきゃ保存はされてないってことでいいのかな?
850デフォルトの名無しさん:2008/06/07(土) 22:04:27
保存はされてる
不揮発デバイスへの
851デフォルトの名無しさん:2008/06/07(土) 23:45:11
最近 graphviz (ネット構造etcを可視化して画像を生成するソフト)で
遊んでるんですが、書式を覚えるのが面倒で、やっぱ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で探してもさっぱり見つからんのですが、誰か知ってる人
いませんか?
852デフォルトの名無しさん:2008/06/07(土) 23:52:29
find /usr/lib -name 'gv.py'

853デフォルトの名無しさん:2008/06/08(日) 00:00:09
graphviz-python を入れるとか
854デフォルトの名無しさん:2008/06/08(日) 00:11:27
libgv-pythonとかいう奴じゃないのかな
855デフォルトの名無しさん:2008/06/08(日) 00:21:53
おぉありがとう
でもwindows用のバイナリは無さそうな感じだ…
856デフォルトの名無しさん:2008/06/08(日) 04:25:24
graphviz-2.18.tar.gz
graphviz-working.tar.gz
なんの問題もないと思うけど
857デフォルトの名無しさん:2008/06/08(日) 09:37:24
俺も同じようなことしようとしてた。
Linuxでだけど。
Windows用のバイナリは無いのか
858デフォルトの名無しさん:2008/06/08(日) 10:03:41
うちのPCの中にはある
859デフォルトの名無しさん:2008/06/08(日) 10:17:28
860デフォルトの名無しさん:2008/06/08(日) 10:38:38
include/graphviz/gv.cpp
861デフォルトの名無しさん:2008/06/08(日) 10:49:01
tclpkg/gv
862デフォルトの名無しさん:2008/06/08(日) 11:02:27
この中に入ってない?
ttp://yapgvb.sourceforge.net/
863デフォルトの名無しさん:2008/06/08(日) 11:05:42
864デフォルトの名無しさん:2008/06/08(日) 11:12:48
おまえら日曜の朝から元気だな
865デフォルトの名無しさん:2008/06/08(日) 11:20:47
866デフォルトの名無しさん:2008/06/08(日) 11:23:05
ビンビンです
867デフォルトの名無しさん:2008/06/08(日) 11:32:28
>>862
入ってない

>>863
それもWindowsで動かないw

>>865
PyGraphviz前庭のようなので同上
868デフォルトの名無しさん:2008/06/08(日) 11:33:40
gdgd
869デフォルトの名無しさん:2008/06/08(日) 11:37:03
>>863 を取ってきて setup しろってことだろ
コンパイラ・・・
870デフォルトの名無しさん:2008/06/08(日) 11:46:56
>> 812
最近の (22以降?) emacs に標準でついてくる python.el なら
triple quoted string の色づけをきちんとしてくれるみたいだね.

個人的には python-mode.el の方がpdb の対応とかで便利だから
色づけ設定の部分だけ python.el からマージしたものを使ってる
871デフォルトの名無しさん:2008/06/08(日) 12:03:07
>>863
http://groups.google.com/group/pygraphviz-discuss/topics
やってみた
setup.py の lib と include を graphviz のある場所にして
python setup.py build -c mingw32
でいけそう
872デフォルトの名無しさん:2008/06/08(日) 12:03:22
>>863
VC Express か Windows SDK でコンパイルできるかなっ♪
873デフォルトの名無しさん:2008/06/08(日) 12:07:21
>870
それぞれ全然別に作られてるってこと?
874デフォルトの名無しさん:2008/06/08(日) 12:07:42
VC Express 2005 入ってるんだけど

running 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.

875デフォルトの名無しさん:2008/06/08(日) 12:20:49
>>871 だめだわ 後はまかせた orz
python 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
876デフォルトの名無しさん:2008/06/08(日) 12:21:45
Traceback (most recent call last):
File "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)
877デフォルトの名無しさん:2008/06/08(日) 12:22:12
File "C:\Python25\lib\distutils\ccompiler.py", line 845, in link_shared_object
extra_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
878デフォルトの名無しさん:2008/06/08(日) 12:37:05
lxmlの最新版の2.0.6を入れてみて遊んでるんだが、
HTMLParserで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を指定しないで同じことをやるとうまくいくんだけど
879878:2008/06/08(日) 12:39:29
補足。
超短い入力だとtarget parser版も機能するみたいだったんだけど
まともな文書を食わせたときに
target parserを使わないケース(通常のTreeBuilderが使われてるケース)では
上手くいっても、カスタムtarget parser版だとエラーになったりするんだわ
880878:2008/06/08(日) 14:24:17
少しおっかけてみたけど、target parserを指定すると
内部でSaxParserContextを継承したTargetParserContextがParserContextとして
使われるのが原因くさい
(多分)XMLとしてwell-formedでないと判定されるようなドキュメントだと
TargetParserContext#handleParseResult()で落ちる
Python側から弄れない部分だし、これはどうしようもないかなー
881デフォルトの名無しさん:2008/06/08(日) 23:27:07
Python のマルチスレッド機能 (import threading) を使うと
マルチスレッドなコードが Windows と Linux のどちらでも
動くようにポータブルに書けるのでしょうか?
882デフォルトの名無しさん:2008/06/09(月) 00:06:38
>>881
まーそう。VMで動いてるのもあるし。
でもあくまでマルチスレッドなプログラミングモデルがつかえるだけで
アルチコアをフルに活用とかは期待しない方がいいよ。
883デフォルトの名無しさん:2008/06/09(月) 03:11:19
タスクーに常駐するプログラムって、作れるんでしょうか?(スケジューラーなど)
windowsやlinuxのAPIを直接たたかないとだめですかね?
もしGUIライブラリの範囲で可能でしたら、どのライブラリならできるのかも教えていただきたいです。
884デフォルトの名無しさん:2008/06/09(月) 03:18:31
タスクバーでした、すいません。
885デフォルトの名無しさん:2008/06/09(月) 03:29:24
wxPythonならwx.TaskBarIconでできる
886デフォルトの名無しさん:2008/06/09(月) 03:46:49
>>885
ほんとですか!?ありがとうございます!。ちょっと今日からやってみたいと思います。
887デフォルトの名無しさん:2008/06/10(火) 05:42:46
python a5のソースの中に.bzrignoreがあったんだけどBazaarに移行する予定でもあるの?
888デフォルトの名無しさん:2008/06/10(火) 07:19:50
           ,r‐ 、           
   z'Zr─〜''''彡 ̄ ̄⌒ミーv─ -tf'.z
      ̄`'''''─ム/'⌒' ⌒ヽ_>'''  ̄ ̄ 
         /  彡、 ノノ:::  
        / _,;彡'´⌒(´ ミ}::: 
    _/ フ::::      Y ヽ::: 
  (⌒こ))≧:::        jfう》::: 
    ̄::::::::::        (_ノ:::::: 
               ::::::
889デフォルトの名無しさん:2008/06/10(火) 10:30:38
890デフォルトの名無しさん:2008/06/10(火) 16:37:35
>>888
こんなとこまでくんなwwww
891デフォルトの名無しさん:2008/06/10(火) 18:37:16
WindowsのGUIのPython shellみたいに色が出たり、
このタイプ中にこのライブラリは、こういったものが扱えますと教えてくたれりするUNIX系のソフトって
ありませんか?
できれば、Xterm上でできるとうれしいんだけどなあ
892デフォルトの名無しさん:2008/06/10(火) 18:50:10
xtermじゃ動かないけどKomodo IDEとかEric4とか。
893デフォルトの名無しさん:2008/06/10(火) 19:10:33
>>892
さんくす
みてみます
894デフォルトの名無しさん:2008/06/10(火) 19:30:09
>>891
emacs
vim
895デフォルトの名無しさん:2008/06/10(火) 19:36:15
pycomplete入れたけどM-tab押しても
Symbol's function definition is void: py-symbol-near-point
って言われてしまうんですがなぜですか?
896デフォルトの名無しさん:2008/06/10(火) 20:13:58
>>894
vimを使っているんですが、vimでできますか?
897デフォルトの名無しさん:2008/06/10(火) 22:07:07
>>894
891はエディタを聞いてるんじゃなくて、IDLEのことを言ってるんじゃないの?

っていうか、いま知ったけど、IDLEでソースの編集もできるんだな。
しばらくこれ使ってみるか。
898デフォルトの名無しさん:2008/06/11(水) 06:09:41
アイドルって何?
899デフォルトの名無しさん:2008/06/11(水) 07:14:48
IDLE M@STER
900デフォルトの名無しさん:2008/06/11(水) 07:44:47
>>891
IDLE (Python GUI) は Linux 等でも動くよ。
901デフォルトの名無しさん:2008/06/11(水) 08:01:40
IDLE ってエディタとして使いやすい?
自分は PyDev を使ってる.
でも PyDev の補完がいまいちうまく働いてくれない.
これって,import したモジュールを全部パースしまくって
メンバとか推測しているの?

でもメンバって動的に付け加えられるよね?
動かしてみなけりゃわからないよな.
902デフォルトの名無しさん:2008/06/11(水) 08:02:37
IDLEは終了時のウィンドウ位置・サイズを記憶してくれないから使ってない。
903デフォルトの名無しさん:2008/06/11(水) 10:43:30
>>896
python有効になってるvim7だとオムニ補完が使えるはず
pythonのファイルを開いてみて
s = "foo"
s.
まで打ってからC-X C-Oしてみ
正直もっさりしてて動作が軽快とは言いがたいから、あまり俺はつかわんけど

勿論C-Nによる前方参照補完とかはいつでも使える
904デフォルトの名無しさん:2008/06/11(水) 17:23:58
>>> MULTI='''
... 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'

どう書けば良いですか?否定の文字列クラスみたいなのが
書きたいです…
905デフォルトの名無しさん:2008/06/11(水) 17:28:49
re.findall(r'%\(([^\(\)]*?)\)d', MULTI)
906905:2008/06/11(水) 17:31:55
r'%\((\w+)\)d'の方がいいかも
907デフォルトの名無しさん:2008/06/11(水) 18:06:03
>>906
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っす
908デフォルトの名無しさん: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」
この条件で、引数に初期値を設定する方法はないでしょうか。
お願いします。
909デフォルトの名無しさん:2008/06/12(木) 00:37:35
len(sys.argv)
910デフォルトの名無しさん:2008/06/12(木) 00:59:36
>>908
入力? 文字のprintは普通、出力って言うだろ
911デフォルトの名無しさん:2008/06/12(木) 01:00:50
>>910
なにいってんの?w
912デフォルトの名無しさん:2008/06/12(木) 01:28:13
>>908
sys.argv[1] を実行しても「list index out of range」とならないための条件は
len(sys.argv) が 2 以上のときだから

if len(sys.argv) == 2:
    test(sys.argv[1])
else:
    test()

のようにすればいいよ。

プログラムを書いていてエラーが起こったら、そのエラーが起こる理由を考えて
エラーを回避するための条件文を入れていくんだよ。
913デフォルトの名無しさん:2008/06/12(木) 01:41:22
while True:
  (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しないといけないものを忘れてるとか、
良く分からないのでご存知の方いらっしゃったら
止まらないようにする方法を教えてください。
914デフォルトの名無しさん:2008/06/12(木) 01:46:33
>>913
stdout の内容が3行未満(lines の要素数が3未満)だから
> IndexError: list index out of range 
となるのだと思われ。つまり cmd が想定外の出力を返している。
915デフォルトの名無しさん:2008/06/12(木) 01:47:10
コマンドの出力の行数が足りなくなることはありえないの?
916デフォルトの名無しさん:2008/06/12(木) 01:49:28
あー、言われてみればそうですね。
造って満足して実行させてたら
止まってたので原因を錯覚してました。
ありがとうございます。
917デフォルトの名無しさん:2008/06/12(木) 08:03:10
Rubyと比較してPythonが優れているのはどんなところでしょうか?
918デフォルトの名無しさん:2008/06/12(木) 08:14:37
ネイティブスレッド
919デフォルトの名無しさん:2008/06/12(木) 08:52:00
ドキュメント
920デフォルトの名無しさん:2008/06/12(木) 09:30:37
異教徒にも優しい
921デフォルトの名無しさん:2008/06/12(木) 09:42:00
922デフォルトの名無しさん:2008/06/12(木) 11:07:22
「恥ぱい」だけに、恥の上塗り。
923デフォルトの名無しさん:2008/06/12(木) 11:13:24
Pythonの方がOSのネイティブの機能を使いやすいって思うんだけど
それは単に俺がルビーでの扱い方に慣れて無いから?
924デフォルトの名無しさん:2008/06/12(木) 11:38:58
925デフォルトの名無しさん:2008/06/12(木) 12:56:19
ライブラリが揃っていること
scipy,numpy等の数値計算周りが便利
926デフォルトの名無しさん:2008/06/12(木) 13:09:16
>>917
PC初心者(英語圏の人)からプロまで扱えるように設計されている
だまされたと思って、「初めてのPython」を買って、勉強するよろし
927デフォルトの名無しさん:2008/06/12(木) 13:42:08
>>917
Rubyと違って、プログラミング言語だ。
(Rubyはプログラミング言語っぽいオモチャ)
928デフォルトの名無しさん:2008/06/12(木) 13:46:36
>>927にGuidoも思わず苦笑
929デフォルトの名無しさん:2008/06/12(木) 13:50:41
>>928
苦笑しながらGuidoはこう言った。
Ruby is just a toy, indeed.
930デフォルトの名無しさん:2008/06/12(木) 14:07:18
糊言語として優秀
931デフォルトの名無しさん:2008/06/12(木) 15:00:16
そのうちインデントじゃなくて括弧つかいますモードとか出ないかな
932デフォルトの名無しさん:2008/06/12(木) 15:29:42
from __future__ import braces
933デフォルトの名無しさん:2008/06/12(木) 17:21:39
やっぱり作者が痛くないという所が最大の違いだろうな
934デフォルトの名無しさん:2008/06/12(木) 17:32:45
Rubyの作者がイタいみたいなこと言うなよ。Matzに失礼だぞ。
935デフォルトの名無しさん:2008/06/12(木) 17:45:04
Webアプリケーションをなめるな
http://www.rubyist.net/~matz/20080126.html
936デフォルトの名無しさん:2008/06/12(木) 18:08:16
NetworkのライブラリまわりでPythonとRubyの比較情報とかどこかにない?

Rubyで通信内容のdebuglevel設定とかできるようになったんかな?
937デフォルトの名無しさん:2008/06/12(木) 18:18:17
ググるか、力技でやればいいんじゃないの?
とりあえず、プログラミングに不慣れなら、総当たりでいいんじゃないの?

>>946さんの質問に答える事からはじまる
938デフォルトの名無しさん:2008/06/12(木) 18:22:22
>>946がどんな難問を出してくるかwktk
939デフォルトの名無しさん:2008/06/12(木) 18:24:24
>>901
大体importしたモジュールは勝手に解析してくれるけど
一部うまくいかないモジュールがあるみたい
http://pydev.sourceforge.net/faq.html#code_completion_is_not_working_correctly_for_some
そういうときはPyDEVの設定でPYTHONPATHを確認してみたり
強制読み込みモジュールに指定してみるとうまく動くことがあるらしい
940デフォルトの名無しさん:2008/06/12(木) 18:25:36
>>926
初めてにしてはゴツすぎるんですけど
941デフォルトの名無しさん:2008/06/12(木) 18:27:02
>>938
誤爆ついで、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/
942デフォルトの名無しさん:2008/06/12(木) 18:29:48
っエラトステネスの篩
943デフォルトの名無しさん:2008/06/12(木) 18:31:26
>>940
一般人がプログラムソースを読んだり、そのソースに手を加えたりしないでしょ
その必要性に迫れたときにいじるわけで、このくらいの敷居は、低いと思うよ

あとその敷居の高さはプログラミングの敷居の高さだと思うなあ
944デフォルトの名無しさん:2008/06/12(木) 18:33:58
>>941
a = [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
945デフォルトの名無しさん:2008/06/12(木) 18:34:45
改行コードの問題忘れてた、無駄な改行スマソ
946デフォルトの名無しさん:2008/06/12(木) 18:43:37
for i in xrange(3,101): じゃないの?
947デフォルトの名無しさん:2008/06/12(木) 18:44:47
そうだね
948デフォルトの名無しさん:2008/06/12(木) 19:03:11
>940
C++Primerのごつさには及ばん
949デフォルトの名無しさん:2008/06/12(木) 19:25:55
generator使った篩の例をどっかで見たな
ああ
ttp://4topcoder.blogspot.com/2007/07/python-generator.html
950デフォルトの名無しさん:2008/06/12(木) 19:59:05
>>942
そんなのあるんだね
初めて知った

手順は、なんとなくわかったけど、アルゴリズムで書ける自信がない
951デフォルトの名無しさん:2008/06/12(木) 20:03:05
というか、944の方法か
952デフォルトの名無しさん:2008/06/12(木) 21:02:45
義務教育受けてないのか?
953デフォルトの名無しさん:2008/06/12(木) 21:23:45
ひょっとしたら、ゆとり教育で削られちゃったんじゃないの?
954デフォルトの名無しさん:2008/06/12(木) 23:04:33
今すぐ行って借りてこい。
955デフォルトの名無しさん:2008/06/12(木) 23:14:10
義務教育で習うっけ?
956デフォルトの名無しさん:2008/06/13(金) 00:37:36
義務教育までなら受けた
957デフォルトの名無しさん:2008/06/13(金) 04:23:17
958デフォルトの名無しさん:2008/06/13(金) 04:47:35
PythonでWindowsでクライアント領域のハンドルを取得して
そこに直接描画したり逆にそこの色の情報調べたり出来ますか?
959デフォルトの名無しさん:2008/06/13(金) 08:22:26
素数の話ってゆとりでは出てこないのか・・・
960デフォルトの名無しさん:2008/06/13(金) 08:32:02
一部のゆとりを叩いて精神安寧している方がよっぽどみじめだと思いますよ
どうせ大して賢くないんでしょう
961デフォルトの名無しさん:2008/06/13(金) 08:42:24
ゆとりをたたく奴をたたいて精神安寧している奴が居るわけだが。
2chに精神安定を求めるほど腐ってないよ。賢いし偉いし年収も高いから。
962デフォルトの名無しさん:2008/06/13(金) 09:48:13
素数は習うがエラトステネスの篩は習わんだろ。
963デフォルトの名無しさん: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らしいコードだけど、この速度差は厳しいな。
964デフォルトの名無しさん:2008/06/13(金) 10:13:52
C-API で PyObject_Type テーブルをガリガリ書いてクラスAを宣言したとして、
同じく C-API 上でこのクラスA を継承したクラスBを定義する方法が解説しているページありませんか?

単にクラスを定義するだけなら標準ドキュメントを見ればすぐわかるけど、
別のクラスを継承するやりかたがよくわかりません。

速度が必要な部分なのでなるべくスクリプト側ではなくCで実装したいのです。。。
965デフォルトの名無しさん:2008/06/13(金) 10:15:48
まちがえた PyObject_Type -> PyTypeObject
966デフォルトの名無しさん:2008/06/13(金) 10:27:54
>>963
一般的かは知らんが、a=[True]*100 で済ます。
967デフォルトの名無しさん:2008/06/13(金) 10:49:47
>>964
外してたらスルーしてね

2.1.4 Subclassing other types
ttp://docs.python.org/ext/node25.html
968デフォルトの名無しさん:2008/06/13(金) 10:52:40
>>966
リストに対して乗算って使えたのか。知らなかった。
リストを同じ値で初期化するなら、これが一番綺麗か。

あと、963のa[:]のとこは、a=list(itertools.repeat(True, 100))の方がスッキリするね。
969デフォルトの名無しさん:2008/06/13(金) 11:35:45
同じノリで [[True] * 100] * 100 とかするとハマるので注意。

あと963は range(0, 100) より range(100) が普通かと。
970デフォルトの名無しさん:2008/06/13(金) 12:30:13
>>958
GUIライブラリは?
WindowsのAPIを直接使うなら「Win32API質問箱」で聞いて
win32api,ctypesで書いた方がいい
971デフォルトの名無しさん:2008/06/13(金) 12:34:45
>>968
入門書嫁
972デフォルトの名無しさん:2008/06/13(金) 12:36:34
>>964
Pythonのソースの中にあるxxsubtype.cは?
http://svn.python.org/view/python/trunk/Modules/xxsubtype.c
973デフォルトの名無しさん:2008/06/13(金) 12:38:13
>>969
なるほど。同じ1次元のリストに対する参照が作られるだけなのか。
a=[[1]*5]*5
a[0][0]=0
ってやってみて理解した。

ググってみたけど、多次元のリストを簡単に初期化する方法はないみたいね。
974デフォルトの名無しさん:2008/06/13(金) 13:39:48
素直にnumpyつかっとけばいいんじゃね

import numpy
a = numpy.ones((5,5),int)

0と1での初期化は専用の関数が用意されているが、それ以外の
値で初期化したいのなら、単に
a = numpy.zeros((5,5),int) + 100
とかすればいい
975デフォルトの名無しさん:2008/06/13(金) 13:51:14
>>970
なんとかなりそうです
ありがとうございました!
976デフォルトの名無しさん:2008/06/13(金) 14:08:56
>>973
2次元以上の場合は * とリスト内包の組み合わせが一番簡単だと思う。

a = [[1] * 5 for i in range(5)]
977デフォルトの名無しさん:2008/06/13(金) 14:17:31
>>976
オタは二次元しか受け付けないだろJK
978デフォルトの名無しさん:2008/06/13(金) 18:04:57
リスト内包に表記をつけて「リスト内包表記」と書いてある例が
目につくけど、なんでわざわざ「表記」をつけるんだろうと思う。

書籍とかでも結構ある。訳語としておかしいと思うんだけど。
何でこんな変な訳が流行ったのか理由ご存知のかたいます?

ちなみに英語ではList Comprehension。
979デフォルトの名無しさん:2008/06/13(金) 18:18:29
構文糖なんて表記の上での違いしかないから
980デフォルトの名無しさん:2008/06/13(金) 18:25:11
981デフォルトの名無しさん:2008/06/13(金) 18:32:08
失礼、ミスった

ネット上には用例が少ないけど、set comprehensionの定訳が、集合の内包表記だったから。
982デフォルトの名無しさん:2008/06/13(金) 19:17:51
そういうterminologyにいい訳を求めても仕方がない
むしろ重要なのはその言葉が何を意味しているかはっきりと区別できるという言葉本来の役割である
従って、論文なり技術誌なりで最初に使われたそれらしい言葉がそのまま使われるというのはよくある話

理由は皆がいろいろな訳語を使うと紛らわしいから
技術的な側面を持っている以上、必要なのは言葉の綺麗さなどではなくuniqueである事
983デフォルトの名無しさん:2008/06/13(金) 19:31:11
用語は日本語に訳せず英語のまま使いましょうって?
984デフォルトの名無しさん:2008/06/13(金) 19:33:47
うん
985デフォルトの名無しさん:2008/06/13(金) 19:33:52
一番いいと俺が思うのは専門用語は 日本語(英語) で書いてある奴かな
986デフォルトの名無しさん:2008/06/13(金) 19:34:56
>>981
なるほど。ありがとう。

>>982
それはそうではあるけど、リスト内包"表記"が気持ち悪いんですよ
ね。まぁリスト内包でも普通に通じるから、自分でそういう表現使
うときにはちゃんと表記を削って書いて、周りにも強制するように
します。
987デフォルトの名無しさん:2008/06/13(金) 19:45:07
そこまで気持ち悪いと思うんだったら英語で書けばいいと思うけどなぁ
リスト内包という日本語自体も大概変な日本語だし
988デフォルトの名無しさん:2008/06/13(金) 23:03:42
確かにList comprehensionがリスト内包になるのならわかるが、
リスト内包表記はないよな。どっから沸いてきたんだって感じ。
>表記
989デフォルトの名無しさん:2008/06/13(金) 23:09:29
リスト内包を文字で表記するための構文なんだから全然問題ないと思うが
990デフォルトの名無しさん:2008/06/13(金) 23:41:03
はやくpygameの和訳作業やれ屑ども
991デフォルトの名無しさん:2008/06/13(金) 23:48:23
992デフォルトの名無しさん:2008/06/13(金) 23:49:09
993デフォルトの名無しさん:2008/06/13(金) 23:50:15
994デフォルトの名無しさん:2008/06/13(金) 23:51:13
英語と日本語が1対1で対応するわけじゃないんだから、原語に無い言葉を
足してはいかんとは思わないな。「リスト内包」では日本語としておかしいし。
「内包表記」が良い訳だとは思わないけどね。
リスト内包構文くらいの方がいいかね。

そもそも、俺の辞書だと内包の意味だとuncountableとなっているが、
原文はList Comprehensionsと複数形だし、内包という訳も怪しい。
995デフォルトの名無しさん:2008/06/13(金) 23:51:29
996デフォルトの名無しさん:2008/06/13(金) 23:52:01
997デフォルトの名無しさん:2008/06/13(金) 23:54:54
998デフォルトの名無しさん:2008/06/13(金) 23:56:09
999デフォルトの名無しさん:2008/06/13(金) 23:56:35
1000デフォルトの名無しさん:2008/06/13(金) 23:56:53
リスト閉包式が正しい役だろJK
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。