1 名前:デフォルトの名無しさん mailto:sage [2009/07/01(水) 22:23:19 ] Pythonオフィシャルサイト www.python.org/ 日本Pythonユーザ会 www.python.jp/Zope/ まとめWiki python.rdy.jp/ 関連スレ find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python 前スレ pc12.2ch.net/test/read.cgi/tech/1240678081/
209 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:32:17 ] >>208 それは >>206 とはちょっと違う話で、少しでも複雑な関数を作るときは ちゃんと名前を付けましょうねという意味で、lambda が単文しか実行 できなくなってる。 map + lambda が推奨されないのは、 1) 単純に map(lambda x: と書くタイプ数 が for x に削減される 2) map はリストが不要なときも一時リストを生成してしまう。 (>>206 ではリストが必要だったけど、必要ないときはジェネレータ内包が使える) 3) map 内で繰り返し関数呼び出しが発生する。内包だと式の評価なので lambda より速い 4) Lisp脳ではない人間にとっては、 map(lambda x: を読むときに頭の中で分解再構築が必要になる。 内包表記の方がやりたいことをすっきりと書き下せる。
210 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:37:19 ] とりあえずIDLEでimport thisしようぜ
211 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 10:41:13 ] >>209 頭大丈夫? 自分が何を主張するために何を持ち出しているのか読み直した方がいいよ。
212 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:21:42 ] >>211 オレは>209の入ってる事がよく分かったが、何か問題でもあるのか?
213 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 11:44:48 ] >>209 1)については、そもそもlambdaとか6文字も必要なsyntaxにしたのが間違いだったんだと思う Haskellみたいに記号使っとけば…… 2)はpython3000ではmapもイテレータ作るし まぁ内包のほうが速いし、そっち使ったほうがいいんだけど
214 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 13:18:29 ] -> だったっけ
215 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 14:19:08 ] >>213 Pythonにとって、lambdaは便利で強力だけど一つの文が複雑になるし遅いので あまり推奨できないから、記号を導入してまでみんなに使ってもらおうとは 思ってないんだろう。
216 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 15:22:31 ] Pythonの場合、lambdaとインデントの相性が悪いのもあるんじゃない? でも、他の言語使ってても複雑な式ならどのみち関数定義するから、 そのために何かして欲しいとは思わないけど。
217 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 15:50:27 ] f = λ x:a*x+b これでいくか。
218 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 16:12:54 ] Perl my $f = sub { $_[0]+1 } $f->(42) Ruby1.8 f = lambda { |x| x+1 } f[42] f.call 42 Ruby1.9 f = ->(x) { x+1 } f[42] f.call 42 Python f = lambda x: x+1 f(42) Haskell f = \x -> x+1 f 42
219 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 16:27:54 ] どれも、これだ!ってのがないな。
220 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 16:45:23 ] というかλ記法って^が変化してλになったんだから ^記号をつかえばいいやんとか思う ビット演算とまぎらわしいなら$で
221 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 16:46:13 ] Python def f(x): return x+1 f(42)
222 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 16:47:28 ] $があるとperlみたいで汚いから嫌だ
223 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 18:47:47 ] >>192 いくのかなあ、って変わってないんだからそうに決まってるでしょ。 docs.python.org/3.1/library/logging.html#formatter-objects
224 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:24:26 ] 逆に>>221 でなにが不都合があるんだろ。 名前を考えないといけないから思考が停止しちゃうとか?
225 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 19:37:45 ] >>224 内包表記のときはやっぱりラムダがあった方がいい。 名前も、じゃあ全てのfor文に名前を付けるか?みたいな話だと思われ。 それくらい気楽な関数。
226 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 20:31:36 ] 俺が恵まれていないだけかも知れんが、俺の周りで 関数名つけるの面倒くさいっていうやつは、98%の確率で ろくなプログラマではない だいたい、面倒って言ったって、xxx2yyy くらいを考えれば十分だし、 一言で表せないような関数を渡すのは構造的に失敗してると思うし
227 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 20:38:30 ] >>226 どっちかというと、かぶらないか失敗っていう心配だな。 Pythonならあんまり気にしなくてもいいんだけどw
228 名前:デフォルトの名無しさん [2009/07/26(日) 22:30:21 ] Python3に対応したpygame出てないのかよ Python使いからの不満も多いみたいだし、こんなので3は普及するのかねぇ
229 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 22:33:35 ] pgreloaded はまだ開発中か
230 名前:デフォルトの名無しさん mailto:sage [2009/07/26(日) 23:45:40 ] >>225 > 内包表記のときはやっぱりラムダがあった方がいい。 ラムダが内包表記で便利な経験が無いんだけど、 ラムダ+内包表記のcoolな例あったら挙げてみて。
231 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 02:30:48 ] 可読性と内包表記、 やっぱり、[fnc(x) for x in a if check(x)==0] のようにして、[ ]内はごちゃごちゃしないようにしたほうがイイすよね?
232 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 08:38:42 ] www.djangoproject.jp まだ落ちてるよ 日本人でDjangoをやっているひとたちは サイトが長時間落ちてもオッケー的な感覚の持ち主なんだろうな
233 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 12:54:32 ] 東京で停電があったとき以来 復活してないサーバと比べりゃ(ry
234 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 13:16:15 ] >>231 読む人が「えーとこれは」と考え込まずに済むように書きたい。 したがってその位に留める(長くなるなら外に出す)という習慣は 良いことだと思われます。
235 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 13:33:44 ] def abc(): hoge=fuga hage=moge def func(x): return x+1 vwx=[fnc(x) for x in a if check(x)==0] return xyz
236 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 14:24:49 ] >>235 さすがにそれは内包表記の中で直接 x + 1 した方が良いだろ。
237 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 14:58:17 ] 「長くなるなら」外に出す、なのに「x+1なのに外に出す」って何だよw
238 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 15:31:23 ] Pythonで無料レンタル鯖のいいとこ&有名なとこあります?
239 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 15:40:56 ] ドジャンゴが使っているところはやめたほうが良さそうだな。
240 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 16:20:11 ] レンタル鯖だと、Pythonはいまだに2.3や2.4ばかりで悲しい。
241 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 16:21:44 ] >>238 国内無料鯖は2.4どころか2.3、Python自体ないとかあってかなりの不遇で、自信を持っておすすめできるものはない。色々探してみるといい ただSSHなどシェルアクセスできれば自力で導入できるとこもある(xreaとか。まあSSH使える無料鯖はほとんどないが…) 低価格鯖なら最近2.6が導入されたさくらがおすすめかな。
242 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 16:50:15 ] どうせ他にもいろいろしたくなるから、 まるまる仮想OS使えるところでいいんじゃないの。
243 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 17:14:51 ] 月3000円も出せばVPS借りられるんだからそのくらい出せよ それも出せないなら自宅鯖でも作れ いやならPHPでも使ってろ
244 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 19:41:54 ] 釣りか? 70 名前: デフォルトの名無しさん Mail: sage 投稿日: 2009/07/27(月) 15:02:19 PHPで無料レンタル鯖のいいとこ&有名なとこあります?
245 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:38:51 ] Pythonスレの方がレスが多くて みんなやさしくて好きです
246 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:42:32 ] >>238 つpc12.2ch.net/test/read.cgi/tech/1243160751/4-10
247 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:43:01 ] 表向きは永久凍土な連中ということで通ってるんだから そういうこと言っちゃいけません
248 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:47:20 ] >>238 Google App Engine 2アプ目 pc11.2ch.net/test/read.cgi/php/1243654802/
249 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:51:55 ] GAE はないわなぁw
250 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:37:18 ] @pagesとか言うところが2.5.1みたいだ
251 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:42:47 ] 実際に sys.version 出力させてみたら 2.5.2 だったよ。
252 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 07:48:58 ] 関数の中から実引数の数を調べることはできますか。 def f(a, b=1, c=None): print (a, b, c) とあって、f(0) という呼び出し方をした時に、f() の中で実引数の数がいくつなのかを調べる方法があれば教えてください。
253 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 08:07:59 ] バイトコード調べれば何とか… じゃなくて def f(*args): defaults = (None, 1, None, ) len(args) で調べる args = tuple(args) + defaults[len(args):] とかした方がいい
254 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 08:59:52 ] >>252 www.python.jp/doc/2.4/lib/inspect-classes-functions.html 標準モジュールも知らない低レベルプログラマは 今すぐPythonやめてPHPに戻れよ
255 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 09:04:44 ] found = None for x in L: if something(x) == expected: found = x break という処理をもっと簡潔にかけますか。 Ruby なら found = L.find {|x| something(x) == expected } という処理です。 内包表記で頑張ろうと思ったのですがbreakの仕方がわからず断念しました。 #Rubyは説明のために出したのであり、PythonとRubyとの比較をするつもりではないのでご了承下さい。
256 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 09:54:57 ] [i for i in xrange(10) if i >= 7][0]
257 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 10:15:34 ] >256 だといったん完全リストにしちゃうから 元が xrange(一億) とかだった場合にすげー重くならない? イテレータ使ってても,リスト内包表記で一旦 リスト化しちゃうと遅延評価はされなくなっちゃうよね?
258 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 11:37:56 ] >>239 なんで? おすすめは zope web.py なの?
259 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:00:59 ] (i for i in xrange(10) if i >= 7).next()
260 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:12:43 ] >>259 スゲー 面白い書き方だなw
261 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 12:54:59 ] >>254 牛乳飲めよ
262 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:12:03 ] >>261 PHPに戻れよドカタ
263 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 13:18:20 ] >>258 Django自体は問題ナッシング むしろすばらしい 問題は日本のヤツら
264 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 14:54:13 ] Djangoの中に遅延評価関数とか入ってるからwebやらなくても使ってみたい気はする
265 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 15:14:13 ] Formがもうちょっとイカしてくれてればなぁ っていうか web 板の django スレが寂しすぎる件
266 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 18:01:09 ] Djangoのutilsには,便利なクラスや関数がたくさんあるので utilsだけで使うことが良くあるよ
267 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:28:19 ] >>259 ありがとうございます! でもPython3で動かない。。。。 Python2と3の両方で動く書き方はありませんか? 聞いてばかりですみません。
268 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 22:47:03 ] >>267 python3の場合 (x for x in range(10) if x>=7).__next__()
269 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 23:10:51 ] >>268 next(x for x in range(10) if x>=7) だろ
270 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 23:18:40 ] ごめん
271 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 01:56:49 ] Don't mind.
272 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:29:23 ] >>255 found変数をどう使いたいのか判らないけど、Pythonのfor文には else 節があるので、後で if found is None: return とかするのであれば その for 文を for found in L: if something(found) == expected: break; else: return みたいにはできるよ。 あと、 >>269 みたいなやり方をするなら、 found = next(x for x in L if somethong(x) == expected, None) って二つ目に default を入れないと、見つからなかったときに next が StopIteration 例外を出すよ。
273 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 06:34:35 ] sunkus
274 名前:デフォルトの名無しさん [2009/07/29(水) 09:54:00 ] >>252 f() の中で実引数の数がいくつなのかを調べる方法があれば教えてください。 無理。デフォルト引数処理は関数呼び出しの直前に行われるから、f(..) の中ではデフォルト引数値が使われたか否かは判別できない。253 さんの示したように、関数の呼び出し方を変えて自分で調べるしかない。 ここらの Python の内部処理を知りたかったら www.nasuinfo.or.jp/FreeSpace/kenji/sf/python/virtualMachine/PyVM.htm を読め。少しマニアックだが。
275 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 11:49:53 ] class foo: def __init__(self): self.bar = range(5) def __call__(self): self.bar.reverse() class hoge: def __init__(self): self.hage = foo() self.foobar = self.hage.bar self.hage() cls = hoge() print cls.foobar == cls.hage.bar .foobarには、.hage.barの値をコピーしているだけですか? それともポインタ的なものが入ってるんでしょうか?
276 名前:デフォルトの名無しさん mailto:sage [2009/07/29(水) 12:10:48 ] barの型次第 上の場合はリストだから参照になるね
277 名前:252 mailto:sage [2009/07/30(木) 07:00:23 ] >>254 >標準モジュールも知らない低レベルプログラマは >今すぐPythonやめてPHPに戻れよ みなさんの怒りを買うような質問をしてしまい、申し訳ありませでした。
278 名前:252の母 mailto:sage [2009/07/30(木) 10:17:41 ] 息子がご迷惑をおかけして申し訳ありませんでした。
279 名前:252の父 mailto:sage [2009/07/30(木) 11:06:55 ] 息子にはPythonをあきらめてPHPに戻るようによく言い聞かせました
280 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 13:21:43 ] いやいや、誰もが最初はそんなもんですから。
281 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 13:35:18 ] 話がまとまったところで、あとは若い人たちに任せるとしましょう。
282 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 15:24:22 ] おまえら表面は凍ってるのに中身は生暖かいのな。
283 名前:デフォルトの名無しさん mailto:sage [2009/07/30(木) 23:55:49 ] 今からpython勉強するなら、2.6.2と3.01どっちがおすすめ?
284 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 00:15:39 ] 仕事で必要なら、必要な方なのは置いといて。 私は、stringが完全Unicodeになってる3をすすめます。
285 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 00:50:07 ] 初めてPYTHONをやり、最初、2.4入れて setが使えないので、1ヶ月で2.5に移行 その後、文字化けが面倒なので2ヶ月で3に移行 最初から3にすれば良かった てかemacsで文字化けする しかもWindowsのエラーで、プロンプトからemacs起動出来ないから直し方わかんね 結局UTF-8使ってない
286 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 00:58:21 ] なるほど、こういう人たちがいるがために今の状況があるわけか
287 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 01:07:20 ] ライブラリが全然ついて来ないから 未だに 2.x だけどな。
288 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 01:13:02 ] 3.1は失敗作だったねえ。Python5.0に期待。 対するRubyは1.9.2でだいぶ動作がマシになった。 完全に抜かれちゃったなあ
289 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 06:29:42 ] pass
290 名前:283 mailto:sage [2009/07/31(金) 07:11:16 ] ありがとうございました 参考にします
291 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 11:55:24 ] >>283 用途次第だけど2.5がライブラリ豊富で一番良いよ
292 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:43:59 ] 2.6 でなく 2.5 を勧める理由が意味不明
293 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 12:45:54 ] 2.5 でなく 2.6 を勧める理由が意味不明
294 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 13:42:38 ] ダンジョーも動かない2.6を勧める理由が意味不明
295 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 14:29:15 ] 2.5.2で間違いない
296 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 17:29:14 ] >>294 サーバが止まりまくりのDjangoなんて使えたって意味ないだろ
297 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 18:04:01 ] ジャンゴが止まりまくるってどんな環境よ
298 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 18:23:07 ] デベロップ用のサーバで公開したのかなw
299 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:28:32 ] ttp://djangoproject.jp/ どうして止まるんだろう...。
300 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:34:20 ] >>299 デベロップ用のサーバで公開したのかなw
301 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 22:46:12 ] マルチコアのCPUで並列実行させたいんですが、 Pythonのthreadやthreadingモジュールだと 実際には同時平行で複数のスレッドが実行されないって本当ですか? 並列化するのにお勧めのモジュールってありませんか?
302 名前:デフォルトの名無しさん mailto:sage [2009/07/31(金) 23:03:13 ] >>301 ja.wikipedia.org/wiki/%E3%82%B0%E3%83%AD%E3%83%BC%E3%83%90%E3%83%AB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%97%E3%83%AA%E3%82%BF%E3%83%AD%E3%83%83%E3%82%AF docs.python.org/library/multiprocessing.html
303 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 01:35:18 ] >>302 すみません、わかりません。答えを教えてください。
304 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 02:47:30 ] >>303 ja.wikipedia.org/wiki/CPython#.E4.B8.A6.E5.88.97.E6.80.A7.E3.81.AB.E9.96.A2.E3.81.99.E3.82.8B.E5.95.8F.E9.A1.8C
305 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 06:49:35 ] GILが問題になるようなプログラムにPythonは向いてないよ
306 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 07:33:59 ] >>301 multiprocessing モジュールがお勧め。並列性のある問題を解くのに使えば 複数プロセスが同時に並列実行されてちゃんと台数効果が出ます。
307 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 07:42:54 ] >>299 まだ止まってんのかwwwwww
308 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 09:01:10 ] 僕たちサーバ管理よりイベントが大好きなんです アッーー!
309 名前:デフォルトの名無しさん mailto:sage [2009/08/01(土) 10:37:07 ] >>302 >>306 ありがとうございます。 GILがあって今一つ並列実行しにくいのでプロセスをフォークするんですね。 スレッドのタスクが重ければフォークのコストは大したことないですが、 リソースの共有が大変になるんでしょうか。 Core i7で8コアもあるのでそろそろ並列化をまじめに考えなくちゃと思っているので、とりあえずいじってみます。 それから>>303 は私じゃないです。