Pythonのお勉強 Part 26at TECH
Pythonのお勉強 Part 26 - 暇つぶし2ch175:Free Tibet
08/05/06 23:57:15
>>167
オライリー信者乙

176:デフォルトの名無しさん
08/05/07 00:20:38
>>175
そんな、人類の足引っ張ることしかできない悲しい奴みたいな言い方しないで
前向きに行きましょうよ。

177:デフォルトの名無しさん
08/05/07 00:24:08
「きさま、マック信者だな?」

178:デフォルトの名無しさん
08/05/07 00:25:34
「きみはゆくえふめいになっていたマックじゃないか」

179:デフォルトの名無しさん
08/05/07 08:13:21
>>169
JythonやIronPythonだと速くなるかも知れない。
CPythonだと複数スレッドを同時に動かせないんで速くならない

180:デフォルトの名無しさん
08/05/07 11:57:52
Python絡みで信頼のおける日本人って
柴田さんしか居ない状況?
他の人ってあっちの人と話したことないよね

181:デフォルトの名無しさん
08/05/07 12:01:59
>>180
んなこたあない
もっと偉い人はいる
多くはないけど

182:デフォルトの名無しさん
08/05/07 12:02:11
>>180
あっちの人と話したことがある=Python絡みで信頼のおける日本人
と言う事ならmatz

183:デフォルトの名無しさん
08/05/07 12:04:01
多くの日本人Pythonistaは引きこもり

184:デフォルトの名無しさん
08/05/07 12:04:28
柴田さんは信頼できるの?

185:デフォルトの名無しさん
08/05/07 12:04:50
個人攻撃が始まった(www

186:デフォルトの名無しさん
08/05/07 13:18:23
自分以上の人間を言いがかりで叩くって
気持ちいいんだもん。

187:デフォルトの名無しさん
08/05/07 13:57:56
柴田淳はじまったな。

188:デフォルトの名無しさん
08/05/07 14:09:25
>>182
ブレース採用の話しかしてないじゃんかw

そういう意味じゃなくて、
開発者が誰で誰がどれを担当していて
今どのモジュールが開発中もしくは放棄中とか
そういった情報を知ってる日本人のことだよ。

189:デフォルトの名無しさん
08/05/07 14:15:11
186が184をカス認定している件。

190:デフォルトの名無しさん
08/05/07 14:29:11
>>188
ある程度ならsvnのコミットのログとか
ソースコードのコメント読めば分かるんじゃないか

191:デフォルトの名無しさん
08/05/07 16:00:25
pygame.orgの英文をなんとかしてほしいんだよね
英文を読んでまでのヤル気が必須になってるから
興味もった素人達にとっては敷居が高すぎる。
ただでさえわからないプログラム解説を、わからない英語で解説されるわけだから。
誰か、日本語翻訳サイトつくってよ
翻訳だけの協力でもいいよ、
俺がサーバー借りてサイト作ってもかまわない
サイト作りは出来るから。
なんなら、このスレのみんなでpygame公式サイトの日本語解説版作っていかないかな?

192:デフォルトの名無しさん
08/05/07 16:03:18
まずはお前が率先して道を示せ。
話はそれからだ。

193:デフォルトの名無しさん
08/05/07 16:53:27
ほとんどSDLのラッパーなんだからSDLをさらっと習得しちゃえば
なんとなくわかるっしょ。

194:デフォルトの名無しさん
08/05/07 17:47:19
>179

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

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

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

みたいな事かいてあるよ。なのでサポートしていると思うんだけど、違うの?

195:デフォルトの名無しさん
08/05/07 17:54:04
どこのクソ本だよそれ。

196:デフォルトの名無しさん
08/05/07 18:06:26
>>194
C記述の拡張コードがマルチスレッドを考慮していないので
Python上ではマルチスレッドでも実質グリーンスレッド状態になる。
ちゃんとしたマルチスレッドな動作を期待するならJythonやIronPythonになるかな。
文脈でわかるのかもしれないけど「スレッド」といってもいろいろ観点があるから。

>>195
まちがっちゃいないけど説明不足でミスリードしちゃいそうだね。

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

198:デフォルトの名無しさん
08/05/07 19:08:58
194です。

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

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

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

という事は計算が速くなるわけないですね。>170みたいな用途に
限る、ということか。

199:デフォルトの名無しさん
08/05/07 19:09:16
>>183
自分一人の例を全員の例のように敷衍するひとのひとりですね

200:デフォルトの名無しさん
08/05/07 19:12:07
>>191
URLリンク(www.halb-katze.jp)


201:デフォルトの名無しさん
08/05/07 19:49:30
>>191
> 英文を読んでまでのヤル気が必須になってるから
> 興味もった素人達にとっては敷居が高すぎる。

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

> 俺がサーバー借りてサイト作ってもかまわない
> サイト作りは出来るから。
> なんなら、このスレのみんなでpygame公式サイトの日本語解説版作っていかないかな?

個人的、希望だが、英文のpygameを学習する際に頻出する英単語帳をつくったりとか、
英文を読み解くためのテクとかを、補助ツールを扱うwikiを作ってくれ
頻出する英単語を500語に厳選して、暗記すれば、かなり読み解けると思うよ

調べるためにググる際も英文の方のほうがひっかかるし、内容が高いことが多い
Wikipediaも英語版のほうが内容が豊富だし、すごくマイナー単語も載っているし
英文には、絶対慣れたほうがいいよ
あとわざわざ翻訳すると逆に読みづらくなるし、理解も難しくなる


これは、既出?
URLリンク(www.unixuser.org)

あと下の本をどういう読み方でもいいから、読んで感想を聞かせてほしいところだね
Amazon.com: Beginning Game Development with Python and Pygame: From Novice to Professional (Beginning from Novice to Professional): Will McGugan: Books
URLリンク(www.amazon.com)

とりあえず、wikiをつくって、2chに晒してみたら?
協力してくれる人もいるかもしれないよ

202:デフォルトの名無しさん
08/05/07 19:54:46
マルチcore対応のスレッドが使えるスクリプト言語を実装するのは難しいの?
Rubyも結局1つでしか動かないらしいし。

203:デフォルトの名無しさん
08/05/07 20:08:34
pygame翻訳しろの話は、くだすれPythonスレとマルチになってたんだな。

204:デフォルトの名無しさん
08/05/07 20:11:45
pygameスレにも貼ってあった

205:デフォルトの名無しさん
08/05/07 20:17:16
pygameなんてなんか人前で言いづらいな。

206:デフォルトの名無しさん
08/05/07 20:18:59
こういうのって勝手に翻訳して公開していいんだっけ?
まぁ事後承諾だろうと拒絶されるこたまずないだろうからどーでもいいんだろうけど

ゲーム用にしか聞こえないよなw

207:デフォルトの名無しさん
08/05/07 20:22:24
>>202
言語自体は各スレッドにインタプリタを1つずつ用意することで簡単に並列化できると思われ。
問題は膨大な量のライブラリモジュール、特にC等で書かれたライブラリのバインディングだ。
スレッドセーフでないライブラリは統合不可ということになる。つまり言語として制約が大きい。
大域変数でメモリ管理ってのは割とありがちだけど、これはスレッドセーフではないのでNG。
こういうものを除外していくとどんどん言語としての有用性が下がっていく。
代替品の再実装なんてやってられん。PythonにしてもRubyにしてもそんなところだと思われ。

208:デフォルトの名無しさん
08/05/07 20:24:13
pygameがLGPLだからドキュメントも同じ扱いになるんじゃないか?
ちゃんと調べてはいないけど

209:207
08/05/07 20:41:33
あんま関係ないけど、OpenMPで並列化されたライブラリを拡張モジュールとしてPythonに組み込んだことがある。
これだと並列化がモジュール内で閉じてるから何も問題ない。
俺はOpenMPで並列化された線形解法ライブラリのラッパを書いてPythonに組み込んだ。フツーに使えた。
ただし、Intel C コンパイラの場合はPython一式を -openmp オプション付きでコンパイルする必要があった。

あと、PythonでMPIプログラムを書いてマルチコア環境で実行するというアプローチもあるね。
これだと真に並列に動作するはず(マルチスレッドプログラミングと同じ要領というわけにはいかないけど)。
Python用のMPI実装にはいくつかあった希ガス。

210:デフォルトの名無しさん
08/05/07 20:53:31
PythonのWikiエンジンってあったんだね
知らなかった

使い勝手は、どうなの?

Python製Wikiエンジン"MoinMoin"、日本語化担当者募集
URLリンク(www.python.jp)


211:デフォルトの名無しさん
08/05/07 21:09:58
URLリンク(moinmoin.wikiwikiweb.de)

比較ページを見つけたけど、いい事しか書いてないなぁ。
まぁMoinMoinのサイトだから仕方ないか。

212:デフォルトの名無しさん
08/05/07 22:00:43
>>207
勉強になった。
スレッドセーフなモジュールを分類してかき集めるってプロジェクトがおこっても
良さそうとか思ったけど見つけられなかった。いろいろと難しいことがあるのかな。

213:デフォルトの名無しさん
08/05/07 22:46:07
>210

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

ただ、見た目のきれいさとかはないけどね(デフォルトの設定では)


214:Tracの方が良いよな
08/05/08 00:07:36
先に言っておく。この話題で
MoinMoinじゃなくてTracの方がいい
なんて思ってる人は、何かがずれていると自覚したほうがいい。


215:デフォルトの名無しさん
08/05/08 10:54:55
MoinMoinで気に入ってるのは
Pythonのソースを表示すると
色分けで表示するってやつかな。

あと微妙に軽い。

欠点として‥登録ユーザじゃないと
ページ変更時刻がUTCで記録されてしまう。
これが地味に嫌だ

216:デフォルトの名無しさん
08/05/08 13:12:49
以前、翻訳してみようとWikiを作ってみたけど頓挫しているサイト
Displayモジュールの一部しかまだ翻訳してません
ぶっちゃけ翻訳の作法とかよくわからないし・・・

pygame日本語ドキュメント
URLリンク(wiki.livedoor.jp)

手伝ってくれる人がいたら嬉しい
ちなみにMLで聞いてみたところドキュメントもLGPLらしいね

217:デフォルトの名無しさん
08/05/08 13:41:35
>215

今使ってないからなんとも言えないけど、
Config.tz_offset ってのを書換えれば良さそうですが...
(デフォルトのタイムゾーン)


218:デフォルトの名無しさん
08/05/08 13:43:15
もいんもいん

219:デフォルトの名無しさん
08/05/08 14:19:37
>>212
調べたことないけど、スレッドセーフなモジュール(特にC等で書かれた拡張モジュール)は
ほとんど無いんじゃないかなあ。

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

その点、Java は最初からマルチスレッド対応だから楽チン。
マルチスレッドで真に並列動作するPythonを実現するための一番の近道はJythonだろうね。

220:デフォルトの名無しさん
08/05/08 15:12:06
そのレベルの話であれば、Javaがマルチスレッド対応だから楽ちんだなんてとてもいえないと思うけど。
同期とかの方法と、VMのメモリモデルが規定されているだけでしょ。
結局、使うAPIとかライブラリがMT-Safeかどうか調べなきゃいけない。標準のAPIについては大体書いてあるけど。

221:デフォルトの名無しさん
08/05/08 21:21:29
>>216
今すぐは無理だけど、暇があったら手伝いたい。
勝手に編集してもいいの?

222:デフォルトの名無しさん
08/05/08 23:20:40
>>216 >>221
おまいらがんがれ。

wikiで自分が翻訳したページを他人に修正されると、なんか一瞬犯されたような気分
になったりするけどそんなケツの穴の小さいことは気にしないでがんがん翻訳してくれ。

223:デフォルトの名無しさん
08/05/08 23:26:05
>>222
気にしてるじゃねーかw

224:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/09 00:35:11
非グループ化の(?:...)が使えないかな

226:デフォルトの名無しさん
08/05/09 00:41:18
>>224
[A-Z]

227:デフォルトの名無しさん
08/05/09 00:48:28
re.findall('[\w*]+', src) して from と import を filter

228:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/09 01:41:52
>>228
\w は数字ともマッチするわけだが。
一回、正規表現について勉強しなおしたほうがいいんじゃね?

231:デフォルトの名無しさん
08/05/09 01:44:41
urllib2

232:デフォルトの名無しさん
08/05/09 02:32:46
print re.findall('(€w)+', 'ABCD')
結果: ['D']

グループの繰り返しだと、最後だけしか取り出さないみたいだね。

233:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/09 16:23:44
【平均年収】岩手県の就職【365万円】 [就職]
【岩手県南】一関第一・水沢・花巻北・黒沢尻北高校 [お受験]

235:デフォルトの名無しさん
08/05/09 17:07:07
何の誤爆かと思ったらおすすめ2ちゃんねるか

236:デフォルトの名無しさん
08/05/09 17:26:46
同郷がいるな!?

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

スレ汚しスマソ

237:デフォルトの名無しさん
08/05/09 18:44:32
>>236
いや、君ひとりかもよ?w
俺もここと恐らく俺の他には誰も見ていないであろうスレ(語学板の某マイナー言語のスレ)を
交互に訪れていたらそのスレがおすすめ2ちゃんねるに出たことあるし。

238:デフォルトの名無しさん
08/05/09 18:49:17
日本では岩手県が一人当たりのPython消費量が多いらしい

239:デフォルトの名無しさん
08/05/09 18:59:25
>>237
どっちも見たこと無い

240:デフォルトの名無しさん
08/05/09 22:58:35
水虫が感染した

241:デフォルトの名無しさん
08/05/09 23:03:51

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

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

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

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

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

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

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

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

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

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


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

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

のような感じで


243:デフォルトの名無しさん
08/05/10 03:13:59
>>242
ファイルにあるやつなら insepct.getsource で取れる

244:デフォルトの名無しさん
08/05/10 04:27:34
>>169
Parallel Python というパッケージがあるのを知ったので参考までに紹介しとく。
URLリンク(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

245:169
08/05/10 13:53:14
>>244
おおお,サンクス!
早速いじってみまふ。

246:デフォルトの名無しさん
08/05/10 14:12:25
どうでもいいから
ちゃっちゃとpygameの資料和訳
作業に入れよ。
非国民か?

247:デフォルトの名無しさん
08/05/10 14:41:50
>>246
国際人には和訳などいらんのだよ

248:デフォルトの名無しさん
08/05/10 14:46:02
真の国際人は地域文化を尊重するものだ
と混ぜっかえしてみる

249:デフォルトの名無しさん
08/05/10 14:48:20
地域文化を尊重するから
現地の言葉を尊重するのだよと

250:247
08/05/10 14:48:29
>>248
(・ω・)つ おざぶとん

251:デフォルトの名無しさん
08/05/10 15:03:20
早く日本語化プロジェクトに参加しろよ。
お前らにpygameの未来がかかっている。

252:デフォルトの名無しさん
08/05/10 15:13:29
ユーザからの入力を正規表現で処理したいと思ってます。
入力された文字列に正規表現が含まれてる場合にそれをエスケープしたいんだけど、どうやったらいいのかわかりません。
誰か助けてプリーズ・・・

253:デフォルトの名無しさん
08/05/10 15:16:19
英語も読めないようなやつがpygameを使えるようになるとは考えにくい。

254:デフォルトの名無しさん
08/05/10 15:57:14
たぶんリファレンスの和訳よりも、各オブジェクトを絡ませた逆引きサンプルコードみたいのが需要あると思うよ。
扱い方が理解できりゃオブジェクト名で大体想像できるし

255:デフォルトの名無しさん
08/05/10 16:08:18
リファレンスぐらいなら簡単に訳せそうに見えるね

試しにpygame.cdromモジュール使ってみたけど対話型シェルから
簡単にトレイの開閉とか再生できておもすれー
かなりよく抽象化されてて使いやすそう

256:デフォルトの名無しさん
08/05/10 16:10:06
>>252
re.escapeは試してみた?

257:デフォルトの名無しさん
08/05/10 16:22:06
> リファレンスぐらいなら簡単に訳せそうに見えるね
簡単に訳せる文章、英文でも理解できる文章は、労力をかけて訳してもしょうがないっしょ
邦訳することが目的になっている感じだし、目的が変化している

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


とりあえず、目的・問題の明確化をさせたほうがいいんじゃないの?

258:252
08/05/10 16:46:20
>>256
できましたありがとー!
(_アンダースコアもエスケープされちゃうのがナゾですが・・・)

259:デフォルトの名無しさん
08/05/10 19:07:41
このスレッドの目的は
pygame文書の和訳という使命を帯びた事が証明されたわけだ

260:デフォルトの名無しさん
08/05/10 19:28:29
よし、wxpythonの和訳が終わったらpygameも和訳するぜ

まだ、何もやってないけど

261:デフォルトの名無しさん
08/05/10 19:43:09
Pygameのドキュメントだけ見てもよくわからないけど
SDLの方のドキュメントを読むと理解できる事も多いよね

262:デフォルトの名無しさん
08/05/10 20:39:56
お前らは早くpygameの和訳作業にとりかかれ

263:デフォルトの名無しさん
08/05/10 20:44:07
英語も読めない低脳は黙ってろ

264:デフォルトの名無しさん
08/05/10 21:01:38
ここの基準はPythonが書けるかどうかで決まるんだぜ(藁)

265:デフォルトの名無しさん
08/05/10 21:02:23
Pyhton

266:デフォルトの名無しさん
08/05/10 21:04:17
pyてょn

267:デフォルトの名無しさん
08/05/10 21:31:23
oh tyPo

268:デフォルトの名無しさん
08/05/10 21:34:00
○~~  ○~~  ○~~
  ○~~  ○~~  ○~~
    ○~~  ○~~  ○~~


269:デフォルトの名無しさん
08/05/10 21:52:46
sperm, sperm, sperm and sperm.

270:デフォルトの名無しさん
08/05/10 21:54:07
まず pygame を何と訳したらいいのかわかりません

271:デフォルトの名無しさん
08/05/10 21:58:25
pygame でいいじゃん

272:デフォルトの名無しさん
08/05/10 22:07:29
随時出張してきてもいいが、本スレに帰れ

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

【pygame】pythonでゲーム製作【ぱいがめ】
スレリンク(gamedev板)

>>270
Python + game = Pygame
こういう組み合わせの名前(造語)って代表的なのってなんだろう?

273:デフォルトの名無しさん
08/05/10 22:25:32
pychinko

274:デフォルトの名無しさん
08/05/10 22:59:17
pygameの和訳を済ませろボケナスども

275:デフォルトの名無しさん
08/05/10 22:59:58
乳遊

276:デフォルトの名無しさん
08/05/10 23:30:28
自己解決の次は翻訳か

277:デフォルトの名無しさん
08/05/10 23:37:22
>>272
PyPI, PyPy

278:pygame和訳wiki”管理”者
08/05/10 23:44:29
事故解決しました

279:デフォルトの名無しさん
08/05/10 23:49:25
つまんね

280:244
08/05/10 23:51:28
引続き Parallel Python をいじってみたんだけども、このシステムはマスタワーカモデルを前提にしているみたいだ。
つまり、マスタが仕事の集合を持っていて、有限個のワーカに1つずつ仕事を割り当てる。仕事を終えたワーカは
マスタから新しい仕事をもらって処理する。これを仕事の集合が空になるまで続ける。

ワーカ間で通信をする機能は提供されていないし、特定のワーカ(たとえば特定のリモートホスト上のppserver.py)に
特定の仕事を割り当てることもできないっぽい。Parallel Python が有効かどうかは実現したい並列アルゴリズムが
マスタワーカモデルに適合するかどうかに依る希ガス。

281:デフォルトの名無しさん
08/05/11 00:26:06
おっpydev

282:デフォルトの名無しさん
08/05/11 00:37:49
pygameの和訳が進んでいるか、
確認のために毎日一回以上は
pygame関連の話題を出すようにしようぜ

反論がある奴は似非python使いとして認定してやろうぜ

283:デフォルトの名無しさん
08/05/11 00:40:31
>>280
具体的には、どういう用途に使えそうなんですか?

284:244
08/05/11 00:59:44
>>283
pygameかな

285:デフォルトの名無しさん
08/05/11 01:34:00
>>283
最も適しているのは並列処理の分野で embarrassingly parallel と呼ばれるカテゴリに属する種々の計算、
すなわち入力データを複数の独立した部分に分割できて、各部分について他から独立して計算が行なえる
タイプの用途に適している。
URLリンク(en.wikipedia.org)
Wikipediaに例があがっている。フラクタル計算とか3DCGのレンダリング(例:レイトレーシング)とか力任せの
暗号解読とか色々ある。

並列処理って概して複雑で長時間計算し続ける必要のある応用が多い。そういう応用には C とか Fortran を
使うことがほとんどなんだけど、きちんと動くようになるまでの開発時間が長くてデバッグがたいへんだったりする。
そういう並列プログラムの試作(プロトタイピング)に Python が使えたらいいなーと個人的には思っている。

286:デフォルトの名無しさん
08/05/11 08:49:01
>>274
おまえにいいこと教えてあげよう。
市場の中の肉屋さんいって、
「ホースください」頼んでみ。
解体処理した豚の膣の部分がもらえる。
ほんとは金かけて廃棄しないといけない部分だから無料でもらえる。
食い物にはならないから。
この豚の膣が極上。
まあ考えたら膣だからな。
人間のじゃないだけで本物の膣だから、気持ちよくて当たり前。

287:252
08/05/11 09:30:17
re.escapeってなんでもかんでもエスケープしちゃうのか・・・
\山\田\太\郎て

288:デフォルトの名無しさん
08/05/11 09:43:58
>>285
PythonでCPU8個使って並列計算するよりCで書いたプログラムの方が速そうだったり。。。

289:デフォルトの名無しさん
08/05/11 09:57:09
>>288
何言ってんだ?

290:デフォルトの名無しさん
08/05/11 10:28:52
>>289
あ?ヤンのかコラ

291:デフォルトの名無しさん
08/05/11 11:21:19
URLリンク(www.geocities.jp)

292:デフォルトの名無しさん
08/05/11 11:21:53
>>286
ついでに言うと豚の内臓と人間の内臓はかなり近いらしいね
豚の心臓を人間に移植した話もあるからな


293:デフォルトの名無しさん
08/05/11 12:13:17
>>292
羊の膣も極上という話だけどどうなのだろうね?

294:デフォルトの名無しさん
08/05/11 12:14:24
膣なんてどうでもいいから
チャッチャとpygame資料の和訳作業に務めろ糞野郎共

295:デフォルトの名無しさん
08/05/11 14:39:25
>>285
自分も並列化するときのプロトタイプとしてPythonの並列環境を使ってみたいと
考えているんだけれど、今のところプロトタイプとしての感触はどう?

データ分割の楽な問題ってCとかFORTRANでもOpenMPを注意深く使うだけでも早くなる事が
多いし、MPIでも慣れれば苦労せずに書けるけれど、そうでない、スレーブ間での通信が必要
とかうまく分割できないとかそういう問題はMPIでやろうとするとデバッグが(;゚д゚)
なことになりがちで、そういう用途にPythonのプロトタイプが役に立つなら素晴らしいと思う
実はC並列版とそれほど速度とメモリ使用量が変わらないとかなら最高
C並列版より速ければ神

296:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/12 01:33:26

Linux で wxPython をコンパイルしようとして、
URLリンク(ymasuda.jp)
ここを参考に進めて行ったんだけど、最後の
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:デフォルトの名無しさん
08/05/12 02:10:10
config.py(setup.py?)のBUILD_GLCANVASを0にしてみたら?

299:デフォルトの名無しさん
08/05/12 08:47:31
>>297
どのディストリ使ってるのか不明なんだけど、
バイナリパッケージでは存在してないの?

300:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/12 17:19:12
内部表現はUCS2かUCS4だったと思うのだが
中身に触る方法はないほうがいいんじゃないかな

302:デフォルトの名無しさん
08/05/12 17:23:20
ord 関数じゃダメなんすか

303:デフォルトの名無しさん
08/05/12 20:12:59
>>300
文字列はエンコーディングを決めなければバイト列では表現できないよ。

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

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

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

エンコーディングが分かっていればご存知の通り unicode() と .encode() で可能。

304:デフォルトの名無しさん
08/05/12 20:39:43
print repr([u'hello'])

305:297
08/05/13 01:30:38
>>297です。
>>298-299
大変申し訳ない。
上記URLの、下記の文をすっとばしてました・・・。

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

一番最初からやり直したらエラーを吐かなくなったよ。
でも、色々可能性を考えて下さってありがとうございました。
お騒がせしてしまい申し訳ございませんでした。

306:デフォルトの名無しさん
08/05/13 08:29:09
>>305
うわ、ビルド方法が面倒くさいね

307:デフォルトの名無しさん
08/05/13 10:12:52
>301
ないほうがいいってことはないでしょ

初心者が文字列操作で使うべき方法として
提示されるかどうかはともかく

308:デフォルトの名無しさん
08/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'
好きなのを選べ

309:300
08/05/13 12:46:51
>>301-304
>>307-308

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

御蔭様で理解が深まりました。ご教示どうもありがとうございました。

310:デフォルトの名無しさん
08/05/13 15:58:29
最近の初心者は文体が丁寧だな

311:デフォルトの名無しさん
08/05/13 16:13:00
いいことじゃないか。

312:デフォルトの名無しさん
08/05/13 18:42:46
ipython1.0 は並列に対応しているみたいだね
使ってみたいがインストールできないorz

313:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/13 20:27:04
無理。
他のOSネイティブなスレッドでも、そういう手段は用意されていないか
用意されていても推奨されていない。


315:デフォルトの名無しさん
08/05/13 20:33:36
基本的にスレッドはスレッド自身で終了させた方がいいよ

316:デフォルトの名無しさん
08/05/14 00:04:03
URLリンク(www.devchix.com)
> Kamaelia: The future of Python Frameworks looks promising.

317:デフォルトの名無しさん
08/05/14 06:37:55
とりあえず clss GetBBC はよしたほうがいいな

318:デフォルトの名無しさん
08/05/14 17:22:08
URLリンク(groups.google.com)

空のtxtファイルが出来る言ってるから、日本語通らない?
とかスレ違い気味だけど聞いてみる

319:デフォルトの名無しさん
08/05/14 19:29:11
日本語でおk

320:デフォルトの名無しさん
08/05/16 19:23:25
ウェブアプリを作りたいなと思い、教育用らしいPythonを始めようと思うのですが
XAMPPみたいにアーカイブを展開するだけで
ApacheとPythonのApacheモジュールが使えるようになるWindows向けソフトとかありますか?
お手軽な感じで始めたいです

321:デフォルトの名無しさん
08/05/16 19:30:13
cd htdocs
C:\Python25\python.exe -m CGIHTTPServer

Pythonだけでできるよ。apacheなんてイラネー

322:デフォルトの名無しさん
08/05/16 19:55:26
320です
どうもありがとうございます
ブラウザで表示確認できるんでしょうか
よくわからないので調べてきます
ほんと無知ですみません

323:デフォルトの名無しさん
08/05/16 22:07:06
CGIHTTPServer にあったディレクトリのバグは直ったんだろうか?

324:デフォルトの名無しさん
08/05/16 22:13:14
これ?
URLリンク(svn.python.org)
>[Bug #737202; fix from Titus Brown] Make CGIHTTPServer work for scripts in sub-directories

325:デフォルトの名無しさん
08/05/17 00:01:14
>>321
終了のしかた教えて

326:デフォルトの名無しさん
08/05/17 01:59:21
Python の C コード書くときのコーディング規約って、みんなちゃんと守ってる? 
どこまで守ってる?

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

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

X return ( expr );
O return expr;
•冗長な括弧は使わない

327:デフォルトの名無しさん
08/05/17 06:14:03
>>325
Ctrl + D とかじゃないの

328:デフォルトの名無しさん
08/05/17 10:01:43
>>326
そんな規約があるとは知らなかった。

329:デフォルトの名無しさん
08/05/17 10:10:11
>>326
URLリンク(www.python.org) の下のどこかにあります?

330:デフォルトの名無しさん
08/05/17 10:59:22
どう見てもPEPだろ

331:デフォルトの名無しさん
08/05/17 11:14:13
WindowsならCtrl+ZのあとにEnter
でも最初の表示どおりhelp→help()→quit→quit()と入力していってほしいかも。

332:デフォルトの名無しさん
08/05/17 11:49:46
>>328,329
PEP 7 -- Style Guide for C Code
URLリンク(www.python.org)

333:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/17 15:22:22
単純にaccept()がブロックしてるだけでしょ
try節で囲むかtelnet localhost 80とかやってから落とせばいい

335:デフォルトの名無しさん
08/05/17 15:44:26
>>333
普通のCGIがやりたいの?
ApacheでCGIがやりたいの?
320を読む限りではGoogle App Engineとかそういうのが近いのかな?
GAEはお勧めしないけど。

336:デフォルトの名無しさん
08/05/17 19:40:24
>>335
320ですが320は322しか書き込みしていません・・・
私とはしたいことが異なるのではないかと思います

あと、質問してもよろしいでしょうか
じつはまだサーバ上でファイルを実行できていないんですが、そのことについて・・・

CGIHTTPServer.pyを起動させて
htdocsフォルダを作って
まだpythonのスクリプトが書けないので既存のスクリプトファイル
URLリンク(python.rdy.jp)のcheck.cgiとexplore.cgi)を
URLリンク(localhost:8000)
に入れて表示させてみたのですが
ieだとそのまま中身のテキストが表示され
firefoxだとcgiファイルのダウンロードが始まってしまいます
拡張子をpyに変えてみたらie、firefoxともそのまま中身のテキストが表示されます

cgi-binフォルダを作って
同様に既存のスクリプトファイルを
URLリンク(localhost:8000)
に入れて表示させてみたら
拡張子が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:デフォルトの名無しさん
08/05/17 20:05:18
それsh辺りのスクリプトだからwinじゃ動かないよ
.pyに変えたらコマンドプロンプトにエラーメッセージが表示されてるからよく嫁
とにかくエラーメッセージはきちんと嫁

338:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/17 20:08:17
ああほんとだ。見てなかった >sh辺りのスクリプト
explore.cgiはPythonで書かれてるから動くんじゃないかな

340:デフォルトの名無しさん
08/05/17 20:13:03
>>336
htdocs フォルダが My Documents みたいにスペースの入ったフォルダの配下にない?

341:デフォルトの名無しさん
08/05/17 20:16:50
>>337-340
336です
親切にどうもありがとうございますm(_ _)m
ただ話の内容が難しくて理解が追いついていません・・・

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

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

エラーメッセージをよく読みます

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

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

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

初歩的なことに付き合っていただき
みなさん
ありがとうございますm(_ _)m

344:デフォルトの名無しさん
08/05/17 21:10:10
めずらしくpythonのお勉強なんかやってるやつがいるな


345:デフォルトの名無しさん
08/05/17 21:34:07
まだpythonにたどり着いてない気が…


346:デフォルトの名無しさん
08/05/17 21:44:28
c:\ に置かせようとするセンスが理解出来ん

347:デフォルトの名無しさん
08/05/17 21:50:30
センスっつーより悪意を感じる

348:デフォルトの名無しさん
08/05/17 22:13:52
拡張子がcgiでも関連付けでpythonを起動してやるようにすれば動くかもしれない。
実行可能ならbatなんかでもCGIとして動作するみたいだから。

349:デフォルトの名無しさん
08/05/19 16:39:43
こんにちは。いつも参考にさせていただいております。
さて、早速なのですがPythonでテキストファイルへの書き込みは出来るのですが追加の書き込みの方法がわかりません。
一度内容を読み込んで結合してから書き込んでもよいのですがあまりスマートとは思えませんでしたのでここに投稿した次第です。
方法をご教授いただければ幸いです。


350:デフォルトの名無しさん
08/05/19 16:42:06
open(path, 'a')

351:デフォルトの名無しさん
08/05/19 16:48:57
レスありがとうございます。解決いたしました。

352:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/19 21:06:40
returnが関数外じゃない?

354:デフォルトの名無しさん
08/05/19 21:18:28
すいません。インデントが外れていたので
URLリンク(codepad.org)
URLリンク(codepad.org)

355:デフォルトの名無しさん
08/05/19 21:30:37
return→sys.exit()に

356:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/19 21:34:44
apacheならerror_log(error.log)に出なかったっけ

358:デフォルトの名無しさん
08/05/19 21:38:05
pychecker, pylintあたりで文法チェックしといた方がいいかもね

359:デフォルトの名無しさん
08/05/20 06:24:41
>>355でFAもいいところなわけだが

360:デフォルトの名無しさん
08/05/20 13:59:12
URLリンク(codepad.org)

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

あとTracってAPacheがないと動かせないですか?
PythonをUSBメモリに入れて持ち運びたい(できればtracも持ち運びたひ…)


361:デフォルトの名無しさん
08/05/20 14:50:11
>>360
>関数の引数って参照渡しなの?

そうだよ。入門書嫁。

362:デフォルトの名無しさん
08/05/20 14:54:54
どんな入門書だよ

363:デフォルトの名無しさん
08/05/20 14:55:42
>>360
いっちゃうと代入も何もかもぜんぶ参照渡しです。
だから逆に参照渡しという概念がでてこない。

TracはFastCGIやWSGIでも動作するからApacheじゃなくてもいい。
lightyなんかいいとおもう。
あとWindows版Pythonならパスが変わっても動作するはず。

364:デフォルトの名無しさん
08/05/20 15:08:52
>>362
まともな入門書にはたいてい書いてあるよ

365:デフォルトの名無しさん
08/05/20 15:09:35
Pythonって参照渡しって言うのかな

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

いわゆる参照渡しだと、aの値が書き換えられるんじゃないの

366:デフォルトの名無しさん
08/05/20 15:10:56
>>365
def foo(&x): x = 2

これでOK
まともな入門書にはかいてあるよ

367:デフォルトの名無しさん
08/05/20 15:15:57
>>366
つまり、「何もかもぜんぶ参照渡し」というわけでなく、
特に指定しなければ値渡し、ということじゃない?

368:デフォルトの名無しさん
08/05/20 15:16:42
参照をリファレンスという意味で使ったなら
ある意味正しいと思う

369:デフォルトの名無しさん
08/05/20 15:21:18
>>> def foo(&x): x = 2
SyntaxError: invalid syntax
ついに嘘書く奴が出てきたよ

370:デフォルトの名無しさん
08/05/20 15:30:59
>>365
def foo(x):
↑ここのxには確かにa = 1と同一の1が渡る。
 x = 2
↑でもこれはその1を2に置き換えるのではなく
xの参照先を2に変更することになるのでaは1のまま。

371:デフォルトの名無しさん
08/05/20 15:31:48
>>365
Pythonで数字はイデア界にあるから
書き換え不能なんですよ。

372:デフォルトの名無しさん
08/05/20 15:33:56
>>369
嘘を嘘と見抜く練習をしような(w

373:デフォルトの名無しさん
08/05/20 15:49:35
つまり = は代入ではなく束縛ってことか

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

なんぞこれ

374:デフォルトの名無しさん
08/05/20 15:55:14
循環参照は[...]になるのか。賢いな。

375:デフォルトの名無しさん
08/05/20 18:42:18
>>370-371
えーと、本当に参照渡しの意味わかってんの?

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

Pythonの場合、a, xは同一のオブジェクトを指している*別変数*だから、
xへの代入はaに影響を与えない。
そういうのは参照渡しとはいえないでしょ。

376:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/20 19:14:55
ミュータブルorイミュータブルというのはオブジェクトの特性であって
変数の特性ではない

378:デフォルトの名無しさん
08/05/20 20:15:06
そもそもPythonのオブジェクトには代入演算子ないし

379:デフォルトの名無しさん
08/05/20 20:36:17
Mr.NishioのJython本を読むと、変数はオブジェクトへのリファレンス貼る
ってことが書いてある。
買って読んでみなよ。

380:デフォルトの名無しさん
08/05/20 21:01:56

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

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



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

382:デフォルトの名無しさん
08/05/20 21:12:01
>>360
> 関数の引数って参照渡しなの? 

違います。

URLリンク(www.python.org)
> 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:デフォルトの名無しさん
08/05/20 21:44:09
渡す物がlistになると挙動が変わるはず

384:デフォルトの名無しさん
08/05/20 21:47:37
>>383
リストだろうが何だろうが、何も変わらない。

>>> def f(x): x = [1,2,3]
...
>>> a = []
>>> f(a)
>>> a
[]
>>>


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

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


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

386:デフォルトの名無しさん
08/05/20 21:59:18
>>385
リストだろうが何だろうが、何も変わらない。

>>> def f(&x): x = [1,2,3]
...
>>> a = []
>>> f(a)
>>> a
[1,2,3]
>>>

387:デフォルトの名無しさん
08/05/20 22:04:59
Pythonを学ぼうと思うのですが
URLリンク(python.rdy.jp)
で何を選べばいいのかわかりません。

388:デフォルトの名無しさん
08/05/20 22:06:34
他言語経験は?

389:デフォルトの名無しさん
08/05/20 22:09:35
>>385
頭が弱いんじゃなくて、基本が理解できてない。
一体どんな教材でPython覚えたんだよ?

390:デフォルトの名無しさん
08/05/20 22:14:55
>>385
>>384の例は、代入によって「変数自体」を変更している
変数の変更とは、変数が持っていたオブジェクトへの参照を破棄し、
別のオブジェクトを指すようにする、ということだ

>>385の例は、破壊的メソッドによって、変数によって指されている
「オブジェクトの中身」を変更している。変数自体は何も書き換わっていない

391:デフォルトの名無しさん
08/05/20 22:25:40
>>388
初めてのC#を読みました。
作ったソフトウェアは2つほどでオブジェクト指向はある程度理解しているつもりです。

392:デフォルトの名無しさん
08/05/20 22:26:09
>>387
名著だ
URLリンク(www.amazon.co.jp)

393:デフォルトの名無しさん
08/05/20 22:26:37
>>392
ありがとうございます。

394:デフォルトの名無しさん
08/05/20 22:28:18
>>392
表紙でtypoが名著とはこれ如何に

395:デフォルトの名無しさん
08/05/20 22:31:19
ほんとだ噴いた

396:デフォルトの名無しさん
08/05/20 22:34:29
>>392
家宝にさせていただきます

397:デフォルトの名無しさん
08/05/20 22:45:04
>>391
プログラミング経験有りなら書籍ではないけれど
本家のチュートリアルの邦訳をまず読んでみれば
URLリンク(www.python.jp)


398:デフォルトの名無しさん
08/05/20 22:45:52
x = 23
はxのポインタの値が書き換わる。
x.append(3)
はポインタの先の値が書き換わる。


399:デフォルトの名無しさん
08/05/20 22:51:39
>>376>>384の挙動の違いがよくわからない

400:デフォルトの名無しさん
08/05/20 22:54:11
>>399
>>376もポインタが指しているオブジェクトの中身を書き換えているだけだ

xとaは別の変数だが同じオブジェクト(リスト)を指しているから、
x経由で変更したオブジェクトをaから参照しても
同じように見えるのは当たり前だ

401:デフォルトの名無しさん
08/05/20 23:02:28
>>400
>>384の場合はx=[1,2,3]で新たにリストのオブジェクトを生成して、
変数xはそれを指すから、結果的に変数aの指すオブジェクトの中身は
書き換えられなかったってことでいいのかな?

402:デフォルトの名無しさん
08/05/20 23:04:21
>>401
うん

403:デフォルトの名無しさん
08/05/20 23:15:12
なるほど、スッとした。さんくす。

404:デフォルトの名無しさん
08/05/20 23:29:50
やっぱりスッとしない。

405:デフォルトの名無しさん
08/05/21 00:02:10
>>392
Amazonって、ランキングが出るじゃん。見たんだけどさ。
 
 
 
この時期でこのランキングはないわ。
名著なのに売れないなんておかしいな。
芸術作品ですか。

406:デフォルトの名無しさん
08/05/21 00:12:37
>>70のリンクの人から見ると名著なんだよ

407:デフォルトの名無しさん
08/05/21 00:20:13
>>70のリンクの人のせいで売れないんじゃね?
まるで逆宣伝だし。

408:デフォルトの名無しさん
08/05/21 00:27:14
そもそも対象となる層が少なすぎる感じがする

409:デフォルトの名無しさん
08/05/21 00:28:39
日本人限定だしね

410:デフォルトの名無しさん
08/05/21 00:39:27
そのうえ変な人に気に入られてるようじゃ相当マイナスだね。

411:デフォルトの名無しさん
08/05/21 01:00:29
Jython使うとPOIも使えると思うのですが
CPythonからPOIを使えるようにはできませんか?

412:デフォルトの名無しさん
08/05/21 01:08:00
Java使え

413:デフォルトの名無しさん
08/05/21 01:10:44
替わりにwin32comかpyExceleratorを使うとか

414:デフォルトの名無しさん
08/05/21 02:00:14
win32comもpyExceleratorは使ったことがあるのですが
どっちもいまいちなのでPOIを使いたいんですけど
Javaは使いたくないんです

415:デフォルトの名無しさん
08/05/21 02:30:37
GroovyとJRubyやるからどっかいけ



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

あるいはPure PythonでPOIを書き直すとか

417:デフォルトの名無しさん
08/05/21 02:50:31
そうですね
そうします

418:デフォルトの名無しさん
08/05/21 03:46:21
死ねばいいよ

419:デフォルトの名無しさん
08/05/21 04:20:22
死ねって・・・
Pythonの信者の人が反社会的っていうのはほんとなんですね

420:デフォルトの名無しさん
08/05/21 08:00:56
Jython本を読むと心が洗われます

421:デフォルトの名無しさん
08/05/21 09:01:36
>>406
これはむしろ愛と呼べる代物だ。
温泉ではアッー!な光景が繰り広げられるに違いない。

422:デフォルトの名無しさん
08/05/21 11:30:56
>>421
結論から言うと、今回のRuby Kaigiのテーマは"愛"。
:
Ruby愛以外に何か付け加えるものがあるとするならば、あとは、覚悟。

423:デフォルトの名無しさん
08/05/21 11:44:02
イケメンハッカーはJRubyの本を出せばよかったんじゃね?

424:デフォルトの名無しさん
08/05/21 13:12:48
Pythonソースコード完全解説とかなら普通に読みたいな

425:デフォルトの名無しさん
08/05/21 13:14:46
自分でコードも読めない奴は、技術者としては失格だと思うがな。

426:デフォルトの名無しさん
08/05/21 14:17:31
neet山

427:デフォルトの名無しさん
08/05/21 14:32:01
RubyConsortium
Rubycon
不良品乱発

428:デフォルトの名無しさん
08/05/22 03:50:04
会社で作るソフトに組み込むスクリプトとしてぜひ Python を押したいんだけど、
「(スクリプトの)逆アセンブルがすげー簡単ぽいけど、どうなのよ」みたいなこと言われたんだ。
そういうわけで、会社を納得させるべく、「思いつきでちょっと解析したぐらいでは分からない程度」
に Python スクリプトの難読化について考えてみたい。

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



431:デフォルトの名無しさん
08/05/22 05:37:37
>>428
「解析されて何か問題でも?」と答えておけ。
本当に解析されて困るプログラムなんて、この世にそれほど存在しないだろ。

432:デフォルトの名無しさん
08/05/22 11:39:00
GPL

433:デフォルトの名無しさん
08/05/22 11:49:46
JavaだってC#(IL)だって逆コンパイラは存在してるし
難読化とかもあるけど、最終的には>>431のような気がする

434:デフォルトの名無しさん
08/05/22 12:15:57
事情をよく知らない割には権限だけ持っていて、
変化を嫌いたがるダメ官吏みたいな上司を説得するのが一番大変なんだよね~。

435:デフォルトの名無しさん
08/05/22 12:16:05
pyc や pyo はバイナリエディタで開いただけでも識別子名と関数名がまるわかりだからねえ
簡単な難読化ぐらいならやる価値あると思う

436:デフォルトの名無しさん
08/05/22 13:34:43
難読化とかwww馬鹿だろwww
死ねばいいのに

437:デフォルトの名無しさん
08/05/22 16:17:07
簡単な難読化をしてみせるだけで>428の仕事が楽になるならいいじゃないか。
それ自体に意味があるかどうかはどうでもいいのだ。


438:デフォルトの名無しさん
08/05/22 16:19:55
マってたまに、子供騙しで騙してしまえばいい相手の要求に対して、
妙に本気になって対処してしまうことがあるよね。自戒も含めてw

439:デフォルトの名無しさん
08/05/22 16:46:15
全て eval を使って文として
他のプログラムに仕込むとか

440:デフォルトの名無しさん
08/05/22 18:07:12
子供騙しで手を抜く奴はプログラマだ!
バレないように手を抜く奴は訓練されたプログラマだ!

こうですか? わかりません (>_<)


441:デフォルトの名無しさん
08/05/22 19:29:23
>>434
そういうときはその上司の上司を説得するべき

442:デフォルトの名無しさん
08/05/22 21:44:24
適当にxorして「暗号化しました!」
とか言っとけば大丈夫

443:デフォルトの名無しさん
08/05/22 22:47:10
ソースコード自身とxorしたから大丈夫です!

444:デフォルトの名無しさん
08/05/23 01:11:01
>>443
0x00とXORしないとダメだよ!!

445:デフォルトの名無しさん
08/05/23 02:15:01
ネタならネタで良いんですが
もう少し楽しめるのをおながいします

446:デフォルトの名無しさん
08/05/23 02:44:30
pygameで英語分からなくて暴れてる厨房だろ
放っとけよ

447:デフォルトの名無しさん
08/05/23 08:11:47
pygameの和訳さっさと進めろよハゲども

448:デフォルトの名無しさん
08/05/23 08:45:46
自己解決しました。

449:デフォルトの名無しさん
08/05/23 09:17:04
やめてください

450:デフォルトの名無しさん
08/05/23 10:14:11
イケメンハッカーが自決しました。

451:デフォルトの名無しさん
08/05/23 10:33:08
やめてください。

452:デフォルトの名無しさん
08/05/23 10:33:59
自己解決禁止

453:デフォルトの名無しさん
08/05/23 10:34:36
>>441
お花畑にお住まいの妖精さんですか?
現実は厳しいですよ。

454:デフォルトの名無しさん
08/05/23 10:35:08
neet山が自己休刊やめてください。

455:360
08/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:デフォルトの名無しさん
08/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ありそうな気もするけど)




457:360
08/05/23 11:30:33
>>456


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:デフォルトの名無しさん
08/05/23 12:07:53
自己解決禁止しちゃいかんだろww

459:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/23 17:41:49
>>459
なんでバグだらけの旧バージョン使ってるんだ?

462:デフォルトの名無しさん
08/05/23 19:29:52
うるさいだまれ

463:デフォルトの名無しさん
08/05/23 19:36:57
自己憤慨しました。

464:デフォルトの名無しさん
08/05/23 21:15:47
自己発電しました。

465:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/23 22:43:40
スレリンク(tech板:385番)

467:デフォルトの名無しさん
08/05/23 23:13:26
マルチしちゃったか
死ね

468:デフォルトの名無しさん
08/05/23 23:38:32
ちょっと教えて欲しいんだけど、pythonの正規表現で先読みって使えないの?
下みたいに書いても全然文字列を分割してくれないんだけど

line = '123,456,79'
regexp = re.compile('(?=5)')
print regexp.split(line)

469:デフォルトの名無しさん
08/05/23 23:56:48
>>468
URLリンク(www.python.jp)
> (?=...) 
> もし ...が次に続くものとマッチすればマッチしますが、文字列をまったく消費しません。
> これは先読みアサーション(lookahead assertion)と呼ばれます。
> 例えば、Isaac (?=Asimov) は、'Isaac 'に 'Asimov'が続く場合だけ、'Isaac 'とマッチします。 

'(?=5)' だと空文字列に 5 が続くなら空文字列にマッチ(ただし 5 は消費しない)という意味になるのかな?
空文字列にマッチしたら分割の目的には使えないような・・・。

>>> a = re.compile(",(?=4)")
>>> a.split("123,456,789")
['123', '456,789']

470:デフォルトの名無しさん
08/05/23 23:57:19
>>468
先読みが使えないっていうより
re.split() に長さ 0 のパターンを渡しても何もしてくれないとかじゃない?
他の言語とかは挙動が違った気がする

471:デフォルトの名無しさん
08/05/23 23:57:58
>>468
ライブラリリファレンスを見れば分かるけど、先読みは使えるよ。

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

ただの想像だけど。

472:471
08/05/23 23:58:39
ぐは。レスかぶりまくりじゃん。

473:デフォルトの名無しさん
08/05/24 00:15:30
先読みの使い方を間違えてる

474:デフォルトの名無しさん
08/05/24 00:38:16
お前は次に「自己解決しました」と言う。

475:デフォルトの名無しさん
08/05/24 00:46:50
自己解決しました

476:468
08/05/24 01:09:50
レスサンクス
やっぱり場所指定の正規表現じゃ分割しないみたいだね
perlとrubyでもsplit関数を動かしてみたんだけど、
perlはpythonと同様で場所指定の正規表現じゃ分割してくれなかったよ
一方rubyは意図したとおりに場所指定で分割できた
言語毎に結構挙動が違うもんなんだね




477:デフォルトの名無しさん
08/05/24 01:31:05
>>472
ぐは禁止。きもい。

478:デフォルトの名無しさん
08/05/24 01:32:10
ruby最強!

479:デフォルトの名無しさん
08/05/24 01:33:37
regexp = re.compile('.(?=5)')

480:デフォルトの名無しさん
08/05/24 01:50:44
>479
それだと一文字消えちゃうだろう常識で考えて

481:デフォルトの名無しさん
08/05/24 03:40:04
pyunoでOpenOfficeの制御したかったのだけど
ubuntu7.10で動かないみたい
URLリンク(udk.openoffice.org)
Hellow Worldのサンプル動かすと
line 5, in <module>
localContext = uno.getComponentContext()
AttributeError: 'module' object has no attribute 'getComponentContext'


482:デフォルトの名無しさん
08/05/24 03:49:34
>>468

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

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



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

そもそもこうなるんだもんなぁ


484:デフォルトの名無しさん
08/05/24 08:28:25
>>477
ぐはははははははははははhahahahahahahahaha!!!!!

485:デフォルトの名無しさん
08/05/24 10:14:48
ぐは。自己解決しました。

486:デフォルトの名無しさん
08/05/24 12:39:52
>482
perlでもsplitできるね

pythonで位置指定の分割ってどうやんだろ

487:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/24 13:14:27
リスト返すようにしちゃったけど、ジェネレータにすべきだったか
ま、その辺は好きに汁

489:デフォルトの名無しさん
08/05/24 14:06:35
>487
re.findall()

490:デフォルトの名無しさん
08/05/24 14:18:04
re.findall()がどうしたの?

491:デフォルトの名無しさん
08/05/24 15:33:29
Perl で split('', $str); に相当するのは
Python ではどう書けばよいですか?

492:デフォルトの名無しさん
08/05/24 15:37:47
>>491
list(str)

493:デフォルトの名無しさん
08/05/24 19:16:39
オブジェクトのメソッドを一覧で取得するにはどうすればええの?


494:デフォルトの名無しさん
08/05/24 19:24:33
filter(callable, dir(hoge))

495:デフォルトの名無しさん
08/05/24 19:25:54
[x for x in dir(obj) if callable(getattr(obj, x))]

496:デフォルトの名無しさん
08/05/24 21:30:26
>>494
動きません。
自己確認してください。

497:デフォルトの名無しさん
08/05/24 22:48:52
自己完結しました

498:デフォルトの名無しさん
08/05/24 22:51:21
>>494
オッサン臭いコードだな。その上動かないってどんだけ(www

499:デフォルトの名無しさん
08/05/24 22:58:55
itertools は使えそうで使えない

500:デフォルトの名無しさん
08/05/24 23:03:49
>>498
まさに労害(WWW

501:デフォルトの名無しさん
08/05/24 23:17:21
おれさまがなおしてやった
filter(lambda x : callable(getattr(obj, x)), dir(obj))

502:デフォルトの名無しさん
08/05/24 23:28:11
ここまで来ると、わざわざfilterを使う意味なくね?

503:デフォルトの名無しさん
08/05/25 00:07:56
pythonのlambdaって読みづらいだけじゃね?
pythonの基本的な文法と比べると汚い

504:デフォルトの名無しさん
08/05/25 00:14:14
Guidoもlambdaは嫌いだったと思う。
lambdaを使うのは変態か、自称イケメンハッカーのワンライナー芸人だけだろ。

505:デフォルトの名無しさん
08/05/25 01:19:41
どうせ残すなら
いろいろできるようにすればいいのに

506:デフォルトの名無しさん
08/05/25 01:32:31
cshといっしょでコード互換のために残してるだけなんだから
もう新規につかうようなもんじゃないだろ。

507:デフォルトの名無しさん
08/05/25 02:44:32
Pythonプログラミング入門はクソだとよ。

508:デフォルトの名無しさん
08/05/25 03:45:36
自分の言葉で語りなさい

509:デフォルトの名無しさん
08/05/25 05:36:58
ということにしたいのですね

510:デフォルトの名無しさん
08/05/25 09:50:46
懐かしいフレーズだ

511:デフォルトの名無しさん
08/05/25 10:51:46
皆さん lambda と聞くと昔の傷がうずくのですね

512:デフォルトの名無しさん
08/05/25 10:52:28
Twisted本、クソ本フラグがたった感が。

513:デフォルトの名無しさん
08/05/25 11:37:37
うはは、わかりません。

514:デフォルトの名無しさん
08/05/25 12:29:07
関数をファーストオブジェクトとして扱えないのはしょうがないが
だからってpython の lambda はちょっと無しだろ
C++みたいに演算子()をオーバーロードできればいいのに

515:デフォルトの名無しさん
08/05/25 12:33:36
>>514
関数内で関数が定義できるんだから、lambdaはあれで良い。
演算子オーバーロードも、__call__でできるじゃないか。

516:デフォルトの名無しさん
08/05/25 12:40:01
うはは、わかりません。

517:デフォルトの名無しさん
08/05/25 13:11:22
>>514
Pythonの関数はファーストクラスオブジェクトだが

518:デフォルトの名無しさん
08/05/25 13:23:23
ファーストオブジェクトってどういう意味?

519:デフォルトの名無しさん
08/05/25 13:32:38
URLリンク(ja.wikipedia.org)
>>514は、匿名リテラルで宣言できる関数が制限されていると言いたいんだと思う。
でも、def foo() して、 bar = foo; del foo; したら、foo()できなくなる。Pythonのdefは関数定義と
変数への代入を同時にしているというだけなので、関数がファーストクラスオブジェクトと言っても良い。

520:デフォルトの名無しさん
08/05/25 14:00:35
>>519
ありがとう。ファーストクラスオブジェクトでググればよかったのか。

俺もPythonのlambdaは気持ち悪いと思う。
あと、exceptで例外が複数のときだけ括弧つけるのも気持ち悪い。

521:デフォルトの名無しさん
08/05/25 14:11:16
(UNIX環境の)Pythonってソースプログラム実行中にソースの書き換えってできるの?
インタプリタだから、できそうなイメージなんだけど

522:デフォルトの名無しさん
08/05/25 14:13:28
pythonって関数内で関数作って関数を返す関数作れたっけ?


523:デフォルトの名無しさん
08/05/25 14:26:28
tupleが (a,) ってなるのがきもい





524:デフォルトの名無しさん
08/05/25 14:50:03
python の快活環境どれがおすすめですか?

525:デフォルトの名無しさん
08/05/25 15:54:31
>>522
いろんなデコレータのソース読んでみたら?そういうのばっかりだから。
Pythonのデコレータは、関数を引数にして関数を返す関数。
@foo(a,b)
def bar():
の場合、fooは、"関数を引数にして関数を返す関数"を作成して返す関数になる。

526:デフォルトの名無しさん
08/05/25 15:58:09
間違えた
快活環境じゃなくて開発環境

527:デフォルトの名無しさん
08/05/25 16:27:51
>>522
名前なしでそれができない、ってだけ。

あと定義された時の環境に対して書き換えが効かない。

528:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/25 17:56:17
御臨終です

530:デフォルトの名無しさん
08/05/25 17:59:29
org が orz の相似に見えた

531:デフォルトの名無しさん
08/05/25 19:11:41
そういやIronPythonのスレはあるのにJPythonのスレはないんですね

532:デフォルトの名無しさん
08/05/25 20:08:15
Jythonのスレならあるでしょ。
専用じゃないけど

533:デフォルトの名無しさん
08/05/25 20:17:07
>>523
これならきもくない?
tup = (
a,
)

534:デフォルトの名無しさん
08/05/25 20:48:17
>>525,527

ありがとう
やってみたら出来たよ
これで使いやすいschemeの代わりが出来た


535:デフォルトの名無しさん
08/05/25 21:57:03
そんな見た目だけの問題じゃないよ! >533

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

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

キモイヨー


536:デフォルトの名無しさん
08/05/25 22:22:42
>>535
男なら、空のタプルを作りたいときがあるってもんだ。

537:デフォルトの名無しさん
08/05/26 00:00:59
python for S60のスレはないよなぁ

538:デフォルトの名無しさん
08/05/27 00:06:35
パックリ(i)

キモイヨー

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

スライスみたいにコピーするんじゃなくて参照を握っていて、
更新も出来るやつ
自分で作るしかない?

540:デフォルトの名無しさん
08/05/27 00:44:42
うはは、キモイヨー。

541:デフォルトの名無しさん
08/05/27 00:49:16
>>537
需要があるのか?

542:デフォルトの名無しさん
08/05/27 01:48:06
>>539
ありますよ

543:デフォルトの名無しさん
08/05/27 09:27:23
>539

10行ぐらいで書けそうだから、必要な人は手元で書いちゃうんでは。


544:デフォルトの名無しさん
08/05/27 09:57:14
ちょちょっっと書いてみていただけませんか?

545:デフォルトの名無しさん
08/05/27 11:27:27
>>544
書きました。
見せないけど。

546:デフォルトの名無しさん
08/05/27 16:41:49
さては11行になったな?

547:デフォルトの名無しさん
08/05/27 17:55:58
>>539
arrayじゃ駄目なの?

548:539
08/05/27 18:28:38
レスくれた人どうもです

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

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

>>547 arrayは全く用途が違うのではないでしょうか
シークエンスの部分列を「参照」するだけならただのスライスで良いし
itertools.islice()ならコピーを避けられますが、
元のシークエンスを「更新」もしたいわけです

549:デフォルトの名無しさん
08/05/27 18:51:41
pygameの和訳完成してもいいころなんじゃねーの

550:デフォルトの名無しさん
08/05/27 19:40:47
547は配列を作りたいのかと勘違いした。
ようするに、ポインタに相当するものを作りたいのか。

551:デフォルトの名無しさん
08/05/27 19:53:15
うはは、すみません

552:デフォルトの名無しさん
08/05/27 20:10:20
>>548
要するにスライスをスライスして新しいスライスを作れればいい(そこを自前で実装するのは面倒)ということだな。
スライスをスライスしてスライスを作るというのはありがちな気がするので既にありそうだが。俺は残念ながら知らん。
自前で実装するのは確かに面倒そうだ。

553:デフォルトの名無しさん
08/05/27 22:02:45
>>539
URLリンク(www.rh.to)

こんなのとか? リンク先の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:デフォルトの名無しさん
08/05/27 22:15:15
numarray

555:デフォルトの名無しさん
08/05/27 22:36:17
URLリンク(coding.derkeiler.com)

これとかヒントになるかも
一部を掬って変化を加えたら、全体が書き換わる…

556:539
08/05/27 22:52:01
ありがとうございます
NumPyですか
数値計算が目的という訳ではなかったので完全に盲点でしたが、使えそうですね

ちょっと試してみます

557:デフォルトの名無しさん
08/05/28 09:09:02
これからはRuby一色の時代。
PerlもPythonも廃れ、Rubyだけが生き残る新時代

558:デフォルトの名無しさん
08/05/28 09:42:45
その「新時代」になってから勉強しても全然遅くない。

559:デフォルトの名無しさん
08/05/28 12:02:30
for e in dir():
  print e

とかで出力されるデータをA-Z, a-z, __??__で
頭文字ごとに改行して出力するにはどうしたら良いですか?

560:559
08/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:デフォルトの名無しさん
08/05/28 14:35:40
>>> a2z="abcdefghijklmnopqrstuvwxyz"

>>> a2z=range(ord('a'), ord('z')+1)

562:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/28 14:37:50
インデント消えちゃったけど、まぁ分かるよね?w

565:デフォルトの名無しさん
08/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])

566:563
08/05/28 15:07:07
Python始めて1週間の俺には", ".join(g) の部分がよく分からなかったが、
gのシーケンスを", "で区切った文字列が得られるのか。

567:デフォルトの名無しさん
08/05/28 15:18:09
むしろ g は glue の g かもしれないぜ

568:デフォルトの名無しさん
08/05/28 17:07:40
>>563
for e in dir():
 1. if 違う要素かどうか判定: 改行\n + フラグを更新する
 2. 要素を出力する

㌧。ノートにでもまとめて整理しとく乙

569:デフォルトの名無しさん
08/05/28 17:19:04
>>566
個人的には
リスト.join(区切り文字)
の方がわかりやすいと思ってる。

570:デフォルトの名無しさん
08/05/28 17:27:24
1. FAQ嫁
2. Ruby使え
3. 俺もそう思う

571:デフォルトの名無しさん
08/05/28 17:43:04
引数にジェネレータを与えられるのはstr.joinの一つの利点だと思う

572:563
08/05/28 17:51:18
>>569
俺も文脈的に直感的でないと思うけど、文字列クラスにjoinメソッドがあるという
形だからしょうがないね。
静的関数として提供した方がいい気がするが、元々静的関数だったのが廃止されて
メソッドになったのね。

573:デフォルトの名無しさん
08/05/28 19:13:53
djangoを使ってみようと思っています。

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

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

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

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

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

何かアドバイスがいただければ助かります。よろしくお願いします。

574:デフォルトの名無しさん
08/05/28 20:13:19
うちではみれてる

575:デフォルトの名無しさん
08/05/28 23:51:30
ディショナリをそのキー名の変数にするってどうすればいいんですか?
つまり
a{hoge:1,foo:2,bar:3}
を↓のようにしたいです。
hoge = 1
foo = 2
bar = 3

576:デフォルトの名無しさん
08/05/28 23:56:27
>>575
入門書嫁。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch