1 名前:デフォルトの名無しさん [2008/04/11(金) 10:55:10 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 Python 使いが優しくコメントを返しますが、 お礼は Python の布教と初心者の救済をお願いします。
652 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 02:51:21 ] C:\>python -m CGIHTTPServer Serving HTTP on 0.0.0.0 port 8000 ... ***-PC - - [23/Jun/2008 02:46:34] "GET / HTTP/1.1" 200 - ***-PC - - [23/Jun/2008 02:46:41] code 403, message CGI script is not a plain file ('/cgi-bin/') ***-PC - - [23/Jun/2008 02:46:41] "GET /cgi-bin/ HTTP/1.1" 403 - 2. cd c:\ して python -m CGIHTTPServer する 3. ブラウザで localhost:8000/cgi-bin/env.py にアクセス 環境変数がずらっと表示されたら成功 コマンドプロンプトの起動パスを変更して立ち上げてみたところ 403 not found...とかなって何も表示されませんでした… orz
653 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 03:38:17 ] >>652 ログを見る限り、 localhost:8000/cgi-bin/ にアクセスしたことになってるが?
654 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 08:27:50 ] おぉ、こんな機能があるのか。恐ろしく便利だな。 でもこれ、CGIが実行されたときのカレントディレクトリが、 pythonを起動したときのディレクトリのままだね。 カレントディレクトリを変更してから呼んで欲しいな。
655 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 11:34:10 ] >>653 localhost:8000/cgi-bin/env.py を直接叩いたら うまくいきました >< >>651 でディレクトリ一覧が表示されていたのでそのノリで そこから辿ってゆけるかなとか思ったのが敗因でした...orz 2. cd c:\ して python -m CGIHTTPServer 3. localhost:8000/cgi-bin/env.py に直接アクセスする *拡張子は.pyでないと駄目。 *localhost:8000/cgi-bin/ にアクセスしても plain file ではないと言われ、403 error。
656 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 20:25:01 ] > *拡張子は.pyでないと駄目。 > *localhost:8000/cgi-bin/ にアクセスしても plain file ではないと言われ、403 error。 微笑ましいなw
657 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 04:35:18 ] >>650 墓場についてkwsk
658 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 09:46:10 ] 650じゃないけど、あまり更新がないとか、あやしいリンク貼りまくられて荒らされるとかかな?
659 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 10:05:12 ] 650じゃないけど、情報がいい加減とか、 以前サンプルコードにグローバル関数と同名の変数名が使ってあって Python知らねえくせにまとめWikiかよお目出てえなとか、 リンク晒してるのはどう見ても関係者だろこれとか、 そんな暇があったら更新しろよハゲとかじゃないかな?
660 名前:デフォルトの名無しさん [2008/06/24(火) 11:30:46 ] ぱいがめ翻訳サイトまだ? だから廃れるんだよ 広めたいって人はいないのか
661 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 12:04:17 ] >>659 wikiなんだから間違いに気付いたら、みんなで編集していけば良いだけじゃないの?
662 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 13:37:42 ] 墓場に大切なものを隠せば見つかりにくいというわけですね、分かります。
663 名前:デフォルトの名無しさん [2008/06/24(火) 15:33:22 ] Python ではファイル=モジュールという単位になっていますが, 1ファイル=1クラスというコーディングスタイルは推奨 されていないのでしょうか? a.py で class A を定義 → クラス a.A が定義される b.py で class B を定義 → クラス b.B が定義される 名前空間まで別になってしまいます. C++ でプログラムを組んでいてずっと1ファイル=1クラス のスタイルでやってきたのですが・・・・ 同じ名前空間に入れるすべてのクラスは同じファイルに 入れなくてはならないのでしょうか?
664 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 15:47:17 ] >>661 中立的な言葉で書かれていない文章をお前は編集する気になるか?
665 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 15:55:59 ] >>663 a.pyで from b import * とでもしておけばいい。 極端な例がmatplotlibのpylab.pyで、このファイルにはimportしか書いてない。 まぁ、細かいファイルは1つのファイルにまとめた方がいいと思うよ。 例外クラスまで1ファイル1クラスにしてるの?
666 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 15:58:54 ] >>663 1ファイル=1クラスは特に推奨はされていない。 Pythonコードはどのみちクラスからだけ成り立っているわけではないしな。 いくつかのモジュールをひとまとめにしたいときは、Pythonではパッケージを 使う。 パッケージの初期化ファイル__init__.pyでモジュールからエクスポートしたい シンボルをimportしてやれば、あんたのやりたいことは実現できるはずだ。
667 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 16:30:44 ] 若いのに中立ですか。
668 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:03:35 ] >>664 編集して普通の文章にするんだ どうせ管理人すら放置してるんだから構わんだろ どんどんやっちまえYO!!
669 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:32:26 ] 翻訳は人任せとしても、wikiは自分の好きに書き換えればいいだろ
670 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 17:37:40 ] ゴミはゴミ箱に。 宝石は宝石箱に。
671 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 18:16:01 ] なんで翻訳の話がでてくるの?
672 名前:デフォルトの名無しさん [2008/06/24(火) 19:53:21 ] __init__.py に import を書くというのは なにかまずいことを引き起こすでしょうか?
673 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 20:01:24 ] >>672 全然。
674 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 20:13:10 ] >>672 ごく普通
675 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 21:33:48 ] >>672 アフガニスタンではよくあること
676 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 00:44:08 ] >>672 いっしょに__all__も定義すれば綺麗なPythonパッケージ
677 名前:デフォルトの名無しさん [2008/06/25(水) 07:55:11 ] >>665 すっきりうんこでました ありがとうございました
678 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 19:00:35 ] [1,2]の要素のそれぞれを2倍して[2,4]にする っていうのはどうやればいいんでしょうか?
679 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 19:04:07 ] >>678 [i * 2 for i in [1, 2]] もしくは map(lambda x: x * 2, [1, 2])
680 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 19:06:20 ] ありがとうございます。 リスト内包表記ってそうやって使うんですね。
681 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 19:36:07 ] >>679 それは > [1,2]の要素のそれぞれを2倍して[2,4]にする ではなく、新しいリストを生成しているのでは。 x = [1,2] for i in range(0,len(x)): x[i] *= 2
682 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 08:48:37 ] >>681 > ではなく、新しいリストを生成しているのでは。 だったら x = [1, 2] x = [i * 2 for i in x] ってやれば同じ
683 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 09:23:29 ] >>681 はインプレースで配列を変更していて >>682 は配列を新しく生成してその配列を参照しているように見える これが勘違いでなければ 両者は返す結果こそ同じだが動作は別物じゃないか
684 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 10:04:37 ] >>683 それで合ってる。 inplaceにしたければ、スライス代入を使えばいい。 x[:] = (i * 2 for i in x)
685 名前:683 mailto:sage [2008/06/29(日) 10:55:58 ] >>684 なるほど。ジェネレータ式も勉強になったよ
686 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 11:41:39 ] from timeit import Timer print Timer('x=[1,2]; x=[i*2 for i in x]').timeit() # py3k: 2.0419500243746063 # py25: 1.5092940583230501 print Timer('x=[1,2]; x[:]=(i*2 for i in x)').timeit() # py3k: 5.2120230364473699 # py25: 7.4014716954249735 スライス代入のほうがコストが高いんだろうか… ベンチの取り方が間違ってるだけなのかもしれんけど (汗
687 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 11:44:13 ] >>684 それだ ありがとう
688 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 11:46:37 ] >>686 最終的に代入になってても途中で余分にリスト作ってない?
689 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 12:03:13 ] >>686 普通の代入 x = よりはスライス代入のほうが遅いけど それ以上にジェネレータの実行速度が遅いんだと思うよ ジェネレータで節約できるのはメモリが主だろうし
690 名前:デフォルトの名無しさん [2008/06/29(日) 13:05:03 ] Python って末尾再帰の最適化はサポートされていないのでしょうか?
691 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:17:51 ] されてますん。
692 名前:デフォルトの名無しさん [2008/06/29(日) 13:42:00 ] >>691 どっちなんだ〜 ------------- def rec(x = 0): if (x<1000000000): rec(x+1) rec() ------------ RuntimeError: maximum recursion depth exceeded
693 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:52:29 ] うん、されてないと思う。 def fib(n): def fib_iter(a, b, m): return a if (m == n) else fib_iter(b, a + b, m + 1) return fib_iter(0, 1, 0) おれの環境ではfib(1000)ぐらいでコケる。 ので、Pythonではiterative processは 素直にループやiteratorで書けということだと思った。
694 名前:デフォルトの名無しさん [2008/06/29(日) 13:53:36 ] 単にトレースが取れるようにするために何か制限しているだけなのかなぁ。 わからん、わからん、わからんちん。 しかし単純にループにするだけならトレースとかそもそもいらないのに。 sys.setrecursionlimit() を勝手にいじるのもどうかと思うし・・・
695 名前:デフォルトの名無しさん [2008/06/29(日) 13:56:07 ] ううむ、つまり、「されてない」が結論だということっすね。 C++ + Boost Graph Library で大規模なグラフ処理してたんだけど、 Python + networkx でやってみようと思ってハマってます。 末尾再帰最適化を前提としたコードかいてたから、 移植のときにアタマをきりかえるのがなんとも・・・
696 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 13:57:05 ] Stackless Pythonというのを調べてみると良いかも。 ただ、Cのハードウェアスタックを使わないというだけなので、 末尾再帰をgotoに最適化してくれるかどうかは知らない。
697 名前:デフォルトの名無しさん [2008/06/29(日) 13:57:49 ] mail.python.org/pipermail/python-list/2003-January/180220.html
698 名前:デフォルトの名無しさん [2008/06/29(日) 13:58:28 ] >>697 さすがに2003年だからな 今でもだめなのか orz
699 名前:デフォルトの名無しさん [2008/06/29(日) 14:05:28 ] sys.setrecursionlimit(10000) でやってみたけど、7000ちょっとの再帰で今度は正真正銘の MemoryError: stack overflow が出た Python赤玉。俺涙目。
700 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 15:21:59 ] Stackless Pythonなら、setrecursionlimit()で限界増やして、メモリの限り再帰しても大丈夫だよ。
701 名前:デフォルトの名無しさん [2008/06/29(日) 16:23:18 ] メモリの限り再帰って・・・本質的な解決じゃない気がする。 そのうち末尾再帰の最適化が入ることを祈って、 とりあえずループに書き直した。
702 名前:デフォルトの名無しさん [2008/06/29(日) 18:42:53 ] Pythonでは定数をどのように宣言(?)すればいいのでしょうか? たとえば C++ において,クラス全体で使われる定数は static const で宣言しますが,それと同じようなことは でこれーたで可能なのでしょうか?
703 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 18:55:24 ] >>702 デコレータつかうと誤って更新すると例外が出るようのは作れるけど クラスやパッケージ外からはアクセサつかって変数を更新するという ルールにしとけば事故はおこんない。 そもそもPythonの変数は入れ物じゃなくて名前付けというか参照だから そういう文化(というと大げさだけど)だと思うしかない。 まーCみたいに独自プリプロセッサとおすのはありかもね。
704 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 19:58:33 ] ここでもstackの話してるのかw
705 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 21:23:49 ] ゆとりちゃんは幼稚園からやりなおしてくだちゃいね
706 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 22:09:54 ] やりなおしても、またゆとり教育で永久ループか?
707 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 22:37:55 ] ゆとりはPython使うな。 以上。
708 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:25:22 ] Python3.0について質問です。 名前空間ってやつで悩んでます。 urllibモジュールについて、 import urllib.parse.urlparseとやるとimportに失敗します。 from urllib.parse import urlparseとやるとモジュールのimportに成功します。 なぜでしょうか?? なぜ下の方は成功し、上のほうは失敗するのでしょうか。
709 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:35:21 ] urlparseがモジュールじゃなくて関数だから (lib/urllib/parse.py)
710 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:43:14 ] >>708 ttp://www.python.jp/doc/release/ref/import.html 単純なimport文やfromに指定できるのは「モジュール名」に限る。 パッケージがサブディレクトリを持っていて階層構造になっている場合は モジュール名にドットが含まれることもある。
711 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 00:56:00 ] >>709 ,>>710 ありがとうございます。 疑問点について氷解しました。
712 名前:デフォルトの名無しさん [2008/07/02(水) 09:12:25 ] PEPってPython Enhancement Proposals のことだって始めて知った今日。
713 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 13:39:10 ] PHPってPrintHtmlPrototyping
714 名前:デフォルトの名無しさん [2008/07/03(木) 08:36:51 ] Pythonで簡単なウェブサーバを作成するパッケージってありますか? ローカルで実験してて計測結果を表示するウェブインターフェース付けたいんだけど
715 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 08:54:55 ] >>714 >>651 >>> python -m CGIHTTPServer 50レス程度も読めないの?馬鹿なの?死ぬの?
716 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 09:11:23 ] そういう人間のたまり場だということになぜ気付かないの?
717 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 12:58:39 ] ログを読まないより、ググらないのとリファレンスを引かない方が…
718 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:41:22 ] プログラム初心者がpythonでcgiやりたいとかならともかく、 実験してるような人なら、必要な情報を調べる技術は備えてるはずだと思うんだけどなあ
719 名前:714 [2008/07/04(金) 07:00:11 ] 思いついた時にケータイで取り合えず聞いておくから. 後で調べる. とにかく古い測定器で,GP-IBインターフェイスカードが そのマシンにしかついてなくって,面倒だなぁ,と.
720 名前:714 [2008/07/04(金) 07:02:01 ] レスしてくれる人があったらラッキーだし, なくてもまぁ,なんというか,メモ代わり. 自鯖のp2経由だから自分がどこに何書き込んだかログ残るし.
721 名前:714 mailto:sage [2008/07/04(金) 07:33:41 ] だから,レスは別にいらないし、回答をくれても特に感謝もしない. こっちが要求したワケじゃないから,ね.
722 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 07:38:31 ] つチラシの裏
723 名前:714 mailto:sage [2008/07/04(金) 07:41:48 ] わかってると思うけど,721は別人. …まあ,言ってることは当たってるけど.
724 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 08:46:23 ] あんま参考にならない意見かもしれんけど coreblog.org/ats/python-de-cgi coreblog.org/ats/stuff/minpy-web-support 目次 とか薦めてみるテスト じぶんもCGIよくわからないひとなので、今週の土日使って 読んでみる予定。
725 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 11:30:17 ] ものすごいインストーラー嫌いなんです Windows用のはインストーラーしか見当たらないのですが Pythonをインストールせずに使う方法はありますか? Portable Pythonっていうのを使えばいいんでしょうか?
726 名前:デフォルトの名無しさん [2008/07/04(金) 11:51:14 ] >>725 そんなに嫌がらないで・・・
727 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 13:21:23 ] >>725 ソース落としてコンパイル or msiを展開する
728 名前:デフォルトの名無しさん [2008/07/04(金) 15:49:43 ] 1バイト以下に収まる整数のでっかい配列を扱いたいと 思ったんだけど、基本型には「短」整数型ってのはないのな orz
729 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 15:50:44 ] >>728 import array
730 名前:デフォルトの名無しさん [2008/07/04(金) 16:22:22 ] 多次元配列を扱いたいんだ・・・ できれば符号なし8ビット整数の。 NumPy ってページを見てみた。 It also adds the features introduced by Numarray and can also be used to replace Numarray. ってことらしいのだが、つーことは今は numpy.array を使えと?
731 名前:デフォルトの名無しさん [2008/07/04(金) 16:29:12 ] A newer implementation, Numarray, is a complete rewrite of Numeric but is also deprecated. NumPy is a merge between the two that builds on the code base of Numeric and adds the features of Numarray. ---- Wikipedia にはこうかかれていました。
732 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 18:47:31 ] ありがとうございました
733 名前:デフォルトの名無しさん [2008/07/04(金) 19:21:43 ] どう見ても精子です。 本当にありがとうございました。
734 名前:デフォルトの名無しさん [2008/07/05(土) 20:03:29 ] 自鯖クラッシュに伴い、Python ベースのブログツールに して気分一新しようと思ってるんですが、この世界は 大体 Zope ベースと TurboGears ベースに収束しつつあるんでしょうか? Apache + Pythonベースの CGI というよりは、 サーバ機能も含めて全部 Python で固めたシステムに してみたいんですが、そうなると Zope ベース一択ですか?
735 名前:デフォルトの名無しさん [2008/07/05(土) 20:34:16 ] Debian に zope3 パッケージが見つかったんで入れちまった。
736 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 20:48:34 ] Zope3はガチで地雷。
737 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 20:50:44 ] 言うな。個々のパーツは素晴らしいと思うんだが
738 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 21:17:12 ] ブログツールってのが既成のなら 何ベースというより機能で選択すればいいとおもうけど 自分で構築するならlighty+WSGIかSCGIなPythonアプリかな。 Zopeは2.6以降追っかけてないけど 当時の設計思想でコアなProductも同等以上なら Python自体がバージョンアップしてる分そうとう楽しく書けるはず。 でも実際は>>736 のとおりなんだろうな。
739 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 22:23:27 ] Zope3はすばらしいと思うが周りに集まってくる日本人がクソ。
740 名前:デフォルトの名無しさん [2008/07/05(土) 22:26:12 ] え?地雷なの? なんか改造したくなったときにPythonだと普段から使っているからやりやすいかと思って。 PerlとかPHPで書かれたやついじりまくって収集つかなくなった。
741 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 22:29:01 ] 舞の海
742 名前:デフォルトの名無しさん mailto:sage [2008/07/05(土) 23:27:31 ] >>740 >PerlとかPHPで書かれたやついじりまくって収集つかなくなった。 センスのある奴は道具に左右されずそつなくなんでもこなすもんだがね。
743 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 00:25:22 ] クマー
744 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 01:40:50 ] ちょ PHPはセンスあっても無理な時は無理 grobal依存しまくりな著名アプリがほぼ絶滅したら認識改めてもいいが なんかSquirrelMailっての改造作業回された時にほんと死ねクズ開発者共って思った
745 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 03:10:32 ] PHPにはnamespaceすらも無いの?
746 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 03:13:36 ] ねえよンなもん
747 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 04:53:51 ] PHPは言語自体行き当たりばったりなハックで作られてる印象
748 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 08:31:52 ] >>744 >SquirrelMailっての改造作業回された時 ドカタ乙。
749 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 08:45:48 ] ワラ
750 名前:デフォルトの名無しさん [2008/07/06(日) 11:23:57 ] Perlは綺麗なのか? かなりアドホックに建て増ししてるように見えるが。
751 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 11:35:17 ] Zope3の実装はきれいだけど、使っている日本人がババッちい。
752 名前:デフォルトの名無しさん mailto:sage [2008/07/06(日) 12:02:04 ] zopeはメメタァなだけだろ