>>1 スレを立てる前にスレ立て宣言しろ
スレ立てたら現行スレに報告入れろ
>>3 誰かがスレを立てる前にお前がスレ立て宣言しろ
誰かがスレ立てたらお前が現行スレに報告入れろ
6 :
デフォルトの名無しさん :2006/06/29(木) 19:00:06
>>3 なんで俺に断り無く勝手にスレ立ててんだよ
って言いたいのかと esp
じゃあ、タイトルに「python」を含む新しいスレッドが無いか 毎日2chをチェックするプログラムを作ってみれ。
了解
11 :
デフォルトの名無しさん :2006/06/29(木) 20:10:22
290 名前:名無しさん@お腹いっぱい。 :2006/02/27(月) 11:41:23 竹石圭佑って他人に色々迷惑かけてんだな。確かコイツの親は中国人だったろ。中学校ん時に噂あった。 やっぱ在日って最低だ。近いうちテレビ報道されるような犯罪起こすんじゃないか?性犯罪とか
クソレスから、なぜかプログラムスレにふさわしい神展開にw
どうしてそんな意地悪するの?
パイパンと聞いて飛んできました。
すいません、タイトルにpythonを含む新しいスレッドが一向に増えないのですが。 これでは動作確認ができません。
>>17 短気だな。このスレが埋まるまで待て。次のFIFAワールドカップまでにはたぶん・・・
>>17 2chの subject.txtをコピー&改造してローカルサーバーを立ち上げてテストするんだ
・・って、マジレスすればいいの?
誰か、2.5βをインストールしたらアイコンだけください
>>20 解凍すればサブディレクトリ"PC"の中に入ってるよ
だれか >22 でプリントTシャツつくってくれ。 ワンポイントの刺繍でもいいです。
パ・パイソン(;´Д`)ハァハァ
(*゚∀゚)=3ハァハァ
python の文字になりたい…
てめーら下のURLしか頭にねえだろw
こういうのにつきあわされる女性は可哀想。 あとこういう画像を張る24も別の意味で可哀想。
これほしいなぁ
俺は >29 の頭が可哀想でしょうがない。 (フツーのモデルさんでしょ?)
個人的にPython結構いいと思うんだけどなんで流行らないんだろうねぇ? 可読性の高さは群を抜いてるからそれが強みだと思うんだけども 可読性が高いっつーことは、保守性が高いっつーことで 後から手入れるにしても他の言語より楽だし
新しいこと覚えるのは大変だから。 マイクロソフトに期待してる。。ほのかに
新しいこと覚えるのが面倒って人はプログラミング自体出来ないだろう
>>34 まあ明らかにプログラマ向きでない人がプログラマを職業としているわけだが。
>>32 Windowsバイナリを追加モジュールがないと作れないのも原因かと。
py2exe使ったときは配布サイズがHelloWorldでも4Mとか行くし。
>>37 んだね。LinuxではPython流行りまくり。
数年前のPyJUGのサイトが多言語への罵詈雑言であふれてなかったら もうちょっと早くはやり始めたのではないかと思う。
まぁ、Google Trendでも眺めて自己満足するのがよいのではないかと。
仲間内で使ってて流行ってるというのはどうかと思うが それだと Ruby 厨と変わらん
>>44 そういう対立を煽るような馬鹿発言が一番うざいんですけど
仲間内の外だと、使ってるのが確定してるのはGoogleくらいしか知らん。
そろそろウンチ?
俺使ってるよ俺
みんなそんなにマイナなものを使うのが怖いのか? 俺はPythonがメジャになればそれはそれで嬉しいけど、別にマイナでも構わん気がする。
俺はRubyがメジャになればそれはそれで嬉しいけど、別にマイナでも構わん気がする。
マイナーだとそもそも実行できなかったり。 perlの強みはどこでも実行できることだし
最近のLinuxは最初から入ってるぞ、Python。
CPANがないと使えないPerl スレッドの実装がタコなRuby 国内でマイナーなPython
.NET Framework 3.0 (旧名称WinFX)にもPythonが標準装備されればいいのにな
56 :
デフォルトの名無しさん :2006/07/03(月) 20:59:50
python2.3以前において l = [1,3,5,6,3,3,4,6,9] があったときに、重複した値を取り除く(uniq)エレガントな方法を教えてください。 2.4ならset(l)でokなんだが‥‥‥。 dictに突っ込むしかないかなぁ
Red Hat や Fedora のシステム管理アプリケーションはほとんどPythonで書かれている。 Pythonが無いとすげー困る。つーか、インストールに必須。
m = [] for i in l: i in m or m.append(i) これじゃダメ・・・?
>59 いいかも。ありがと。実験してみたら in って計算量O(1)に近いみたいね‥‥‥ >58 順番は気にしなかった、今は反省している。
>>60 > 実験してみたら in って計算量O(1)に近いみたいね‥‥‥
ソース見る限りはO(N)だがなぁ。リストやタプルのinはただの線形探索だから。
まぁ100や200の要素くらいではほとんど一瞬なので、あまり気にしなくていいと思う。
ソースってどのへんを見ればok? あるものを確認するときはリストサイズに影響を受けてたけど、 無いものを確認するときはO(1)っぽかったね。
a = [1,3,5,6,3,3,4,6,9] a.sort() [item for item, iter in itertools.groupby(a)]
# 順序は保存されないけど a = [1,3,5,6,3,3,4,6,9] a = dict.fromkeys(l).keys()
a = [1,3,5,6,3,3,4,6,9] b = a[:] print [x for x in a if x not in b.remove(x)] 寝てるときに考えたらできそうだったけど、ダメだった。removeだし。
順序も考えるなら、最初に現れる位置か、最後に現れる位置か、っていう問題も出てくるな。
いろんなやりかたあるんだねー 65> 寝てるときに考えたら 器用だねー。うやらまし。 ありがとん。
>>67 日本語の「寝る」という単語には「眠る」という意味と「横になる」という意味があるんですよ。
難しいですね。
まぁ普通の日本人なら横になって考えたら と書くだろうけどな
つか、ここで「眠る」の方の意味と解釈するヤツは、 プログラミング能力無しどころか社会生活不適合だろ。
半眠りで脳波がθ波の状態は ヒラメキが発生しやすいんだぞ
俺はいつも夢の中でインデントしてますが何か?
眠ってるうちに小人さんが・・・って話は良く聞くよね
最近 Planet Python Japan が落ちてるねー。 便利だからよく見ていたんだけど、復活してくれないものかのう。
ええ
ぱいそにあんてな……憶えてる人いる?
77 :
61 :2006/07/05(水) 00:05:45
>>62 Objects/listobject.c: list_contains
Objects/tupleobject.c: tuplecontains
Objects/stringlib/fastsearch.h: fastsearch
辺りを見たらO(N)ぽかった。
ぱいそにあんてな の検索結果 1 件
>77 お、ありがとう。今度時間取ってみてみんべぇかな。 >67 日本語難しいね。でも僕も学生時代は寝ながら考えてたよ。 夢の中でコード検証してて、バグに気づいて飛び起きて あわてて大学に回線繋いでデバッグしたこともあった。 ジジィになったらできなくなったよ(・ω・)
80 :
デフォルトの名無しさん :2006/07/06(木) 17:58:48
こんにちは
さようなら
おかえりな(ry
85 :
83 :2006/07/06(木) 21:20:54
>>84 さんくす。書式文字列使うのね。
コンマが最後にくるときはどうしたらいい?
if x:
print "<x=%d>" % x,
if y:
print "<y=%d>" % y,
とすると、「<x=10> <y=20> 」とかになって、余分な空白が出力されてしまう。
sys.stdout.write()
87 :
デフォルトの名無しさん :2006/07/06(木) 21:42:39
if x: result ="<x=%d>" % x if y: result +="<y=%d>" % y print result
88 :
83 :2006/07/06(木) 22:15:58
>>86 ,87
さんくすです。
でもなんか、ちょっと面倒くさいですね。print文が勝手に空白を出力するという仕様の理由がしりたいですね。
>>88 そりゃ、くっついたら読みにくいからだろww
そもそもデバッグ用みたいなもんなんだから、ちゃんとしたフォーマットに使うのがおかしい
そうだなあ・・ printをこまめに次々に使うのって、やっぱ開発時のちょっとテストやデバッグの時が多いんじゃないかな。 本格的に出力したいときは、 OutText= [] if x: OutText.append("<x=%d>" % x) if y: OutText.append("<y=%d>" % y) print '\n'.join(OutText) みたいに配列に追加して、最後にまとめて出力してる。
printは、なんでもなんとなく表示するって感じのヤツだから、 自分好みに出力したいなら、他のヤツを使った方がいいお( ^ω^)
今、はじパイ片手に勉強してるんだけど ネットで個人サイト巡ってちまちま勉強するより 数千倍効率いいね ネットだろうと本だろうと同じような気がするんだけど こうも変わるのはなんでだろう
ネットだと、見てるだけって気分で、あんまり必死にならないからじゃないかな。 「もっと分かりやすいサイトがあるんじゃないか」って思ったりして、どこか信頼できないとか。 自分で買った本ならまじめに勉強する気になるんじゃないかな。 でも、ある程度慣れて、ちょっと専門的なモジュールの勉強しようとすると ネットでちまちま調べるしかないけどね。
print "i="+str(i) print "i="+str(i), ですが何か?
あと,これは姑息だけどprint "¥bj="+str(11)
96 :
89 :2006/07/07(金) 07:03:44
>>89 printがデバッグ用とはだれがいったの?リファレンスに書いてある?
名前まちがえた。96の名前「86」は間違い。
はじパイ厚いよう…研究で使いたいのに読み終える気配が無いから、 matlab使ってる。
>>96 日本語苦手な人ですか?
「みたいなもん」
「誰か言った」「リファレンスに書いてある」とか そんなソース出せっていうほどの事じゃないだろ
printステートメントは失敗作 はやく3.0でねーかな
Perl講座
先頭で DEBUG=sys.stderr.write しちゃって DEBUG() とか書くだろ普通
ひとつのtry:節に、except:節とfinally:節を同時につけることができないようですが、 この制限はどのような理由によるものでしょうか。 思想上の理由ならどのような理由なのか、また実装上の制約ならどのような制約か教えてくれませんか。 あと、except:とfinally:の両方を使う場合の書き方としては try: try: ... except: .... finally: ... でいいんでしょうか。
>>106 前半: Python 2.5 からできるようになります
後半: おっけー
>>106 try - finally が、内側
外側のtryで、例外をひらうべきじゃないかな。。
>>109 except:へ来る前にfinally:が走って欲しいか後で走ってほしいかによるな
どちらでもよければどちらでもいいだろう
111 :
106 :2006/07/07(金) 19:51:04
>>107 ありがとうございます。同時に指定できない理由はご存じないですか?
2.5はβ1がリリースされているようですが、広く使われるようになるのはまだ先のようですね。
>>108 ちょうどそれを読んで勉強しているところです。そこを読んでもわからなかったので質問してみました。
というか、このページはわかりにくい。特にgeneratorのとことか。
あと間違いっぽいのがあるですけど、「8.3 例外を処理する」で
> この値は例外の例外の引数 (argument) としても知られています。
「例外の例外の引数」は「例外の引数」でしょうか。
112 :
106 :2006/07/07(金) 19:57:55
>>109 Javaだと、catch節(except節)が実行された後にfinally節が実行されるようです。
なので、これが普通かなと思ってました。
どうなんでしょう。
>>110 except:より先にfinally:がやりたい場合というのは、今まで考えたこともありませんでした。
そんな場合もあるかもしれませんね。なるほど。
Pascal も try except と try finally は別々に書くよな
116 :
106 :2006/07/07(金) 22:05:38
>>113 どうもありがとうございます。なんと、思想的な理由でしたか!これは驚き。
> it is completely ambiguous what the programmer meant if both are
> specified together, Guido deliberately kept them separate so that
> one had to be very explicit about whether the finally was inside
> or outside the except.
ほんどうだ。except:とfinally:のどちらを先にやるのかを明確に示すために、
わざわざ同時に指定できないようにしたのですか。
>>110 の指摘どおりですね。
2.5では指定できるようになるとのことですが、例えば
try:
except:
finally:
ならexcept:が先でfinally:が後、
try:
finally:
except:
ならfinally:が先でexcept:が後、
という仕様にでもなるんでしょうか。もしそうならかなりユニークですね。
>>116 > という仕様にでもなるんでしょうか。
文法見る限りならないみたい。
ところで、
try:
return 1
finally:
return 2
って書いたら2が帰ってくるのね。
return 1をキャンセルしてるよ……。
ふと思ったんだけど、ePerlのようにテキストファイルにコードを埋め込んで実行するもの(ePython)ってありますか? Pythonがインデントによるブロック範囲指定だから、ePython→Pythonへの変換がちょっと面倒な気はするけど、もしあれば教えてください。 ぐぐったところでは、なんか関係なさそうのばかり引っかかった。
>>117 finallyはエラーあるなしに関わらず実行されるわけだから、そのとおりじゃね?
>>120 いやreturn握りつぶしといてエラーにしないのがすごいなと思って。
finallyブロックが実行されることに不満があるわけじゃないのよ。
returnはそのスコープで有効なfinally句をすべて実行してからreturnするのだから 妥当な挙動だと思うけど。当然finally句の中でのreturnも「正しく」実行されるという だけでしょ。それが結果的にペンディング中のreturnを握りつぶしたとしても。
>>119 ほほう。このページはありがたいな。
このうち、Pythonをそのまま埋め込めるのってどれ?
124 :
デフォルトの名無しさん :2006/07/08(土) 08:39:14
boost::pythonの話をここでしても良いかな? 主にC側の話なんだけど・・・。 Cアプリ起動後にPythonを呼ぶとき、BOOST_PYTHON_MODUL(モジュール名)でPythonに名前を公開しています。 (initモジュール名を呼Py_Initialize呼んだ後に呼ぶ) この時、C側の外部変数などをPythonで直接操作させる方法はありますでしょうか。 以下の問題があります。 ・関数を仲介させるのは手間がかかる。boost::python::defでの更新はしたくない。 ・boost::python::scopeでは属性は定義できても、C側外部変数へ引き渡す処理が書けない。 ・Python関数起動時の引数に渡す方式だと、マッピング関数が必要になるためやりたくない。 理想はboost::python::defみたく boost::python::value_<int>("g_foo", &g_foo); って書ける事なんですけど。
Visual Studio 2005 って IronPython の IDE として 使用できるんですか?
質問1 Pythonって、クロージャをサポートしてますか? チュートリアルを読んだところ、それらしいのは見つかりませんでした。 質問2 lambdaは本体に式しか書けなくて文は書けないようなんですけど、なぜなんでしょうか。 また文をかけるlambdaのような機能はありますか。
1 => ない 2 => def
128 :
126 :2006/07/08(土) 12:30:16
defは名前付き関数定義だと思うのですが、関数オブジェクトを取り出して lambdaのように使うということでしょうか。 あと、lambdaで文がサポートされていない理由についてもご存知でしたらお願いします。
一般論として lambda式みたいなところに複雑なロジックを埋め込むと 可読性の悪いコードができあがりがち def文を使った関数定義は 名前考えたり改行したり面倒だけど 可読性が高いし明瞭でよいとおもう これがPythonic(Python的)ということなんじゃないかなあ 実際,リスト内包表記とかジェネレータ式 組み込み関数や標準モジュールを組み合わせるだけで かなりのことができるので 翻訳ドキュメントにさらっと目を通してみることをお勧めする
つまりだね Python初心者: 簡単で明瞭な文法を使って よちよち歩きながらコードを書く 条件分岐,ループ,(複雑な)関数定義が必要な部分は パッと見で分かるようにブロックとして分離されるので 自分の書いたコードを反芻しながら学習を続けて行ける Python中級者: 徐々に組み込み型,組み込み関数の素晴らしさに気づく 標準モジュールを使ったより高度なプログラミングができるようになってくる Python上級者: 一見複雑な処理も,標準モジュールなどを駆使して簡潔に記述できるようになる しかも,5秒くらいでどうかけば簡潔になるか思いつくようになる 既存のクラスやフレームワークを拡張して 生産性の高いプログラミングができるようになる Pythonウイザード: 自分でPython使ったフレームワークやオープンソースプロジェクトを立ち上げる Googleに雇われる(ww
lambdaでできる無名関数てクロージャでしょ?
xoltar toolkit駆使するスタイルの人とかもいるんだろうな世の中には
134 :
126 :2006/07/08(土) 14:00:58
>>130 どうもありがとうございます。
単に、JavaScriptや関数型言語のように無名関数を生成するためにlambdaがあるのだと思ったのですが、
Pythonのそれは式しか指定できないから、あれっ?と思ったわけです。
def の場合は関数名をつけなければならないし、必ず文にしなければならなくて式として記述できないので、
関数型言語のlambdaやRubyのブロックと比べるとどうしても使い勝手が劣ります。
これがとても残念なので、Pythonのlambdaがわざわざ単一式だけに制限している理由が知りたいなと思ったしだいです。
またリスト内容表記やジェネレータ式が便利なのはわかるのですが、これらで無名関数の機能や用途を
すべてカバーできるわけではないし、そもそも用途が違うので、無名関数の代用にはなりません。
pythonのlambdaがそういうもんだっていうのは単なる事実であって みんなそういうことはわかっててその上でpython使ってるんだよね lambdaの仕様が致命的だと考えるならlispなりrubyなりjavascriptなり使えばいいよ
136 :
135 :2006/07/08(土) 14:35:22
そういうこと= >def の場合は関数名をつけなければならないし、必ず文にしなければならなくて式として記述できないので、 >関数型言語のlambdaやRubyのブロックと比べるとどうしても使い勝手が劣ります。
>>126 その事実がそうなっている理由を知りたいだけ。
別に致命的とはだれも書いてない。
式や文が複雑に入れ子になったりするのを嫌ってるんじゃないの?
ワンライナーが300文字を超えて分かりにくいから改行したいなら最初からまともな書き方しろって話だろ 実用上はなくてもほとんど困らない
140 :
135 :2006/07/08(土) 15:03:50
>>137 あ、そう
なんかこの手の「この言語にはあれがない、これがない」っつーのって
4〜5年前から飽きるほどみてるからさ
今更頼んでもないのにご説明頂いちゃってむかっときたもんで
ブロックの中で def するのと,無名関数を宣言できるのとどう違うの?
4,5年も見てるならいい加減学習してスルーできないのか。
143 :
126 :2006/07/08(土) 15:44:45
>>135 ,140
lambdaが式しかとらないという仕様にはなにか理由があるはずだと思ったので、
それを聞いただけです。
べつにPythonのlambdaを非難することを狙っているわけじゃないです。
#あの文章を、Pythonへの非難と受け止められるとは思いませんでした。
#仕様がそうなっている理由を質問することがそんなに悪いことでしょうか。
>>138 なるほど。たしかに、インデントでブロックを表すPythonでは、式の中に文をいれるような
ことはしにくいですね。
JavaScriptだと、関数の引数に無名関数を指定できたりするんですが、
こんな感じ → funct(arg1, arg2, function(x, y) { if (x > y) return x; else return y; })
これはJavaScriptがインデントによらずコードを記述できるからできることであって、
同じようなことをPythonでするとして、lambda に文を埋め込むためのきれいな文法はちょっと思いつかないです。
それならdefでいったん関数を作成し、その関数オブジェクトを使う方がわかりやすいです。
個人的にはPythonのインデント方式は好きなんですが、それがこのような制限になるとは。むむむ。
>>141 できる・できないでいうと、どちらもできることに大差はないです。たんに、使い勝手の問題です。
Pythonの関数って、実際にはJavaScriptや関数型言語と同じように関数オブジェクトを変数に
代入してるだけだと思うので、ならJavaScriptや関数型言語のように無名関数を定義できる方法があるだろうと思って。
def Lambda(prog): exec compile(prog, "lambda", "exec") return _ Lambda(""" def _(msg): print msg """)("hello lambda (^^;")
146 :
135 :2006/07/08(土) 16:09:34
>>143 非難していると受け取ったんじゃなくて、オナニーがうざいと言っているだけ
147 :
126 :2006/07/08(土) 16:45:59
>>144 情報ありがとうございます。
>>129 を読んでみましたが、英語なのでよくわかりませんでした。
> But I'm rejecting that too, because in the end (and this is where I
> admit to unintentionally misleading the submitter) I find any solution
> unacceptable that embeds an indentation-based block in the middle of
> an expression. Since I find alternative syntax for statement grouping
> (e.g. braces or begin/end keywords) equally unacceptable, this pretty
> much makes a multi-line lambda an unsolvable puzzle.
「I find any solution unacceptable that embeds an indentation-based block
in the middle of an expression」とあるので、やっぱりインデントされた文を
式の中に埋め込むのは難しい、というふうに読めたのですけど、どうでしょうか。
作者が文章全体でいいたいことは、言語仕様設計はパズルを解くのとは違い、
ユーザインターフェースを設計するのと同じなんだ、ということみたいですが。
>>146 あの文章がオナニーと受け止められるとは思いませんでした。
どこらへんがそう思ったのでしょうか。
>>145 を少し変えてみた
def Function(args, body):
code = "def _tmp_func_(" + args + "):\n"
code += "\t" + body.lstrip("\n").rstrip().replace("\n", "\n\t")
exec compile(code, "lambda", "exec")
return _tmp_func_
map(Function("n", """
if n % 2 == 0:
return n * n
else:
return n
"""), range(10))
→ [0, 1, 4, 3, 16, 5, 36, 7, 64, 9]
読みづらすぎる・・・
>>147 > 作者が文章全体でいいたいことは、言語仕様設計はパズルを解くのとは違い、
> ユーザインターフェースを設計するのと同じなんだ、ということみたいですが。
つまりどういうこと?
Q: lambda が式しかとらない仕様の理由は? A: scheme 由来だから。 # ruby厨は巣に帰れ
>>148 inspectとか使って名前空間も引っ張ってくればウマーだな
まずつかわないけどw
152 :
126 :2006/07/08(土) 20:22:34
>>150 これってほんとですか?どっかにそう書かれているなら、それを教えていただけないでしょうか。
それから、Schemeのlambdaは本体に複数の式や文を指定できますよ。
Schemeの場合、文も式だから「式や文」という表現はおかしいかもしれませんが。
>>149 英語なんであまりよくわからないんですが、ある機能が実現できるからといって、複雑さも増えてしまっては、使いづらいものになる、ということみたいです。
パズルなら、その解法でパズルが解けるかどうかが重要であって、その解法が
複雑かどうかはあまり問題ではない(複雑でも問題ない)が、
言語仕様は開発者に対するユーザインターフェースなのだから、ある機能を
追加したために仕様が複雑になってしまってはユーザインターフェースとして
失敗だという主張のようです。
lambdaに文を指定できるような文法を持ち込むと複雑になってしまうし、
今でも def でできるわけだから、わざわざ複雑さを増やしてまで導入する必要は
ないという判断なのでしょう。
(間違ってたらごめんなさい)
>>143 >こんな感じ → funct(arg1, arg2, function(x, y) { if (x > y) return x; else return y; })
こんなことできる仕様だから、セキュリティ上の問題が発生するんだろ
それはない
結論: Guidoがそうしたかったから、でいいじゃん。 lambda自体無くしたい、という4月ネタもあったことだし。
ヒントー>可読性
スカートは長すぎず短すぎない膝丈で清楚なのが 時代に左右されず、長いこと萌えられるよな というのがPythonなのに なぜミニスカートじゃないんだ? ミニスカートのほうが萌えるに決まってる! スカートが長いのはGuidoがヘンタイなんじゃないのか? とか言われてもな。
てか、キレてるヤツは何でキレてんだろう。 >135とか意味不明すぎてアホっぽくみえる。
161 :
デフォルトの名無しさん :2006/07/09(日) 06:46:45
Py然--Pythonic コレイイネ
いいだろ.然は禅にかけたんだよ
>>154 は?どんなセキュリティ上の問題が出るっての?
言ってみろよ。
>>159 オタ臭がぷんぷんする例えだな。
それはそうと、だったらスカートが膝丈である理由を説明してあげればいいだけのこと。
lambdaが文をとらない理由を聞かれてるんだから、それを説明すればいいのに、
「それはそういうもん」とか「lispなりrubyなりjavascriptなり使えば?」とか、
ぜんぜん役にたたないカキコしてもなんにもならん。
>>140 4〜5年も同じことを繰り返して成長がない
>>140 乙。
>>150 おいおい、PythonのlambdaはSchemeとは関係ないだろ。名前以外。
Schemeのlambdaはif文埋め込めるし。
カルシウムが足りない人が多いな
167 :
154 :2006/07/09(日) 12:09:17
いらいらすんなよ。
言語オタにもDQNっているんだな(wwww
ていうかそもそも「lambdaに文を入れたい」っていう気持ちがあんまりわからないなあ。 ただの手癖?
>>170 直交性という意味では理解できるけど、そもそも文=インデントされた行というPythonには
スタイル的に似合わないと思う。仮に実装したとしてもスコープが2階層しか存在しない
(クロージャが無い)からLispにおけるlambdaほどの実用性はないのではないか。
単純な式程度のものを渡したいという用途を考えればPythonのlambdaのような割り切りは
それなりに納得できる。
じゃあ読みやすいコードを書かせるために制約をもうけるPythonからすると、 「lambdaに文を入れるのは手癖がわるい」ということになるのかな。
そもそもlambdaって、無名式じゃん。
やっぱり敗北者を付けないとまずいな
じゃあ、Pythonにif式が無いのはなぜ?
読みにくくなるから。
lambdaに関しては思うところがあるので、私も返答させていただく。不快に思わ
れる方は透明あぼーん推奨だ。
まず第一に、Python界で、関数型言語的な機能は、鬼っ子扱いされているという
ことだ。Guido van Rossum自身、「lambdaもmapもreduceも分かりづらくて嫌い
だ」と明言している。こういう分かりづらい機能はなるべく制限したい、という
声がPythonユーザの大勢を占めている。
第二に、関数型的なユーザの中でも、機能を制限したい、という声があることだ。
近代的な関数型言語では、関数に何でも許可してしまうLISPのような言語は原始
的だ、と考えるんである。
http://www.sampou.org/haskell/article/whyfp.html 詳しくはHaskellなどを学べばいいと思う。
この二つの意見が一致したため、Pythonのlambdaには、ステートメントを実行で
きないという制約がついているのだろう。
しかし、こういう質問が出るのも当然ではある。Pythonは一見するとすごく関数
型的に見えるから、LISP経由でPythonに来た人間は、どうしてもその流儀で書き
たくなる。しかし、PythonはCユーザに一番書きやすいように出来ているのだ。
関数がファーストクラス・オブジェクトなのは、単に関数ポインタを自然に実現
するためだったんだと思う。
PythonにはPythonの流儀がある。実行の単位が関数ではなくステートメントなの
も、時代と逆行するかのようだが、Python的なこだわりのひとつなのだろう。
そのこだわりには、わずかにHaskellに通じるものがあって、私はその辺が気に
入っている。LISPの流儀で書きたい人は、Rubyのほうが幸せになれると思う。
あと、念のために書いておくが、Pythonにクロージャは存在する。
>>177 if式ってa = b ? c: d;のことか?
それなら2.5で導入されるぞ。
Noneであれば別のもの、なら今でもできるけど。
>>181 「参照透明」性がその答えだ。すなわち、関数に副作用がないこと。具体的には、
変数への再代入がないこと、制御フローがないことなどを指す。
これは手続き型に慣れたユーザには、理不尽な制約としか見えないだろう。しか
し、この参照透明性のおかげで、近代的な関数型言語では、自由な関数合成(高
階関数)と遅延評価が実現できるのだ。いずれも計算量とプログラマの負荷を激
減させる可能性のある、きわめて重要な機能だ。
遅延評価は、Pythonではジェネレータという形で実現されている。
訂正。 ×ジェネレータ → ○イテレータ ジェネレータしか使っとらんのでつい間違えた。 参照透明性の説明もずいぶんアレだが、まあリンク先を見れば分かるから 良かろう。
要するに「OOP的にはlambdaは要らない子」
変な言語厨ばかり寄ってくるからlambdaいらない。
>>185 >言語厨ばかり寄ってくるからlambdaいらない。
ワンライナー書く時に便利だから残しといて
一応Lisp屋だけど、Pythonのlambdaは使わないな 普通にローカルでdefって渡すほうがPythonっぽいと思う
正直179みたいなこと延々と語られると萎える 159みたいなののほうが3000倍マシ
>>188 に同意
ローカルでdefれるから、lambdaを使うのはすごく簡単な内容だけ。
>>182 参照透明性(副作用がないこと)と、
>>179 の「機能を制限したい」との関係がよくわからん。
>近代的な関数型言語では、関数に何でも許可してしまうLISPのような言語は原始
>的だ、と考えるんである。
参照透過性を実現するには代入のような副作用を禁止することであって、
関数に何でもかけてしまうこととは直接の関係はないんじゃね?
Haskellの関数には何でもかけるけど、参照透過性は確保されている。
(そもそも、関数型言語では関数に何でも書けるようになってないと困るだろ。)
またPythonのlambdaは式しか書けないから参照透過性が実現されているかというとそうではない。
なぜなら式は関数呼び出しを含めることができ、かつPythonの関数は副作用を含めることができるから。
それから、Pythonのlambdaでは式しか書けないのは参照透過性を実現するためだというのは、
意見としてはおもしろいけど、
>>129 みるかぎりはそこまで深いことは考えてなさそう。
正直159みたいなこと延々と語られると萎える 179みたいなののほうが3000倍マシ
print None や print str(None) とすると "None" が表示されるんだけど、 何も表示されない(または空文字列が出力される)ようにするよさげな方法ある? 今は def to_string(val): if val == None: return '' else: str(val) としてるんだけど、自分で関数を定義しなくても、このくらいなら標準でなんかライブラリがありそう。
>>191 やっと意図したようなレスが返ってきた。あなたの意見にはほぼ全面的に賛成だ。
>>179 をもう少し正確に言い直すなら、Pythonのlambdaの制約をなくしたいとい
う主張に対して、関数型言語的ユーザの足並みが揃わないことの理由であって、
これだけで参照透過性が保証されるわけでは全然ない。また、van Rossumがそれを
却下した理由が、参照透過性でないことは、おっしゃるとおりだ。
ただ、こういう話には、このスレでは非常に風当たりが強いから、思い切り
端折るしかなかった。
>>180 によると、2.5で三項演算子が導入されるようだ。これでPythonでも
Y Combinatorが書けるようになるということか。
あなたのうしろの山田さん。
rubyの作者並にオブジェクト指向を理解できていない人が多いようだね。
理解できてなくても理論的に劣ってても思った通りに動きゃいい
つまり理解できてなくて劣っていて動きゃいい人のための言語。
なんでここはキチガイが多いの?
rubyはスレッド実装が終わってるので近い将来には過去の遺物になるよ。 pythonは良くも悪くもgoogleと一蓮托生なので少なくともgoogleの寿命分は生き残る保証がある。
google(笑)
>>201 >pythonは良くも悪くもgoogleと一蓮托生なので
良くも悪くもFUDですよ。
>>201 Rubyのスッドレは2.0ではマシになるのかな?
新しいスレッド実装が安定するまで
どのくらいの時間がかかるのかは分からないけどね
いずれにしろ
matzが自ら言語コアの実装するのを諦めて
開発体制を一新しないと先は短いだろうね
Guidoが何年も前になしえたことを
Rubyは何年かけてやるんだろうね
matzは危なっかしくてついてくの怖い
モルモン焼き
おいそがしいところすみません。 rpmとかyumみたいに進行具合をプリントするのってどうやるのですか?
カーソル戻して既に書かれているのと同じ場所に書くっていう意味?
******・・・・ / 60% ↑ ↑ | なんかクルクルまわるやつ こーゆーやつじゃね?
>>210 俺もそっちじゃないかと思う。
スクリプトの途中にpirnt文を書いたときに、
その時点で次々printされるときと、スクリプトの最後にまとめてprintされる時がある。
詳しく調べてないんでどういう時に違いがおこるのかは分からん。
最近はバッファリングとかフラッシュも知らない奴が来てるのか
>>212 はいはい、あんたが物知りなのはわかったから、わかりやすく教えてやれ
pythonは、デフォでSTDIOもバッファリングするの?
バカはぐぐれ
調べればすぐにわかることを聞く奴ってうざいよね
あるオブジェクトの属性を追加するときに、属生名を文字列で指定する方法はありますか。 つまり obj.name = val を attr = 'name' obj.set_property(name, val) みたいなかんじでできないでしょうか。
本当に知りたいのなら問題の起きるソースくらい晒してくれないと聞く側にくらべて 答える側の負荷が高すぎて著しく不公平だと思う 答えるのは超能力者ではない
>>207 こうやる。
import sys, time
for i in range(11):
sys.stdout.write("%10s %d%%\r" % (("#" * i) + ("." * (10-i)), i * 10))
sys.stdout.flush()
time.sleep(1)
sys.stdout.write("\n")
ポイント:
1. \n(行送り)の代わりに \r(行頭に復帰)を使う。
2. 行送りをしないと画面に表示されないシステムがあるので .flush() を呼ぶ。
kterm とDOS窓では動いた。IDLE ではダメぽ。
>>220 obj.__dict__[name] = val
>>217 >>> setattr(a, "foo", 1)
>>> a.foo
1
>>>
>>222 __dict__という属性がないようですが。
obj = object()
obj.__dict__['foo'] = 123
を実行すると
AttributeError: 'object' object has no attribute '__dict__'
というエラーがでます。
>>224 自分でクラスを定義して、そのインスタンスオブジェクトならできました。
class Foo:
pass
obj = Foo()
obj.__dict__ #=> {}
setattr(obj, 'foo', 123)
obj.foo #=> 123
>>222 ,223 どうもありがとうございました。おかげさまで解決しました。
しかし、Pythonのマニュアルは充実してるのはいいんですが、どこに何が書かれてあるのかを
見極めるのが難しいですね。
今回も、リファレンスマニュアルで探そうとしたんですが、さっぱり見つかりませんでした。
難しい。
>
>>224 >>>class klass: pass;
...
>>> k = klass()
>>> k.__dict__["foo"] = 1
>>> k.foo
1
Old Style Classだとできる。
>>> class new_klass(object): pass; ... >>> nk = new_klass() >>> nk.__dict__["foo"] = 1 >>> nk.foo 1 あ,New Style Classでもできた(www
__slots__ 宣言があるクラスのインスタンスに対しては __dict__ が生成されないのでござるよ
ニンニン
そうなんです。 210みたいなのがやりたいんですが、 プリントされたのを一回一回消して上書きしてるんですか? キーワードを教えてください。あとは検索しますので。 答えてくださったかたありがとうございます。
232 :
124 :2006/07/11(火) 01:42:44
(´・ω・`)
233 :
126 :2006/07/11(火) 01:45:53
今日の発見:
pythonのdefやimportって、宣言文じゃなくて実行文なんですね。知りませんでした。
def f1(arg):
print arg
というのは、JavaScriptチックに書くと
f1 = function(arg) {
print(arg);
}
ということなんですね。実行時に関数オブジェクトを作成し、変数に代入してるだけ。
たしかに、これなら関数を「文がかけるlambda」として使うことに納得がいきました。
defは宣言文だと思ってたので、lambdaのかわりにdefを使うというのはすごく違和感があったんです。
ようやくわかったよー。確かにこれならlambdaを無理に拡張する必要ないですね。
>>170 >ていうかそもそも「lambdaに文を入れたい」っていう気持ちがあんまりわからないなあ。
ぜひとも文を入れたい、というわけじゃなくて、単になんで文が指定できないのかなと思ったのがそもそもの発端です。
でもPython2.4では3項演算子がないので、lambdaにif文を指定したいときはあります。
「cond and val1 or val2」でもいいんですけど、これは偽となる値をval1に入れられないので。
(入れるとcondに関わらずいつもval2が返されてしまう。)
一見ちぐはぐに見える仕様も よく見ると理にかなった理由がある それがPythonという言語であり 仕様が導き出されるに至理由を知ることこそが Pythonという言語を学ぶ楽しさであると思う
ご清聴ありがとうございました ====================終了======================
pythonを起動して >>> from test import test_support はうまくいくのに、スクリプトに from test import test_support と書いて実行すると ImportError: cannot import name test_support というエラーがでて困ってます。 test/test_support.py は sys.path に含まれるディレクトリのひとつにちゃんとあるので、 パッケージがないというわけではないと思います。 どなたか、考えられる原因をあげていただけますか。 環境:python2.4.3 on MacOS X
UNIXのコマンドを実行して、その出力を文字列としてうけとるにはどうしたらいいですか。 import os result = os.system("date") だとコマンドの終了ステータスが返るだけで、実行結果が文字列で返されるわけではないようです。
os.popen
>>238 import os
f = os.popen("date", 'r')
result = f.read()
f.close()
でできました。どうもありがとう。
でももうちょっと簡単にできてほしいな。
scipy使いたいのに事例が見受けられません
>>236 複数バージョンのpythonが入ってるとか?
sys.versionみてみるとか。
>239 行数けちりたいだけなら result = os.popen('command').readlines() とかでいいんじゃね?
>>236 2.4.3なら、OSXに最初から入ってるのと別だから、
>>242 さんの原因だと思う。
スクリプトを実行するのはどうやってるの?
「pythonを起動して」と同じように「python スクリプトファイル名」にしてる?
スクリプトの方に
print sys.path
って書いて実行しても、そのパッケージのディレクトリは表示されてる?
>>240 最近 SciPy の CG 法で連立一次方程式を解いて PyOpenGL で
シミュレーション結果を描画するコードを書いた俺がきましたよ.
自然科学のバックグラウンドがあれば数値シミュレーションが
必要になることもあるんだろうけど,俺にはそーゆーのが全然ない.
でも仕事で数値計算そのものを扱っていて,例題がたくさん必要.
つーわけで数値解析とか MATLAB とかその手の教科書を眺めて
例題を探してる.
>>240 さんの要求に合うか分からんけど参考までに.
246 :
245 :2006/07/11(火) 13:44:54
ん、待てよ。誤読した鴨。
>>240 さんが欲しいのは例題じゃなく導入事例か。
失礼しますた。
>>243 os.popen()が返すファイルオブジェクトをクローズしてないけど、それはいいんでしょうか。
>>234 >一見ちぐはぐに見える仕様も
>よく見ると理にかなった理由がある
>それがPythonという言語であり
>仕様が導き出されるに至理由を知ることこそが
>Pythonという言語を学ぶ楽しさであると思う
その「理にかなった理由」とやらを聞いもだれも答えられないどころか
逆切れするやつがいることについて
>>249 このスレを見てると、たいていはちゃんと答えてるよ
英文のURL貼り付けるだけ、というようなことも多いけど
>逆切れするやつがいることについて
逆切れしてるのは誰だろな(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
スレタイ失敗じゃない? 「敗北者」をはずしてから ギャグの質が落ちてる。
>>248 それいいはじめたら、あらゆるオブジェクトに対して
デストラクタ呼んでないんですけどいいんですか?って話になるような
>>248 .readlines() を実行し終わった時点でファイルオブジェクトを参照している
オブジェクトが無くなり、オブジェクトが破棄される。そのときに自動的に
ファイルが閉じられる。よって明示的に閉じなくても無問題。
既存のクラスに対して、サブクラスをつくることなしに、あとからメソッドとかを追加するようなことはできますか。 Rubyでは組み込みクラスだろうがなんだろうが、既存のクラスにメソッドを追加したり上書きしたりができて、 Ruby on Railsはそれを思いっきり使って、Webプログラミング関連の便利なメソッドを追加しまくってるんですけど、 もしPythonでもメソッドの追加ができるならその方法を教えてください。 なおこれはPythonとRubyとを比較したり優劣をつけるのが目的じゃなくて、 純粋にそういうことができるかどうかを聞いてるだけなんで、切れないでください。
>>253 デストラクタとclose()とは違うんじゃない?close()したからってオブジェクトがなくなるわけじゃないよね。
import os
f = os.popen("date")
s = f.read()
f.close()
print f # オブジェクトが表示される
ファイルを閉じることと、オブジェクトが破棄されることとは別だよ。
>>254 >.readlines() を実行し終わった時点でファイルオブジェクトを参照している
>オブジェクトが無くなり、
これほんと?ファイルオブジェクトを参照している変数がないだけで、
オブジェクト自体はGC走るまで存在しつづけてるんじゃないの?
>>255 class A:
def foo(self, x):
self.bar(x, x+1)
def bar(self, x, y):
print x, "+", y, "=", x+y
a = A()
a.__class__.bar = bar
a.foo(1)
>>256 254だけど、「これほんと?」はどこにかかっているの?
>>256 リファレンスカウンタだから、参照する変数がなくなった時点でGCされるんじゃないの?
259 :
256 :2006/07/11(火) 18:07:07
>>257 「これほんと?」は
>>256 で引用した箇所全体にかかる。
>>258 そうなんだ。
Javaだとどこからも参照されないオブジェクトはGCされないと破棄されないけど、
Pythonだとどこからも参照されなくなった時点で必ず破棄されるのね。
これは仕様なんだよね?
じゃあファイルを読み出すのは
content = open('file.txt').read()
ファイルに書き出すのは
open('file.txt', 'w').write(content)
というふうに簡潔に書けるね。
↓実験 >>> for i in range(10): print open("file.txt") <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> <open file 'file.txt', mode 'r' at 0x00A9A338> 仕様のどこ見ればいい?
ヒント : 最近はそういうことを気にしない 大規模なアクセス受けるサーバとかならべつだけど。
>>259 > 「これほんと?」は
>>256 で引用した箇所全体にかかる。
もちろん本当。
>>243 の
result = os.popen('command').readlines()
という文の実行が終わった時点でファイルオブジェクトを参照している
オブジェクトは存在しない。よってファイルオブジェクトは破棄される。
class A:
def foo(self):
return "foo"
def __del__(self):
print "deleted"
bar = A().foo()
print bar
このコードを実行するとまず "deleted" と表示され、次に "foo" と表示される。
つまり bar = A().foo() の実行が終わった時点で A のインスタンスが破棄されている。
264 :
256 :2006/07/11(火) 18:45:03
>>262 いや、気にするべきだろ。
ちゃんとわかってて、あえて気にしないなら別にいいけど、
わかってないから気にしないというのは技術者としてクソ。
>>263 さんくす。あとは、この動作が仕様として決まっているかどうかを知りたいんだけど、識者の人おねがい。
しかしリファレンスカウントGCにプログラムを簡潔にする利点があるとは知らなかった。
すごいぞPython。
>>259 ,
>>264 ファイルオブジェクトがGCの対象になるとcloseは自動的に行われるが、
自動でcloseするという機能は仕様で定められているわけではないので
将来なくなる可能性もゼロではない。よってclose()は書いておいたほうがいいと
「初めてのPython 第2版」p135-136に書いてあります。
267 :
256 :2006/07/11(火) 18:55:07
自分で確かめてみた。
Python(hoge.py):
-----
import time
open('foo.txt', 'w').write('hoge')
time.sleep(15)
-----
これを実行すると、プログラムが終了するまえにファイルに書き出されている。
つまり参照がきれるときにファイルオブジェクトが破棄され、そのときにファイルに書き出されていると思われる。
Ruby (hoge.rb):
-----
File.open('foo.txt', 'w').write('hoge')
sleep(15)
-----
これを実行すると、プログラムが終了するまでファイルに書き出されない。
つまり参照がきれてもファイルオブジェクトは生き続けており、
プログラムが終了するときにオブジェクトが破棄され、そのときに書き出されていると思われる。
改めて
>>254 と
>>263 に多謝。
>>260 何を知りたいのかわからないがリファレンスの2.1節と2.3.9節辺りを
読めば(・∀・)イイ!!んじゃないかと思う
>>257 ありがとうございました。やりたいことができました。
class Foo:
def f1(self): print "foo"
def f2(self): print "bar"
Foo.f2 = f2
obj = Foo()
obj.f1() #=> "foo" 既存のメソッド
obj.f2() #=> "bar" 追加したメソッド
これをみると、JavaScriptのようなプロトタイプベースに見えて仕方ないんですけど、
「Pythonはプロトタイプベースである」と言い切って問題ないでしょうか。
>>269 「プロトタイプベース」という単語の定義次第だろう
言語厨はそうやって、すぐプロトタイプなんとかとか 一見高尚そうな言葉を振り回したがるんだよな。 Python的には単にオブジェクトへの属性追加だ。
分類厨なんじゃないかな
何でこのスレの人間の多くは、自分より物を知っている人間を、すべて 「無意味な知識を集めるマニア」と決め付けたがるのだろう。 自分が物を知らないという可能性を検討しないのだろうか。
実際に使える役に立つテクニックとかだったら偉いと思うけど 「Pythonはプロトタイプベースである、で問題ない?」とか言われても だから何?好きにすれば?としか言いようがないだろ。
AjaxとかでJavaScriptを使い込んだ人間なら、「プロトタイプベースだよ」と 言われれば「じゃああのテクニックもこのテクニックも使える」と考えるんだ よ。君には利益はないかもしれないが、質問者には利益があるのだ。 また一見してすぐに役立つものだけが、価値があるとは限らない。オブジェク ト指向だって「なんの役に立つのか」と言う人が、まだいなくなったわけでは ないよ。
276 :
デフォルトの名無しさん :2006/07/11(火) 20:23:17
まあどっちもおちけつ。
277 :
269 :2006/07/11(火) 20:30:15
>>271 べつに高尚な言葉とは思いませんが、気に障ったのならすみません。スルーしてください。
>Python的には単にオブジェクトへの属性追加だ。
このへんがJavaScriptとそっくりなんで、これならPythonはプロトタイプベースなんだろうかと
いう疑問がでるのは自然なことでは?
Pythonにはclassというキーワードがありますが、もしかしたら中の仕組みはプロトタイプベースで、
classというキーワードはそれをクラスベースっぽくみせるためのものなのかなと思いました。
JavaScript2.0でもclassが導入されるそうなんですが、これもプロトタイプベースをクラスベースに
みせけかるためのシンタックスシュガーらしいので、Pythonも同じようなのかなと思って聞いてみました。
>>274 たかが2chなんで、興味ない人はスルーしてください。お願いします。
278 :
デフォルトの名無しさん :2006/07/11(火) 20:43:32
自分でやってみれば確認できることをなんでいちいち人に聞くかね?
279 :
デフォルトの名無しさん :2006/07/11(火) 20:52:12
>>278 答えたくない奴の方こそ答えたい奴にまかせてだまっとけばいいんジャマイカ?
黙ってると誰も答えず、教えて君が教えて教えてと連レスしてスレが死ぬ。
JavaScript やってる人は Python はクラスベースに見える? プロトタイプベースに見える? どっち?
参照されてないオブジェクトが削除されるタイミングは(GCの)実装依存
283 :
デフォルトの名無しさん :2006/07/11(火) 21:13:24
この質問者は、試せば分かることなんて聞いてないよ。これは定義の問題だか
ら。
まあ
>>270 のとおり、「プロトタイプベース」の定義次第だろう。実際のとこ
ろ、プロトタイプベースとクラスベースの間に、はっきりした境界線はないと
思う。
私見で言うなら、Pythonはプロトタイプベースではない。プロトタイプベース
の私の定義は、「クラスオブジェクトとインスタンスオブジェクトの区別がな
いこと」だ。私の知る限り、Pythonはそうではない。
具体的な話をすると、JavaScriptは、new Object() で作ったインスタンスに
適当にプロパティをセットして、それを別のコンストラクタのプロトタイプと
することができる。だけどPythonのクラスオブジェクトは、他のクラスの継承
はできても、インスタンスから継承はできない。
284 :
269 :2006/07/11(火) 21:17:38
>>281 最初はクラスベースかと思ってましたが、勉強していくうちに
プロトタイプベースに見えて仕方ありません。
>>257 なんかJavaScriptとほんと同じようにみえます。
285 :
デフォルトの名無しさん :2006/07/11(火) 21:19:41
自分の思った定義通りに動くのか、それを試せばいいだろ
286 :
269 :2006/07/11(火) 21:24:27
>>283 なるほど!すごくわかりやすい説明です。
たしかに、この説明ならPythonはプロトタイプベースではないですね。
たいへんよくわかりました。聞いてみてよかったです。ありがとうございました。
話はかわりますが、リファレンスマニュアルの索引
http://www.python.jp/doc/release/ref/genindex.html をSafariで読むと、文字化けします。
このページの86行目と2029行目に化けた文字が入っているようで、
これを削除したら正常に表示されるようになりました。
(たぶん日本語の最初の1バイトが入っているんだと思います。)
同様に、ライブラリリファレンスの索引
http://www.python.jp/doc/release/lib/genindex.html も86行目と6395行目にある化けた文字のせいで文字化けします。
チュートリアルの索引も同様でした。
ここでお願いすることじゃないとは思いますが、もしwww.python.jpの
中の人がいましたら、修正していただくようお願いします。
なおFirefoxだと化けた文字を勝手に「?」に変換してるみたいで、
文字化けはしませんでした。えらいぞFirefox。
最近自演が目立つな
メインで C と Ruby と C++ で、最近事情があってPython始めてみたけど、 JavaScriptと一緒でプロトタイプベースだなって思う。 Python自体にあまりなれているワケじゃないけど、あちこちにあるサンプルコードの 書き方を見る限り、そんな感じがする。 JavaScriptとかは好きじゃなかったんだけど、Pythonでプロトタイプベースな OOのいいところ学べればなって思ってる。
で ぷろとたいぷべーす ってナニ? 木馬?
木馬ならニュータイプベースだな
python はプロトタイプベースじゃないっしょ クラスを定義するのが普通だし
prothon w
東南アジアで7のパチ作ってた自動車メーカーみたいだなw
Pythonの場合 プロトタイプ「風」にも使える オブジェクト指向機能実装ということじゃね?
お題目なんてどうでもいいよ
296 :
283 :2006/07/12(水) 01:48:47
だからPythonはクラスベースだと言うのに。クラスやインスタンスに後付けでメ
ソッドをくっつけられたって、それだけじゃプロトタイプベースじゃないんだよ。
もう一度
>>283 を読んでくれよ。Pythonとは根本的には関係ないんだよ。
まあ読んでもこの文じゃ分からんか。プロトタイプベースは結構理解しづらい。
分かってしまえば、あっけに取られるほどシンプルなのだが。
JavaScriptを使う機会があったら、Pythonとどこが同じでどこが違うか、きっち
り学んでみても損はないと思う。
あと、お題目は大事だ。例えばPythonが「オブジェクト指向言語」だと意識して
こそ、その機能を生かした良いコードが書ける。デザインパターンなぞ、お題目
以外の何物でもないが、その重要性を否定するのは今やDQNしかいない。
空気の読めない言語オタが来ましたよ。
ほんとだ、空気の読めないただのオタが↑にいるよ。
時刻の1/100杪が偶数ならプロトタイプベース、奇数ならクラスベース さあ、どうだ?
・・・あら・・・ここの板は杪までしか出なかったのか・・・
301 :
283 :2006/07/12(水) 02:15:55
煽り合いは不毛だからやめようぜ。 あとな、日本で今Pythonに興味を持っているのは、はっきり言って言語オタばか りだと思うぞ。 ((Java or C# or PHP) and SQL) → ((Perl or VB) and JavaScript) → (C++ or Ruby) → (LISP or Scheme or Python) → (ML or Haskell) 職業プログラマが学ぶ優先順位として、正味 Pythonの位置はこの辺なんだから。 Haskellはちょっとブームだから、今はもうひとつ上ぐらいか。 だからな、今後も君らからすると言語オタばかりが来ることになるわけで、煽っ て追い返してもきりがないぞ。つうかこんな狭い世界で煽り合いをしても、 Pythonの先細りが進むだけだぞ。 Python自体はいい言語なんだから、もったいない話だと思うが。
また荒れそうな分類だな(w
>>301 普通の職業プログラマは指示された言語しか学ばねーよ(w
だから糞コードを大量生産して、趣味でプログラムをやってた新人に笑われるんだよ。
言語オタの分類は荒れる なぜなら空気が読めないから
>>301 'Python'を'Ruby'で置換するなら同意。
307 :
269 :2006/07/12(水) 04:21:42
ローカル変数の名前と値をdictとしてとりだすvars()という関数があるけど、 逆にdictをローカル変数の名前と値として設定してくれる関数はある?
俺はCとC++の代わりにPythonだな。 この二つの言語だけで必要十分だと思うよ。
で,Pythonさんのうち,どちらがパイさんでどちらがソンさん?
Pythonのインデントブロック、すばらしい。 ほかの言語だとブロックの終わりが連なって美しくない。 class Foo { def f() { for item in items { if item { print item } } } } Pythonだとカッコの対応を取らなくていいし、行数も短くなる。 class Foo: def f(): for item in items: if item: print item 美しいなあ。 でもIDEの自動整形とは相性が悪そう。
312 :
240 :2006/07/12(水) 09:49:36
>>245 お、共役勾配法!
私は大規模最適化の手法を色々試してみたいんですよ。
ちなみに学生です。いい本が無いんですよね…
Pythonのクールなところをおしえてください(><)
exec文で、ファイル名を渡すことはできますか。 例えば「exec "1+'a'"」を実行すると、ファイル名として「<string>」が 表示されますが、かわりに例えば「example.py」と出したいのです。 >>> exec "1+'a'" Traceback (most recent call last): File "<stdin>", line 1, in ? File "<string>", line 1, in ? TypeError: unsupported operand type(s) for +: 'int' and 'str' またファイル名だけでなく行番号も指定できる方法があれば教えてください。 よろしくお願いします。
help(compile)
>>315 codeobj = compile(source, filename, kind)
exec codeobj
でできました。
>>> code = compile("1+'a'", 'example.py', 'exec')
>>> exec code
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "example.py", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'
どうもありがとうございました。
あと、行番号の指定もできないでしょうか。
'\n' * number_of_lines + code_string
>>317 そんな方法があったか。どうもありがとうございます。
デザパタ厨、かもん!
>>313 > Pythonのクールなところをおしえてください(><)
pythonは、僕が知ってる○○○タイプの言語だなって気がつきだすと、その通りに見えてくるんだ。
そうして、pythonを使ってる他の人たちも僕と同じように○○○タイプ言語と思ってるし
○○○タイプに合ったプログラミングをしてると信じられるようになるんだ。
中には○○○タイプと思ってない人もいるけど、そういう人たちはちゃんと教えてあげる必要があるね。
教えてもわかんない人もいるけど、それは最初から僕らの仲間じゃないから無視しようよ。
つまり 全員Guido様の手のひらで踊らされていると そういうことですね
Python使い始めてから、仕事でJava使うときも いちいちthis書かないと気が済まなくなってしまいました。 まわりの顰蹙かってますが、負けないつもりです。
>322 わかるわかる〜
>>322 郷にいれば郷に従えという言葉もあるぞw
selfと書かないだけマシかww
@
漏れはselfじゃなくてmeだ タイプ数が半分だぞw
meよりはmyのほうがいいかなあ。 my.position = (10, 20) my.color = 'red' v = my.value()
myが自然な例だけ出してるだけじゃん。
iが一番短くてよいと思うます
this にすれば Java とか JavaScript と同じでよくね?
俺は ore にしよう
アンダースコアだよ 男ならな
女はどうするんだよw
アンダースコート?
山田君,座布団全部持ってって。
変数が定義されているかどうか調べる関数って無いですか?
name_of_variable in vars()
近所でモンティ・パイソンを借りられるレンタルビデオ屋がないんですが、 どうやったらお勉強できますか?
それは「ぐぐれ」なのか?・・
つべれ!
Pythonのパッケージシステム、使ってみたけどすごいな。 自分でパッケージを作ってみたら、すごく簡単にできた。 PHPのパッケージは作るの大変なんだ。XMLファイルをちまちま書かなきゃいけない。 それに比べると、Pythonはsetup.pyが簡単にかけて、しかもパッケージングもインストールも 同じスクリプトでできる。すごいぞ。 あと、アンインストールの方法がわからないんだけど、一度インストールしたパッケージを 削除する方法ってある?
rm -rf /path/to/package
debとかrpmにしておくとか。
# xeyes起動させまくりスクリプト import os w = 125 ; h = 100 for y in range(0, 1024, h): for x in range(0, 1280, w): os.system('xeyes -geometry %sx%s+%s+%s &' % (w, h, x, y))
349 :
デフォルトの名無しさん :2006/07/14(金) 01:53:23
この意見に賛同される方は、「ゴリバー万歳!」と2回書き込んでから、前歯を黒マジックで塗りPCを壁に叩き付けて、「ライトは4つだ!!」と叫んで下さい。
つまんねーんだよ。ワラ
>>348 ガーン
古いパッケージと新しいパッケージとでファイル構成が違う場合、
新しいパッケージをインストールしても古いパッケージのファイルが一部残ることになります。
またuninstallができないと、お試しinstallができなくなります。
これはいくないと思うんですけど。残念です。
古いファイルの一部は残っても、新しいモジュールから ロードされないから、動作に影響ないでしょう。という感じかね…。 ごみファイルが気になるんだったら 自分でパッケージにすれば>debとかrpmとか。。
ゴリバー万歳!
ゴリバー万歳!
てゆーか、
>>351 他の人も言ってるけど、setup.py で Windows 用のインストーラとか
Linux 用の deb とか rpm とか作れるのは知ってる?
パッケージ単位のインストール・アンインストールが必要なら、
パッケージ管理機能のある OS を使うのが筋だよね。
例えば Windows とか Debian 系 Linux とか赤帽系 Linux を使う。
少なくともこれらの OS では setup.py があれば
パッケージ管理機構で入出力可能なパッケージが自動生成できる。
ソースと一緒にバイナリが配布されていなくても
コンパイラを持っていれば自分でバイナリパッケージを作れるんだよ。
アホかお前
どっかに PlanetPythonJapan の代用になるサイトはないもんかねー。 あそこでウォッチしてたrssのリストを控えてないので、自力で巡回すらできん。
IronPythonの入門に使えるページって何かないですかね。
Pythonでネイティブのバイナリ実行形式を出力する方法はありますか?
py2exe
PyInstallerがいい感じだった
でもどっちも「ネイティブなバイナリ」って言われると微妙か。
むしろスタンドアローン
SCons使ってる人いる?
djangoのマニュアルがめちゃくちゃで困ってます。 version0.95のマニュアルに、0.91をインストールさせる方法載せたままにしてたり、 auto admin立ち上げたはいいけど、usernameとパスワードは何を入れればいいのか どこにも書かないまま、話が進んじゃったり…
↑こういう人はフリーソフト使わないでほしい
あ、パスワードはsyncdbのときにつくれるんですね。
eclipseのコンソール上で実行するとスルーされちゃうから気づきませんでした。
でも、インストールのマニュアルはおかしすぎですよ。
0.95と0.91分けてる意味が無いです。
なんで、
>>366 みたいなこと言われる筋合いは全く無いです。
それは本家?それとも翻訳?
どうやら翻訳への文句のようなので,補足しときます. Djangoの公式リリースは0.91で,0.95は出ていません(現在Subversionのtrunkにあるコードが0.95 相当と考えられているだけです)従って,「公式リリースのインストール」は0.91のインストールになります. 一方,現状で0.95相当のDjangoをインストールするには,Subversionから取り出すのが普通です. 翻訳はできるだけ本家の内容に合わせてあります.本家の内容も翻訳も,0.91と0.95をごっちゃ にしているわけではありません.0.91が古いリリースで,新たに使ってみたい人はSubversionから取り出す べき,というのはnoteにも書いてあるので,よく読んでね. とはいえ,いささかミスリーディングな部分もあるんで,訳者注をつけておきました.
>>369 そもそも0.91と0.95で、ドキュメント分けてるのに、
0.91のインストールが一番上に出てる時点でおかしいよね?
本家も翻訳も、0.91のインストール法が先頭に出てる。
ノートなんて書かなくても、0.91のインストールを消せばいいだけのはず。
>最近, Django には後方互換性のない変更が加えられました.
ともあるけど、それがpart1のsyncdbでいきなり出てくるくらいなんだから、
冒頭の0.91のインストール残しておく意味なんて全く無いじゃん。
実際エラーメッセージで検索すると、同じように0.91インストールしちゃって
syncdbでコケて、無駄なトラブルくらってるひとが世界各国で見受けられるし。
よく読んでねなんていう前に、まともに読めるマニュアル書いてほしいよ。
>>366 みたいな態度を貫くのなら、普及なんて考えてないだろうから
かまわないんだろうけど。
>>370 たしかにな。
それを本家に提案してみたらどうだろう?
翻訳している人は、注釈はつけられるけど基本的に本家のドキュメントを翻訳するだけなので、
本家の方をまず直してもらうべき。
こんなとき、どんな英文を書けばいいのかな。
はぁ.「よく読んでね」が気に障ったのなら謝ります.
ただ,*あなた*には悪いけど,私自身は公式リリースの入れ方の次に開発版の入れ方を説明する,
という順番に納得しているので,私の手元の翻訳については,本家のレイアウトが変わらない限り
変更するつもりはありません.お怒りはごもっともですが.0.95か1.0の公式リリースが出るまで我慢してね.
あと,
>>366 への怒りをこっちにぶつけるのは勘弁.
なんかキモいな。
自演かな
キモイって自覚してるのかな
いや俺が一番キモイよ。
いや、俺の方がキモい
不満だけをぶちまけて何もしない奴は徹底的に叩かれて然るべきだと思うよ。 そもそもそんな奴に発言権なんてありませんからねぇ。 いったい何様のつもりなんだ?
俺様
つ 10円
>369 厨の相手乙。めげずに翻訳がんがってくれ。
フリーで提供されているものに対して「めちゃくちゃで困ってます」みたいな暴言を 吐く人は相手にしないほうがいいよ。はっきり言ってキチガイだと思う。
フリーソフトつかってみたー>ダメ過ぎてつかえねー>むかつくのでパッチつくったー>GJ
フリーソフトつくってみた > 誰からも相手にされない (´・ω・`)
IronPythonを使いまわしたいがためにVS2005standard(アカデミック版)を 買ってしまった。一応、IDEとして機能する。 ・カラーリング、補完、リファクタリング、クラスブラウザー等OK ・そのためには C# & C++ をインストールする必要がある。2G 程占有。 ・コンパイルできる。(.NET 中間コード) 巨大なゴミと言えなくもない。 このうえでSQLObjectやTurboGearsはインストールできるのだろうか? できたとしたらどういう動作をするのだろうか?
>>385 Express版にすりゃよかったのに。タダだし。
>>386 express版は extensibility (addins & packages) をサポートしてないので
pythonintegration を使えないんですよ。
csvモジュールはUnicodeが使えないのな。 Python3.0が出るまでここままなのかな?
TurboGearsやDjangoってcgiでどうやって動かすの?
#! /usr/bin/env python
391 :
デフォルトの名無しさん :2006/07/19(水) 06:37:21
railsとは違いcgiでは動かない。
>>391 Djangoはcgiで動かすことは可能とか書いてあったけど…
可能なだけで手段は提供してないのね。残念
393 :
デフォルトの名無しさん :2006/07/19(水) 13:04:35
>>392 CherryPyは何度かやってみたがだめたった。
Djangoはドキュメントを読んでやめてしまった。
どこに書いてあったか教えてほしい。
なぜそこまでしてCGIに拘るw
>>394 thanx
確かにDjangoはcgiで動かすことはできるようだ。
最初にDjangoで試せばよかったな。
>>395 SFとかだとcgiしか許可されていないので。
Welcome to the Django!! shananananananananananananana
398 :
デフォルトの名無しさん :2006/07/20(木) 01:28:36
(・∀・)ねーねー、あのね。 このなかPython vs Ruby vs PHP vs Perl ではPythonが一番いいの? by女子高生
>>398 >ではPythonが一番いいの? by女子高生
っぽい無職の17才と、SEXして捕まった山本さんですか?
>398 悪いことは言わないからWhitespaceにしときなさい。 と言われたら素直にWhitespace使うのかねチミは。
つbrainfuck
っ正しい日本語
つBoo
Booなんて言語があったのか。 今度批評したるかな
あなた誰ですか
406 :
デフォルトの名無しさん :2006/07/20(木) 21:00:14
マイケル保井です
407 :
デフォルトの名無しさん :2006/07/21(金) 00:05:25
女の子にはやさしくしろー
たまぁに、Python狂信者の他言語(できればPHPとかRuby)叩きが見たくなる。 そういう古典的燃料、どこ行けば見られるかね。このスレは理知的過ぎてダメだ。
ググレカレー
>>408 Pythonの狂信者って思いつかないのだが、過去に誰がいた?
よく読んでいませんが、いいと思います
pythonのfrom importが素敵。
機械化星で暴れてみたら?
何の話?
VIPいけ
チュートリアルが難しい。しかも、これを12章まで理解できたとして(できないが)、 8章からなる同じような目次、リファレンスマニュアルが控えてる。 このスレでレス付けてる奴らは、こんな内容を当然の如くこなせるんだよな。 化け物どもめ。みんな頭いいんだな。
とりあえず使える機能から使ってって、分かんなくなったら 当たりをつけてから読むのが正しい読み方なんじゃない? チュートリアルの難しさの起源は、もともと日本語じゃないものを 日本語に訳したせいでニュアンスが分からなくなってる点に あると思うんだけど。
>416 リファレンスマニュアルなんて読んだことないぜ
>>416 バカだな。必要な機能しか読まないにきまってんじゃん。
lib/python/ あたりを読んでテキトーにあたりをつけましたハイ。 コードはペンよりも強し。
>>416 チュートリアルは斜め読みで、ライブラリリファレンスのほうが読みやすい。
端から端まで読んで憶えようなんて思考してるうちは駄目
チュートリアル、他の言語に比べれば断然いいと思うけどなぁ。 下手なサイトで勉強すすめるよりよっぽどいい気がする。
付属チュートリアルはずぶの初心者にはキツイ気がする。 インスタントハッキングとインスタントパイソン読んだほうがマシ。 その後で、改めてチュートリアルに目を通すと良し。
それじゃ大学の夏休みにpython始めますね。 今は試験期間中なんで。
なぜ始めていないのに、このスレ読んでたんだw
勉強しなきゃならない期間なんて、 全力で他のことに逃避するに決まってんじゃん。掃除とか2chとか。 でもほんとうに労力のかかることはしないんだよ。これ大学生の常識。
例示が掃除なのが切ない。ガベージコレクトよろし
>>416 あんなの翻訳が酷いから理解できる方がおかしい
仕事してほしいときに全力でGCに逃避するVMがあったら嫌だな
>>423 「初めてのPerl + 続・初めてのPerl」よりは安い。
ページ単価も。
まあまあ でもわけたほうよくないか
435 :
初心者 :2006/07/22(土) 19:24:28
>>423 の1時間で覚えるPython見てやってみた。
環境:Windows + Python 2.4.3 + IDLE 1.1.3 + Python shell
print "abcdefg"[0]
print "abcdefg"[3:4]
print "abcdefg"[-3]
を実行すると
a
d
e
こうなったんだけどなんで?
a
de
efg
が返ってくると思ったのに・・・
なんで下の値が返ってくると思うのかが逆にわからん。
>>435 そういう時は「なんで?」じゃなくて「またひとつpythonのことが分かったぞ」と思いなさい。
438 :
初心者 :2006/07/22(土) 19:32:37
>>436 いや
>>423 の1時間で覚えるPython に書いてあったのよw
で、1番目と3番目は良いとして、2番目はdeが返ってきて欲しくない?
なんとなく。
print "abcdefg"[0] # => a print "abcdefg"[-1] # => g print "abcdefg"[-2] # => f print "abcdefg"[-3] # => e
s[a:b] は始点が位置 a で 長さが b-a になるようになってるんよ
始点は含む、終点は含まないという仕様はインデキシングが0オリジンの言語 (つまりほとんどの言語)と相性が良いのだよ 長さnの列全体(つまり0からn-1まで)は[0:n]と表記できることから想像できんかね?
matlabとか使ってると最初は驚く。
443 :
初心者 :2006/07/22(土) 19:51:04
>>440 、441
なるほど。
print "abcdefg"[0:7]
print "abcdefg"[3:5]
print "abcdefg"[-3:-1]
とかやってみて納得しました。
それ以前に
>>423 氏紹介の文章を読み違えてました。
print "abcdefg"[-3:]
で、最後のコロンが見えていなかった・・・。
これですっきりしました。
失礼しました。
スライスは、インデックスが文字と文字の間に振られている(最初の文字の前が0番)と考えて、 moji[a:b]のとき、インデックスaとインデックスbの間に挟まれた文字が得られる、と考えるとわかりやすいと思う。
0 1 2 3 4 5 あ い う え お
>>444 はいはい、請け売り乙
見聞きしたことを、さも自分が考えたように言ってるとそのうち恥書くよ。
誰でも知ってるだろ普通
誰でも知ってることを、さも自分が考えたように話すのはバカ丸出し。
誰でも知ってることを、さも自分が考えたように話したと勘違いするのはバカ丸出し。
一般的に、とか、と言われている、とか付け加えないとダメってこと?
>423 他言語の経験があれば標準 tutorial はとてもよいと思う。 (他言語の経験なしの立場で読んだことないからそっちの評価は分からない) 初めての python 第1版はむしろ分かりにくかったけど。 本当の初心者なら 「python で学ぶプログラミング作法」の方が良いのではないかと。 >442 普通 matlab の仕様に驚くもんだろ... とはかぎらんか...
Pythonの宿題スレはありますか?
>>451 matlabしか知らなかったので…
ごめんなさい、一応だいがくせいです
>>451 世の中には、
「機械翻訳の(またはそれを下訳にした)日本語が、どうしても頭に
入らない」という病を抱えた人がいるのだ。まあ俺だが。
「はじPy・2版」はこなれた日本語だから、それだけでもありがたいよ。
MATLABの記法はPythonに慣れているとは本当に混乱するけど、概して
プログラミング以外の専門家には、MATLABの記法のほうが評判がいいようだ。
>>452 ない。丸投げはあきらめて、ちゃんとした質問にまで練り上げるのが吉。
宿題スレがあったら参加したいけど、Pythonで宿題が出ることなんてないからな・・・。
あるといえばある
進んでいるか偏屈な講師がいるか、どちらにしてもいい学校だな…。
matlabと同じ書き方でpythonが使えたらなぁ…
python と同じ書き方で matlab 使えればなぁ…
一次元の配列[1,2,3,4,5,6,7,8,9]を二次元の配列 [[1,2,3],[4,5,6],[7,8,9]]みたいに一発で出来る便利関数みたいなものはないですか? 自分でやっているのは、 count=0 k=[][] for item in seq: x=count%div y=count/div k[x][y]=item count+=1 みたいに、countをインクリメントしつつ、商と余りを使って、x,yの位置を決めてます。 seq.split(3)みたいに入れたら、[1,2,3,4,5,6,7,8,9]を [[1,2,3],[4,5,6],[7,8,9]]みたいにしてくれたら楽なんですが。
ありますよ
>>463 >>> seq = [1,2,3,4,5,6,7,8,9]
>>> k = [seq[0:3],seq[3:6],seq[6:9]]
>>> print k
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> def split_array(unit_size, src):
dest = []
for i in range(len(src)/unit_size):
dest.append( src[i*unit_size : (i+1)*unit_size] )
return dest
>>> split_array( 3, seq )
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>463 >>> import Numeric
>>> a = Numeric.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = Numeric.reshape(a, (3, 3))
>>> b
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
>>>
>>> a = range(3*4) >>> a [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] >>> [a[i:i+4] for i in a[::4]] [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]] >>>
>>463 >>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = [a[i:i+3] for i in range(0, len(a), 3)]
>>> b
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>>
469 :
463 :2006/07/23(日) 08:11:32
うおー、いっぱい例を出してくれてありがとう。
numeric だけ意味合い(作業対象)が違うけど >463 はむしろ numeric を使うべき作業をしているっぽいね
Numeric便利そうだな。傍観者だがこのスレは勉強になる。
pythonを使ってないけど勉強になるな
imagemagickをpythonから使ってる方おりますか?
474 :
473 :2006/07/23(日) 12:30:51
pythonmagickがコンパイルできなくて夏
PIL使えよ。
Numericって標準モジュールじゃないのね。
追加の仕方がわからんのでいろいろぐぐったらこんなページを発見
ttp://code.enthought.com/enthon/ 2D plotting libraryとかData Visualization Toolとか
Fortran to Python interface generatorとかScientific Libraryとか
数値計算→プロットてな使い方をする人向けのパッケージかな?
(自分は元Fortranプログラマ)
SQLiteとかテスト用フレームワークなんかも入っているので
ありがたく使わせていただくことにしました。(−人−)
ちょっと urllib2 の使い方で困っているので分かる方いたら返事ください
import urllib2
url = '
http://... '
for line in urllib2.urlopen( url ):
print line
と入力したらうまくいくのですが
a = [ '
http://... ', '
http://... ', '
http://... ' ]
for line in urllib2.urlopen( a[0] ):
print line
と入力したらエラーが返ってきます。
原因は何でしょうか?
478 :
477 :2006/07/23(日) 18:04:08
エラーは以下のとおりです
Traceback (most recent call last):
File "<stdin>", line 1, in ?
Flie "C:\Python24\lib\urllib2.py", line 130, in urlopen
return _opener.open(url, data)
File "C:\Python24\lib\urllib2.py", line 350, in open
protocol = req.get_type()
File "C:\Python24\lib\urllib2.py", line 233, in get_type
raise ValueError, "unknown url type: %s % self.__original
ValueError: unknown url type:
http://...
print a[0] やってみて
>>477 再現できないなぁ。うちではうごくし。
---そーす
import urllib2
a = ['
http://google.co.jp ','
http://yahoo.co.jp ','
http://infoseek.co.jp ']
for line in urllib2.urlopen( a[0] ):
print unicode(line,'sjis')
--結果--
<html><head><meta http-equiv="content-type" content="text/html; charset=Shift_JIS"><title>Google</title><style><!--
body,td,a,p,.h{font-family:;}
省略
---
>476 part 9 からコピペ: Numeric...老舗.開発資金が切れて解散を宣言.ボランティア開発に移行して まだ積極的に使われている.NumPyといったら普通これのことで,numpyと は別物. numarray...Numericの開発停止後主役になると思われたが,乗り換えが進ま ず分裂.開発資金は近々切れる,ボランティア開発に移行する.まだ積極的に 使われている.画像処理とかオブジェクトアレイが売り. SciPy...コア部分でNumericとnumarrayを使っている.コアの一本化のために 独自にscipy_coreを開発していた(numpyに名前を変えた).最終的には numpyを使う予定.多分Enthoughtの寄付とかnumpyの有償マニュアルを資金 源にしてる.それなりに使われている. numpy...Numeric/numarrayの置き換えを狙ったscipy_coreが名前を変えた もの.ライブラリをまとめたい向きには好評だが,numpyのマニュアルが有 償なことにユーザが反発.資金あつまってんの?苦しみながらも開発進行中. Numericの7-8割くらいの機能サポート.numarray独自のライブラリはあまり 取り入れられてない. ScientificPython...このプロジェクト生きてんの?中ではNumericを使ってるはず.
Numeric 他の日本語な情報源ってあまりないよね? numarray だけはでかい日本語マニュアルが増田さんところで 提供されているけど。 ってか翻訳だけとってもスゴいですよね、アレ...
483 :
476 :2006/07/23(日) 18:56:50
>>481 なるほど。
情報感謝です。
まだPython自体を勉強中なので、これらの機能に手をつけるのは
まだ先になりそうですが保存させていただきました。
すみません、SciPyを、Fedora Core 5にインストールできません。
アドバイスをいただけないでしょうか?
http://www.scipy.org/Installing_SciPy/Linux #yum install numpy
#yum install lapack-devel blas-devel
の後 scipy-0.4.9.tar.gz を /usr/local/src/ に置いて展開し、
#cd /usr/local/src/scipy-0.4.9
#python setup.py install >& install.log
とやったのですが、Pythonの対話画面で、以下のようになってしまいます。
>>> from scipy import *
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: No module named scipy
なお、install.logの内容は以下のとおりです。
# cat /usr/local/src/scipy-0.4.9/install.log
/usr/lib/python2.4/distutils/dist.py:236: UserWarning: Unknown distribution option: 'configuration'
warnings.warn(msg)
running install
running build
running config_fc
485 :
484 :2006/07/23(日) 20:36:02
486 :
477 :2006/07/23(日) 22:42:21
>>479 すいません、上記で示したソースは簡略のため a に入れる値をはしょって書きました。
正確にaの初期化を書くと
import from string import Template
s = Teamplate( 'http;//www.google.co.jp/$d/index.htm' )
a = []
for i in range(10): // ここで連続した URL を代入する
a.append( s.substitute( d=i ) )
これで a の値を初期化後
for line in urllib2.urlopen( a[0] ):
print line
を行うとエラーが発生します。
>>477 で示した方法で a の値を初期化するとエラーは発生しませんでした。
http; → http:
488 :
477 :2006/07/23(日) 23:30:59
http; → http: に直しましたがだめでした
Template クラスを使ってできた オブジェクトは
引数に使えないのでしょうか?
しかしながら
>>>isinstance( a[0], StringType )
True
とでるので文字列の型のリストであると認識しているのです
普通に
url = '
http://... '
>>>isinstance( url, StringType )
Ture
とでるから 型が違うからエラーがでているとは思えないのです
心配なら str(a[0]) とかやれば?
>>486 import from string import Template
↓
from string import Template
s = Teamplate( 'http;//www.google.co.jp/$d/index.htm' )
↓
s = Template( 'http;//www.google.co.jp/$d/index.htm' )
for i in range(10): // ここで連続した URL を代入する
↓
for i in range(10): # ここで連続した URL を代入する
先頭にimport urllib2
を追加。
for line in urllib2.urlopen( a[0] ):
print line
↓
try:
for line in urllib2.urlopen( a[0] ): print line
except urllib2.HTTPError:
print 'そんなurlはない'
>>486 ちゃんと正直に使ってるソース張ってますか?
エラーは再現しませんよ。
実在しないURLだと問題の切り分けの邪魔になるので、実在するURLにしました。
--ソース--
from string import Template
import urllib2
s = Template( '
http://www.tenki.jp/area/a3$d.html ' )
a = []
for i in range(10):
a.append( s.substitute( d=i+1 ) )
print a
print type(a[0])
for line in urllib2.urlopen( a[0] ):
print line
495 :
477 :2006/07/24(月) 00:09:45
色々返答ありがとうございます
細かいタイプミスなど修正し、
>>477 では unknow type とでてたのですが、
今度のエラーは HTTPError 404 だったので、
タイプミスしていたようです
しかし、
>>477 とではエラーの内容が違うので なんともえないし、再現も
できないのでタイプミスだったようです
どうもありがとうございました
print a[0] は
'
http://... ' と期待どおりに入ってました。
※404 でも読み込んで欲しいんだけど エラーで止まるのね
>>495 ライブラリを疑う前に、自分を疑おうね。
497 :
477 :2006/07/24(月) 00:22:54
>>496 疑ってねぇよ
使い方を聞いただけだアホ
498 :
477 :2006/07/24(月) 00:24:13
ついでに言うと types とか言ってる時点で分からんかって 相手のレベルの推測もできないんだろうね どこらへんで悩んでいるかをな
素直になれよ。
やれやれ夏だな。
夏ですねぇ
502 :
477 :2006/07/24(月) 00:37:22
無能が上司ってほんとヤだな
あんまりいびると粘着するぜよ。
505 :
477 :2006/07/24(月) 00:41:05
暇なん? 暇なのね
506 :
477 :2006/07/24(月) 00:41:23
タイプミスで悩んでいました。
自演も可能ですからねぇ〜
ごるぅぁぁぁ!われぇ、まだうろちょろしくさっとんかぃ!! 人がちょっと黙っとったら調子のりくさりやがって!
509 :
477 :2006/07/24(月) 00:47:24
夏休みの間にPythonをマスターしたいです。
エスケイコンサルタント(有)の泉と申します。 イベント関係と中国貿易を行っています。 イベント関係では、音響、照明、会場設営、人材派遣を 行っています。 リーズナブルな金額で行っておりますので商店街さまのイベントに、ぜひご利用ください。 中国貿易では、チラシ、パンフレット、名刺等の印刷 イベント景品、アロマテラピーのお香、石鹸、ハンドクリーム等、工場直接オーダーで格安にて提供可能です。 ぜひ、各商店様へご紹介ください。 会社のプロフィールを添付いたしますので、どうぞよろしくお願いいたします。 エスケイコンサルタント(有) シニアマネージャー 泉 誠一 TEL/FAX 044−722−6809
大原に美味しい釜飯屋さんがあると聞いたのですが、いったいどこなのかさっぱり分からなくて>< 是非教えてくださいませm(__)m
最近はタクシー強盗が多発しているので、大阪でこんなんは全然珍しくなくなった。 「こらぁ、おのれぇ、誰にその口聞いとんねん!われぇ、強盗かぁ?われぇ、反対に 刺したろかぁ!こらぁ!」 と世の中に恐いものなしの大阪の海千山千タクシー運転手さん。
国民的RPGである『ドラゴンクエスト』シリーズの最新作が、4年ぶりに登場です! 出荷本数は2004年12月中旬現在で300万本超と ... 覚える特技は、戦闘に役立つ便利な ものから、思わず吹き出してしまうようなおもしろいものまで、多種多様となっています。
515 :
デフォルトの名無しさん :2006/07/24(月) 00:52:39
夏休み進行
能界を目指すアタシ・真鍋かおり(偽名)のあそこだけの話!ちょっぴりHなウラ情報 をヌルリンと発信します!ヌルリンって言っても、排水溝のヌルヌルさとかではなく、 粘膜のヌルヌル感(=地域密着型)ですよ〜つ!うばば!
517 :
477 :2006/07/24(月) 00:58:23
おんなのこといっぱいいっぱいいろんなことしたいです
518 :
477 :2006/07/24(月) 01:00:07
つっくりましょ〜♪ つっくりましょ〜♪ さてさてなにが でっきるかな?
519 :
477 :2006/07/24(月) 01:00:40
もうねむいです。
520 :
477 :2006/07/24(月) 01:00:55
使えない上司は質問を正確に行っても使えない
521 :
477 :2006/07/24(月) 01:02:05
使えない部下は誤字脱字が多い。
Pythonスレの住人は幼稚な荒らしに耐性があるのがえらいよなー
ミスを注意すると逆ギレする 人がらも悪い 能力に問題がある上努力もしないため プロジェクトから外して窓際に追いやったら翌日に来なくなりました 連絡もなく数日経つので、内規により退職扱いになっています 皆様におかれましてはご迷惑をおかけして申し訳ありません 477が犯罪に走りこれ以上他人に迷惑をかけることがないよう 温かい目で見守ってやってください
524 :
477 :2006/07/24(月) 01:25:47
だから だれも 隙をつ くらな くなる 当たり前ですけどね
ごめん...3日前くらいから便秘で...
何だよ
ということは5日くらいうんち出てないのか?
>>522 幼稚な荒らしばかりが目立ち、Python自体の話題が少ないのもあるけどね。
>>528 以前は確かに荒らしが目立ったけど
最近はそんなことないでしょう
ここ数ヶ月のPythonスレの流れは好きだな
528見たいな幼稚な書き込みは嫌いだけど(www
ここ数ヵ月はともかくここ2,3日は嫌
Pythonは好きなんだけどコンパイルが苦手だなぁ。 MeCabをPythonから使いたいんだけどコンパイル通らなくて。 Pythonの前にCの勉強からやらないとダメなのね。愚痴ですた。
MeCabのコンパイルに失敗してるだけじゃねぇの。
Cの知識なんか必要ないんじゃ
「おれは難しいことをやってる」感に酔いしれる厨房ですた。
「おれは厨房よりえらい神様なんだ」感に酔いしれる暇人でした
また嫌な展開になってきましたょ
なぜこのスレにガキが張り付くのか。
538 :
デフォルトの名無しさん :2006/07/24(月) 21:29:29
夏が来たのさ。
夏来た厨
夏が来たにしても、Python好き以外には、そんなに面白いスレじゃないだろうに。 煽りにものらないしさ。
煽り房
結論 : やっぱりPythonの話が一番楽しい
543 :
デフォルトの名無しさん :2006/07/24(月) 22:39:47
FedoraCore5(KDE)でIdle(ver1.1.3)を動かすと、 キー入力をまったく受け付けなくなる事があるんですけど。 他のアプリはちゃんと触れて、Idleを再起動すると問題なし。 こんなもんなんですか、こいつは?
フリーソフトを何だと思っているんだ(笑)
Pythonの話しようぜ。
Python2.5のリリース予定。 ver. 年月日 状態 alpha 1 2006年4月5日 済 alpha 2 2006年4月27日 済 beta 1 2006年6月20日 済 beta 2 2006年7月11日 ←今ここ rc 1 2006年8月1日 予定 final 2006年8月8日 予定 release 2006年8月19日 予定
PEP: 308 Title: Conditional Expressions On 9/29/2005, Guido decided to add conditional expressions in the form of "X if C else Y". [1] こんなの入れんの?
mood = "ツン" if 547 in shame else "デレ"
perlの$addr = ($tmp == 10) ? "age" : "sage"; なんかよりは覚えやすそうだけど、結局使わなそう
comment = "ガッ" if "ぬるぽ" in log else "ぬるぽ"
Cと同じだべした。すぐに覚えられる。
>550 バグじゃないか?
553 :
552 :2006/07/25(火) 08:43:43
>550 ごめんバグじゃないや。
DebianのUnstableにPython2.5はいった。
>>550 こういう書き方ができるようになるって事は
A = B if cond
とか
sum += i for i in range(10)
とか書けるようになるって事?
じゃなかったら、ちょっと気持ち悪いかな・・・
A = B if cond else None 下は sum += [i for i in range(10)] こうくくりたいのか (sum += i) for i in range(10) こうくくりたいのか明確じゃねー はっきりしたコードを書け
>>557 上は if cond: A = B と同じ意味のつもり。cond が False なら A は変更しない。None を代入しない。
下はもちろん後者の合計(sum)を意図してる。てか前者の意味なら sum += range(10) で済むよね。
角カッコつけてないから、包括的表現との曖昧さはないと思うんだけど…。
てかごめん。これはあくまで文修飾があったらの仮定だから、マジレスされても……。
つまり、2.5でも文修飾はできないって事でFAだよね? 別にアンチとかではなく、興味。Python は面白い。
> 上は if cond: A = B と同じ意味のつもり。cond が False なら A は変更しない。 None を代入しない。 明示されなかったら、飛ばされるで良かったっけ?None代入は怖いなぁ。
新しい機能が増えたからといって 今まで使えているんだったら、今までと同じように使えば良い。 新しい文法でかいたからといって、分かり易くなるとも一概に言えない。
同じことを2種類の書き方でできるというのはPython風味じゃないんだよな。 同じ流儀でしかプログラムが書けないというのは人の書いたプログラムを読むときは 大きな利点になる。
何種類もの言語をやってきましたが トリッキーで短い行数より すこし冗長でも集中力がとぎれれ眠いときにでも 頭には言って気やすい視覚的なソースの景色のほうがやりやすいと 私は思います。
>>562 一杯のんでて、誤字だらけですみません。(;;
564 :
デフォルトの名無しさん :2006/07/25(火) 21:43:18
X if C else Y って需要があったから、渋々新機能として入れたんでしょ? Python の思想とは、毛並みが違っている気がする
勉強をかねて掲示板CGI作ってます。
>sum += i for i in range(10) も十分キモいコードだと思うんだけど
普通に for i in range(10): sum += i にすりゃいいのにね。タイプ量ほとんど変わらん。 二項演算子は便利っぽい気もするけど、読みにくいからなぁ。 A = B or C はよく使うけど。
なんだかPythonもだんだんきもくなって来るね。
VHDLみたいにa= b when c==0;とか
clk'event
>>570 俺もここ最近、苦い思いで見てる。
ライブラリは大きくなってほしいけど仕様は大きくなってほしくない。
利用者が増えるのはいい事なのか悪いことなのか・・・・ オタが「俺様のメインの言語みたい書き方は出来ねーのかよ!」 なんて言い出して、しかも偉いオタだったりすると採用せざるを得なくなる、みたいな。。 あんまりきもくなると早急に1抜けちゃうぞヽ(`Д´)ノ
Guidoです。 Python 3.0はもっとキモいから楽しみにしてて!
あ、そうそう、もしきもくするなら冗長に書いたときに最も速くなるような実装をしてください。
乗り換えやすさって意味では、良いのでは。 乗り換え初期は、前の言語の癖が抜けないし。 しばらくPythonやって他のソースみてれば なれてくるよ。
構文は単純な方が乗り換えやすいもんだ キモ複雑にしてどーする 充実したモジュールと整備されたドキュメントこそ大事
普通に三項演算子 ? : いれた方がよかったんだと思うけど、そうできない理由があったのか?
>>580 ああすごい同意。
なんで三項演算子入れないで、あんなきもい
構文入れるんだよ。
? : のがいいよなあ Many C-derived languages use this syntax: <condition> ? <expression1> : <expression2> Eric Raymond even implemented this. The BDFL rejected this for several reasons: the colon already has many uses in Python (even though it would actually not be ambiguous, because the question mark requires a matching colon); for people not used to C-derived language, it is hard to understand.
つか、一種の3項演算子じゃん。 [x for y in z] とかとも類似する構文だし、俺はあれでいいと思うけどなぁ。。。
>581 入れたくないものを仕方なしに入れるから とか? (本音を言うと誰にも使って欲しくない)
? : が既に使われててダメだったなら C then X else Y みたいにできなかったのか疑問 条件が真ん中に来るとか見づらいよ……
別にCに合わせる必要はないと思うよ。演算子関係ではCと違う部分がいっぱいあるから 半端に似せて「Cと同じだ」とか誤解を招くのはよろしくないと思う。
"x for y in z" ← ← データの流れが見える "X if C else Y" ↑ ↑ 分かれていて嫌
>>587 気持ちはわかる。対称性が悪い感じだね。
でももう決まったことだし、個人的にはあまり気にしないで使うことになるだろうな。
意見を述べるならもっと前に言うべきだったってことでしょう。
あんまり使いにくかったら、そのうち改良されるよ。。
日本人だから見づらいのかな 向こうの連中だと自然で見やすいとか?
初めてリスト内包を見たときは「何じゃこりゃ、ワケわかめ」という印象だったけど もう慣れてしまった。今ではリスト内包は直観的で分かりやすいと感じる。 ずっと Guido のセンスで取捨選択してきたわけだし、ぶっちゃけ今のところこれといって ダメ杉な仕様とゆーのは思い付かない。 今度の新しい三項演算子も慣れたら普通だと感じるようになるんジャマイカ。
X if C else Y 「Xなんだよ! まあCだったらの話だけどな そうじゃなければYでよろしく」
このスレ読んでるうちにだんだん慣れてきたw
リストの内包表記は書いちゃうけど読みにくいな [x for y in z] ↑ ここにたどり着く前に脳内スタックが忘却を始めるw [x for x in original_list if x>2 and x<5] こっちは自分で書いてもコメントが必要だww
595 :
591 :2006/07/26(水) 01:37:07
文が書ける文脈では普通の if 文を使えばいいわけで、
X if C else Y を使うのはきっと式の中がメインになるんだろうな。
lambda の中とかリスト内包の中とか。
functor = lambda x: x+1 if y > 0 else lambda x: x-1 if y < 0 else lambda x: x
とか、
delta = Numeric.array([[1 if i == j else 0 for i in range(M)] for j in range(N)], Numeric.Float32)
みたいな。
>>593 の言う通り、用例を考えていたらもう慣れてきた希ガスw
596 :
591 :2006/07/26(水) 01:54:02
q, r = divmod(n, 10) print "%d%s" % (n, "th" if q == 1 else "st" if r == 1 else "nd" if r == 2 else "rd" if r == 3 else "th") たくさん if ... else が続く場合はなかなか読みやすい希ガス。
Guidoです。 Python 3.0のライセンスはオレオレGPLにするから。
ツマンネ
PythonでXML処理って胸キュン?
2.5からはElementTreeが標準モジュール入りするよ
>>596 その書き方が許されるとすると、かなり応用力がありそうですね。
実質任意個バージョンでOKてことだから・・・
でも、あんまりやるとさすがに見づらい気もする・・・
596がすでにぱっと見ではよく分からない
やっぱり、判定式が真ん中に来ると読みにくいな。 A = if C then B else D みたいな形の方が文章として読みやすいと思うんだが。
>>596 三項演算子いれて、
print "%d%s" % (i, r == 1 ? "st" : r == 2 ? "nd" : r == 3 ? "rd" : "th")
にしたほうが見やすくない?
print "%d%s" %(i, {1:"st", 2:"nd", 3:"rd"}.get(r, "th")) でいいんじゃね?
1だけがageるような糞スレに集まる情報なんか集めても無駄。
ゴバクった・・・
>>602 A = B if C else D だと
CならばDと目が流れちゃうかもかも。
まあ、慣れれってことか。
まあ、ハズレのときはNoneが返る形ならば、 A = B or D で済むんだけどねぇ。 BがNoneならDって使い方。これは結構便利でよく使ってるんだけども。 いまだに A = B and D は使ったことがないけども。
>>596 > たくさん if ... else が続く場合はなかなか読みやすい希ガス。
おお!まさにそう思うよ!急にこの演算子が大好きになった。
610 :
591 :2006/07/26(水) 16:56:18
>>603 慣れているから見やすいと感じるんだと思われ。
ぶっちゃけどっちでもよくなってきた。
余談だけど
>>603-604 のコードは 11st, 12nd, 13rd という
おかしな出力が得られるのでNG。
話はそれるけど、
Python 3000 ではxrange()は廃止になるみたいだけど、
http://ymasuda.jp/python/news_2004_10.html 現在のバージョンで、range()ではメモリを食いすぎる場合、代わりにどう書
けば良いの?
あと、Python 3000では、range()はxrange()を兼ねるみたいだけれど、どうい
う仕組を想定しているの?
・__iter__経由でアクセスした場合はxrange()と同様
・__getitem__経由でアクセスした場合には現行のrange()と同様
ということなのかなとも思ったが、どうなんでしょう?
range()をジェネレータにするって言ってなかったっけ?
ところで、python3000 ってコマンド名何になるんだろ。 (いやそりゃinstallの仕方次第ってのはわかってるけどね) こうあれこれ廃止されると (has_keyとかも) #!/usr/bin/env python って書いてあるコードが軒並動かんからなぁ。 標準で python3 とか py3hon とかにしてほしい。
シンボリックリンク使え python -> python2 python2 -> python2.6 python2.3 python2.4 python2.5 python2.6 python3 -> python3.0 python3.0
windowsにはハードリンクしかない
>>595 >functor = lambda x: x+1 if y > 0 else lambda x: x-1 if y < 0 else lambda x: x
functor = lambda x: (x+1 if y > 0 else lambda x: (x-1 if y < 0 else lambda x: x))
こう解釈して、わけわかんなくなりました。
wikipediaにバベル無いよ…。いや、日本ではそんなもんだろうけど。
行ってみたいが都内住んでないしレベル高そうだし・・・
ただの飲み会にレベルなんてあるの?
>619 マジわかってないんだけど正解はどうするの? そもそも1行にうじゃうじゃ並べるのって 読みにくくなって python的じゃなくね?
>>619 functor = (lambda x: x+1) if (y > 0) else (lambda x: x-1) if (y < 0) else (lambda x: x)
こういうことでしょ?(pythonコンパイルできないけど・・・
まあ、一生つかわなそうだけど、・・・
>>613 list(range(5)) みたいに、明示的にリストに変換するようになるみたい。
>>426 ありがとう。けっきょく、Python3000への準備としては、
今のうちにこう書くようにすれば良いのかな。
・xrange()はあきらめてrange()を使う。100万回のループでも高々4MB。
・range()をリストとして使う場合、list()で囲っておく。
・xreadlines()は使わず、ファイルオブジェクトをイテレータとして使う。
なんにせよ、データ構造のデフォルトがlazyになるのは嬉しい。Python3000が
楽しみだ。
print -> write()はどうしようか。
自分でwrite()を用意するのは、ちょっと難しそうだ。
629 :
628 :2006/07/27(木) 19:27:03
pythonで $a = ($b > $c) ? $b : $c; // ←php 的な構文ってなんかある?
a = max(b,c)
>>625 でも、その解釈だと、
>文が書ける文脈では普通の if 文を使えばいいわけで、
>X if C else Y を使うのはきっと式の中がメインになるんだろうな。
に合わないよね。
if y>0:
functor = lambda x: x+1
else if y<0:
functor = lambda x: x-1
else:
functor = lambda x: x
文で書ける文脈だし。
条件式が長く連なる場合って、どうインデントするのがいいと思う? 内包式の中とかで自由にレイアウトできるとして、 # 1. 値を行頭にそろえる [1 if cond else 2 if cond else 3 for i in xxx] # 2. 値を行頭にそろえるが、最後だけは行末 [1 if cond else 2 if cond else 3 for i in xxx] # 3. 最初だけ行頭で、残りは行末にそろえる [1 if cond else 2 if cond else 3 for i in xxx] # 4. どんなに長くても改行しない [1 if cond else 2 if cond else 3 for i in xxx] # 5. 値を中程でそろえる [ 1 if cond else 2 if cond else 3 for i in xxx] # 6. その他 俺は今のところ3がいいかと思ってる。
else、else ifを頭に揃える
普通にループ回してリスト生成するほうがいいと思う。
else、else ifを頭に揃える
emacsにお任せ。
ZaurusでPythonやってる人いる?
みだらな行為
囲い込みを破った
そんなのもない
別ファイルに作ったクラスのインスタンスを作るにはどうしたらいいの?
>>648 別ファイルに作った関数を呼び出したりするときと同じ
>別ファイルに、作ったクラスのインスタンスを作るにはどうしたらいいの? こう読んでいた俺がいる
>>652 「Program全般の話題」だけでお腹一杯です。勘弁してください。
起業ワロス
釣り果
>こーぞーたい!!ってrubyにないのかしら?見た感じないので、きっと配列とかで拡張できるんだろう。 ちょっと面白かった
釣り果!
ざつだんはほかでやれって、おかあさんがゆってた。
ごめん
tinkerのguiビルダーありませんか?教えてください。
TkinterにはGUI定義ファイルのような概念があるのかな?
663 :
662 :2006/07/29(土) 11:50:08
どうでもいいけど、Tkinterってどうやって読むんだ?
T K inter?
てぃーけー いんたー
てぃくる☆てぃーけー
でぃー!?
5秒ごとにテキストファイルのタイムスタンプを見て、 更新されていたらその中身をカキコするっていうのを 作ってみたけど、短時間で組めて使いやすいね、python。
新参ですが、Tkinterて使ってますか? なんかwxPythonの方が見栄えが良いなぁと思って。
おっぱい見せて
675 :
673 :2006/07/30(日) 02:33:01
import os,string
from stat import *
from time import*
from mechanize import Browser
#
http://wwwsearch.sourceforge.net/mechanize/ fileName = '/path/to/your/files/postmessage.txt'
def postIt():
f = open(filename,'r')
dest = '
http://hogehoge.com/hoge/hoge.cgi '
br = Browser()
contents=br.open(dest)
br.select_form(nr=0)
br["name"]="nanashisan"
br["MESSAGE"]=f.read()
contents2 =br.submit()
f.close
def main():
lastUp = os.stat(fileName)[ST_MTIME]
while 1:
sleep(5)
if lastUp <> os.stat(fileName)[ST_MTIME] :
postIt()
lastUp = os.stat(fileName)[ST_MTIME]
if __name__ == '__main__':
main()
>>672 使ってるよ。よく使う Tkinter アプリは IDLE と自作の簡易 MUA。
見栄えはあんまり気にしたことないなあ。
そういう性格なのかもね、俺の場合。
スキンが変えられるソフトでもデフォルトのままで使うことが多いし。
一時停止ボタンどこぉ?みたいなスキンもあったりして面倒というのもある。
pygtk使いは少ないのかな
乱立してるうちに、結局GUIに関しても.NetFramowork(Mono)がデフォになったりして...。
679 :
デフォルトの名無しさん :2006/07/30(日) 12:32:29
Django 0.95 来てるじゃないか。 いろいろ遊べそうだ。
MLで「Python特集」なんて煽ってたから日経ソフトウェア9月号を見てみたんだけど、 なんか肩透かしだった。 Djangoは紹介だけ。あまり内容が無い。 連載のほうは、rssfeedの紹介がしたいのかPythonの入門をさせたいのかどっちつかずで ものたりなかった。2ページで2つ盛り込むのは大変だったのかな。 rssfeedをとりあげたら、次はPythonでplaggerする newspipe でなんかやってほしいっす。 とか日経ソフトウェアの感想ハガキに書いて送ればいいんでしょうか。
そーですね
連載なんだから1回1テーマに絞ってくれればいいのにな。 しかし2ページしかないのか。記事書くのも結構難しいな。
683 :
デフォルトの名無しさん :2006/07/31(月) 09:24:54
Pythonのコミュニティは暖かいですね!!
ほとんどの人が何かしら他の言語の悪い所(言語そのものでもコミュニティでも)を経験して Pythonを選んだからだろうと思われる。
べ、別に暖かくなんかしてないんだからッ
686 :
デフォルトの名無しさん :2006/07/31(月) 11:59:33
>>684 >ほとんどの人が何かしら他の言語の悪い所(言語そのものでもコミュニティでも)を経験して
プロ市民のごとくマイナスイメージを作ることでしか自己主張できない敗北者には用はありません。
ツンが来た!
Pythonのメーリングリスト(日本語の方じゃないよ)を読んでいると 2chではマニュアル嫁とかボロクソいうレベルの質問でも ユーモアを交えつつ答えてるし。。(スルーされてるのもあるが) 質問した方も、多少恥をかいても礼儀正しいし。 そっち読んでたら、2chですこし丸くなったよ。
2ch上にあるプログラミング言語関連スレの中では、Pythonスレは安定して良スレだと思うぞ。 少なくともpython-ml-jpよりもRTFMレベルの質問に対しても優しいと感じる。
ぶははは。ここまで読んで、口に含んでいたウーロン茶を噴き出してしまいました。 (まあこれはこじれにこじれた時の話ですがね)
692 :
デフォルトの名無しさん :2006/07/31(月) 13:02:08
680は万年初心者向けの雑誌に何を期待したんだ。
日経ソフトウェア次号の記事は インサイダー取引のためのハッキング口座 です
はっきり言って初心者は苦労したほうがいい。 あまり優しいのは考えものだ。 と、暴言を吐いてみるテスト。w
本当の初心者はともかく、万年初心者みたいな人は確かにうざいよね
スクリプト言語で村おこし? ええじゃないか。ええじゃないか。
とにかく、だ。 教祖様の思いつきレベルで仕様が変わる言語は使えねえな。
New keywords allowed dict.keys(),range(),zip() won't return lists -killing dict.iterkeys() ,xrange(), itertools.izip() All strings Unicode ; mutable 'bytes' data type Binary file I/O redesign Drop <> as alias for != But not (for example): - dict.keys instead of dict.keys() - change meaning of else-clause on for/while - change operator priorities
Can't do perfect mechanizal translation -Many proposed chan ges are semantic ,not syntactic - For example ,in "f(x.keys())" --is x a dict? --does f() expect its argument to be a list ? -Answers may be guesssed by e.g. pychecker --but can't always be diceded with certainity Most likely approach: -use pychecker-like tool to do an 80+% job -create an instrumented version of Python 2.x that warns about doomed code (e.g. d.keys().sort())
"Five Is Right Out" From PEP 3099 (and from The Holy Grail :-) Python 3000 will not: -have programmable syntax / macros /etc. -add syntax for parallel iteration (use zip()) -change hash, keys etc. to attributes -change iterating over a dict to yield key-vaule pairs In general we shouldn't -change the look and feel of the language too much -make gratuitous or confusing changes -add radical new features(can always do that later)
"Basic Cleanup" Kill classic classes Exceptions must redive from BaseException int/int will return a float Remove last differences between int and long Absolute import by default Kill sys.exc_type and friends (exc_info() stays) Kill dict.has_key(), file xreadlines() Kill apply(),input(),buffer(),coerce(),... Kill ancient library modules
"Minor Syntactic Changes" exec becomes a function again kill 'x' in favor of repr(x) change except clause syntax to 'except E1,E2,E3 as err:' -this avoids the bug in 'except E1,E2:# meant except (E1,E2) [f(x) for c in S] becomes syntactic sugar for list(f(x) for x in S) # a generator expression -subtle changes in need for parentheses -x no longer leaks into surrounding scope kill raise E ,arg in favorof raise E(arg)
てか、なんでRubyを敵視してるヤツがいるんだ? その「オレが使ってる言語最高!オレが使わない言語は悪だ!」という 非論理的思考はなんとかならないのか?
>>707 >なんでRubyを敵視してるヤツがいるんだ?
そんな人いるの?
>>707 そうじゃなくて「オレさまが作った言語最高!」ってのに辟易してるんじゃないのか
Rubyを敵視するかどうかなんてこのスレの話題ではない 敵視するかどうかは各個人の自由であろう
明らかに >697,698,711は敵視してるじゃん >711, 709 Rubyに近づいているといってるだけで、Rubyが一番スゲー、とか言ってないのに何その過剰反応は。 >Pythonの偉い人は,Rubyに限らず色んな言語のよいところを知っていて >可能であればPythonに取り入れようとしてきた これはPythonだけに限らなくて、ほぼあらゆる言語がそう。Rubyもね。
なんつーか、こんどLL Ringっていうプログラミング言語天下一武道会が あるらしいんで、そこである程度決着つくんじゃね?
敵視って(www 新手の荒らしか(wwwww さて Pythonの話題をどうぞ
>>713 じゃんけんプロトコルに乗っ取って各言語で書かれたクライアント同士が
数万回のじゃんけんを繰り返して決める、ってあれかい?
>>712 そりゃ2chなんだからいろんな人がいるよ。そゆのをスルーできない君のほうがうざいよ。
その論理だと、2chなんだからスルーできない人もいていいことになるが?
板違いですよ。 慣れ合いー>夢・独り言 でどうぞ。
反論できないとコレか。
721 :
デフォルトの名無しさん :2006/08/01(火) 00:03:07
美容師「被害妄想っすか?w」
>>707 やはり同じように感じている人がいたのね。言っていることにはつくづく同意。
このスレの雰囲気については、正直何とかしてほしいと思っている。些細な質問を
するにも、いちいち「荒らすつもりじゃなくて」とか弁解しなきゃいけない。
>>255 とか見てると、胸が痛む。
自分たちがどれだけ入門希望者を萎縮させているか、少しは考えてほしいもんだ。
こう書いても、また荒らし扱いして叩くだけなんだろうけど。
> 些細な質問をするにも、いちいち「荒らすつもりじゃなくて」とか弁解しなきゃいけない 些細な質問で荒らし扱いされたことってあったのか?
たぶんあれだ、言語機能がそう定義された理由とか。 rubyでは...lispでは...とか付け足すと効果的。
>>722 やっぱり書き方だよ。
>>255 はムカつかれる書き方をしてるってこと。
それは感覚の問題だからかわいそうと言えばかわいそうだけど。
ムカついてるのはアンタ以外にいるの? で、255の何にムカついてるの?何故ムカつかないといけないの?
729 :
726 :2006/08/01(火) 01:49:30
ごめん。話の流れから、叩かれてる人かと思って
>>255 読まずに適当に書いた。
なんつーか、ある程度肥大化した閉鎖集団は、外部に仮想敵を作らないとやっていけないのだろうな。 何処とは言わないが。
最近ウンコAAを見ないと思ったら(ry
仲直りスレで遊んでれば良いのになぁ。
>>720 なにげにPloneなのね、そのサイト。
2chで、むかつくいい方されたからって腹たててたら どのスレにも書き込みできない。。
さあ,Pythonの話をしようぜ
u"ほげほげ”は、たまに期待どうりの動作をしないので unicode("ほげほげ")のほうがいい。
ソースの最初の行でcodingを宣言する癖を付けましょう
便利すぎて盛り上がらないな。
utf8で書けよボケ。
>>> u = lambda x : unicode(x,'utf-8') >>> print u("ほげほげ") ほげほげ これでちょっとは短くなるべ
気まぐれにPythonのshellであそんでたら u("ほげほげ")のときにスライスがバイト単位で切れちゃったんで シェルのときは、環境で動作ちがうからめんどっちいなーと 思っただけです。 プログラムの時は、>739サンのようにしておりますので 意識してなかったんで、何でシェルのときスライスでunicharでてこないんだ とおもって、しまっただけでした。 環境変数のLANGの値で、codingをいい感じにしてくれんのかなー とおもってたら、ただの8ビット文字列にされてたようでした。
site.pyのencodingがasciiになってるんじゃねえの? >>> s = u'んなばかな' >>> s[:2] u'\u3093\u306a' >>> print s[:2] んな >>> print s[2:] ばかな
>>746 site.pyは触っていません。
そうすれば、固定できるとは知っているのですが
システム全体に影響してしまうんで。。
PYTHONSTARTUPでなんとかできればいいんですけどね。
こんな結果でした。 バージョンによる違いだったみたいです。 == python2.5 == >>> s=u"ほげほげ" >>> s[0] u'\u307b' == python2.4 == >>> s=u"ほげほげ" >>> s[0] u'\u307b' == python2.3 == >>> s="ほげほげ" >>> s[0] '\xa4'
>>749 修正。
== python2.3 ==
>>> s=u"ほげほげ"
>>> s[0]
u'\xa4'
デフォルトエンコーディングがロケールから自動設定されるのは 2.4からじゃなかったか? site.pyは直接書き換えないでsitecustmize.pyを使うのがお作法。
tr/いろは/以呂波/ こういうのをやりたいんだけど どうやって書けばいいのだろ?
>>747 export PYTHONPATH=$HOME/.python/
$HOME/.python/sitecustomize.py
import sys
sys.setdefaultencoding('ENCODING')
>>752 s=u"いろはにほへとちりぬるを"
table={ ord(u'い'):u'衣' , ord(u'ろ'):u'呂' ,ord(u'は'):u'波' }
print s.translate(table)
>>754 thx
translateの使い方がようやく理解できたよ
なんかMLでBCD-HEXのコンバートで違う方向で盛り上がっているけど スマートな方法は思い付くかな。
余はオフ会に逝くぞよ。
Pytonのオフミって何やるの?
そんなことここには書けませんよ
書けないことやってるの?
>>758 余は初参加であるので裏事情は知らぬが表向きは単なる飲み会であるものと存じておるぞよ。
時間さえ都合つけば行くつもりだったが、 木曜の夕刻なんぞに開かれたら絶対行けない……
Pythonオンリーイベント?
誰のPythonがいちばん立派か自慢し合うんですよ
そう思ってると
突然
>>764 は僕の見ている目の前で
ツナギのホックを
はずしはじめたのだ・・・!
魚曼 魚花
セクシーコマンドー使いが居るのか!?
あの。。。。 Pythonのはなしを。。。。。。。
Pythonのthreadingについて、一言 ↓
Pythonで作ったforthコンパイラw tp://ftp.yum_python.org/pub/Phorth/
他の文字コードからUTF-8に変換したいときは、何を使えばいいんでしょうか
URLのファイル名部分が「index」か「default」になっているかどうかをチェックしたいと考えています。
以下のようなコードを書いてみました。
import re
r = re.compile(".*/(index)|(default)\.[^/]+$")
if r.search("
http://hoge/index.html ").group() != None:
しかし、これではgroups()で取得できるものが、部分一致したindexか、defaultになってしまって全体が一致しているかどうかがわかりません。
具体的には、
"indexahtm"
こういうものはヒットしてほしくありません。
全体が一致しているかどうかを判断するには、どうしたら良いでしょうか。
よろしくお願いします。
import os.path, urlparse
filepath = urlparse.urlparse("
http://hoge/index.html ")[2]
filename = os.path.split(filepath)[1]
print os.path.splitext(filename)[0]
プログラミング経験0で、はじパイをほとんど読んだ人が、urlretrieveでローカに落としたルファイルを弄るようなコードを書くと、 なんだか動きが変だと思って、どうやらスレッドがいいらしいと思いついたときに見れば、その辺がよくわかるURLを下さい。
782 :
デフォルトの名無しさん :2006/08/03(木) 18:32:30
動的にクラスを選択する方法ありませんか? 条件1の場合: c = Class1() 条件2の場合: c = Class2() : 条件Nの場合: c = ClassN() 分岐が多く汎用的でない。
>>782 クラスもオブジェクトだから変数に突っ込める
あらかじめ判断したときに
C = Class1
とかやっておいて、インスタンスを作るときに
c = C()
とやればよろし
>>782 うちはポリモーフィズムもどきでやってるよ。
>>782 条件に規則性があるなら、条件からクラスを返す関数を作ってみるとか。
それか、条件のパラメータの一部をクラスの初期値に入れて分岐とクラスの種類を減らしてみるとか。
作られるクラスがどれだけ異なるか/似ているかによって、ソリューションはかわってくるな。
>>783 あ、どうもです。
イメージしていた方法はモジュールの動的な読み込みのような感じです。
対象がモジュールならば
m = imp.load_module(...)
の後、
m.hoge()
のように使えますが、クラスの場合は当然 AttributeError: なります。
インスタンス生成しなければならないと思うのですが、
ググってもそれらしいサンプルに出会えませんでした(。´Д⊂) ウワァァァン!!
クラスがインタフェースを共有しているだけで、実装方法がまったく違うならクラスローダ。 実装方法はほとんど同じで、DRYにしたい場合はメタクラス。
>>787 サンプルに頼っていては,枝葉の部分で躓きまくる。
基本を勉強しれ。
790 :
デフォルトの名無しさん :2006/08/03(木) 23:40:21
ところで、パイソンチャレンジ みんなどこまで行ったの?
やってない、そんなひまない
UNIXとかPerlとかをよく見る、ナツメ社ハンドブックに似た感じの小さくて安い本が、 出版社違いでPythonでもあって驚いた。需要にこたえるところ、あったのね。
>>792 値段の割りに結構分量がありますね。
「はじパイ」は値段も高いけど、冗長なのが...。
>>792 Googleで名前をぐぐって一番上に出てくるサイトの人だと妄想しつつ期待。
>>787 デザパタで言うところの Factory パタンを使うのがいいんジャマイカ?
まあ 現場を知らない上流は使えねえ。
二昔前の現場を知っていても意味ないけどね。
>>798 デザパタでいうところの Proxy パタンですね。
python 人にも3時間で分かるデザインパターンの解説、 みたいなのはないっすか?
3時間というのは無理だけど、 ・Factory ・State/Strategy ・TemplateMethod ・Composite とりあえずこの4つだけ押さえればいい。残りは全部その応用だから。
覚えるのと使うのは別次元。
ちなみにPythonだと、クラス自体を変数に入れられるから、Factoryとその 応用は、極めて簡潔に書けるか、またはまったく不要になる。 (例えば単純なSingletonなんか要らない) デザパタを知ると、そのあたりでPythonのありがたみを再認識するのではない かと。
ある程度コードを書いて読めば、主要なパターンは自然と身につく。 それからパターンの解説書読めば充分。 「なんだ、いつも使ってるこれのことか」ってわかる。
>>805 そうなんだけど。
ちゃんと書いたほうがわかりやすいので今のところそうやっている。
#!/usr/bin/python と #!/usr/bin/env python はなにが違うの?
>>808 前者はpythonを/usr/binを置かなきゃいけない
後者は/usr/binにenvが無きゃいけない
>>797 何がどう思考停止なのか分からんのだが。マジレスきぼんぬ。
ぼんぬ。ぼんぬ。ぼんぬ。ぼんぼんぬ。ぬ。
しぼんぬ。
かつてこの言語ほど2chと親和性の低い言語があっただろうか。
Python で XML を利用したサンプルってありますか?
最近こんな連中ばっかだな。PHP化してねえか?
>>815 IBMのdevelopperworksにいろいろ出てる。
古い記事も多いので、それだけ注意。
818 :
デフォルトの名無しさん :2006/08/04(金) 22:12:47
2.5b3来た
じゃあ、全角スペースに変換する プログラムを考えれ。
おまいらみんなRubyに帰れ。
>>821 帰れといわれても、、
そっち方面から来てないからなぁ…
>>> if 1 == 2: "yes" else: "no" 'no' インタプリタでこうなるんだが、これifが値を返してることになるの? どういう仕組み?
俺の予定では9月1日に2.5-final
>>823 if は値を返さない。また、ifは文であって、式じゃない。
ところで単独の式は、それだけで文になれる。値も返す。
この場合"no" という式が、文として実行されて、その値を返している。
念のためだけど、このコードで'no'が画面表示されるのは対話画面だけ。
副作用のない式だから、普通のモジュールの中では何も起こらない。
更に念のためだけど、このif以下のコードを、print や return の引数に
することはできない。これらは式しか引数に取れないから。
Python.jp のニュースに投稿してみたんだけど、新着記事にでてこないなぁ。 ひょっとして、投稿が掲載されるにはサイト管理者の承認手続きとかが必要なの?
Planet Python Japan が復活したっぽい
alpha 1 2006年4月5日 済 alpha 2 2006年4月27日 済 beta 1 2006年6月20日 済 beta 2 2006年7月11日 済 beta 3 2006年8月3日 ←今ここ rc 1 2006年8月18日 予定 final 2006年9月12日 予定 release 2006年?月??日 (゚Д゚≡゚Д゚)?
>>828 まともなニュースサイトなら、外部からのタレコミも、裏をとったり、
記事を編集したりするもんじゃない?まったり待ちなされ。
ところで、何を投稿したの?
>>826 かなり特殊な現象なんだな
節々がlispっぽいからifが値を返したら面白いなと思ったんだけど
print if xxx:みたいな変態的なことさせる訳無いか
ありがとう
>>823 >>> s = "spam"
>>> s
'spam'
>>> repr(s)
"'spam'"
>>> class Foo:pass
>>> foo = Foo()
>>> repr(foo)
'<__main__.Foo instance at 0x00C15DE0>'
>>> foo
<__main__.Foo instance at 0x00C15DE0>
>>> if True: foo
<__main__.Foo instance at 0x00C15DE0>
http://www.python.jp/doc/release/ref/customization.html
>>832 そう悲観したものでもない。
Conditional Expression (条件式?)が導入される予定だから。
詳しくは
>>639 を参照。
デザパタの話の続きだが、Pythonで楽になるのはFactoryだけじゃない。 __getattr__などを使えば、State/Strategyもすごく簡単になる。 Compositeも、変数に型がないから、共通のインターフェースを実装する 必要はなくなる。 同じデザパタでも、Javaとかとは何味も違う。 まあTemplateMethod は、Javaと変わらないけど。
いまだにデザパタの名前と内容が一致しない。
名前なんて飾りですよ
ASCIIの文字コードのリストから文字列を生成するのって ''.join(map(chr,[0x30,0x31,0x32,0x33])) こんな風にするしかない?
無駄なことしてると思う
まぁ、お前の人生よりは無駄じゃないよ。
否定だけして代案を出さないやつのことってどう思う?
''.join(chr(x) for x in range(0x30, 0x34))
>>841 否定されるということがヒントになる場合もあるし、答えを教えないで質問者に考えさせる
という態度は極めて教育的だと言える
ポジティブだなw
>>841 実社会では孤立するだろうね。
そういう人には、能力があっても安くて厳しい仕事ばかり回ってくる。
ワーキングプアまっしぐらかな。
>>838 すごい
漏れにはそんな単純な方法思いつけんわ
↑微笑ましい厨ですね
というか日記が日にち単位でなく 時間単位だということが発狂しているとおもふ
薬か? 抗うつ剤とか,眠薬飲んでる奴はヤバいよな。
>> 842 ''.join()の引数にイテレータを渡せるとは知らなかった。
pygame 簡単だね ちょっといじってみた
>>854 イテレータなのか? 内包式が展開されたtupleじゃね?
タプルは"()"じゃなくて","だろ >>> type((0)) <type 'int'> >>> type((0,)) <type 'tuple'> ついでに >>> (chr(x) for x in range(0x30, 0x34)) <generator object at 0x00C9A698> >>> type(chr(x) for x in range(0x30, 0x34)) <type 'generator'>
>>856 >>> " ".join(iter(["1","2","3"]))
'1 2 3'
イテレータもオッケーみたいだ
860 :
838 :2006/08/07(月) 00:17:46
>>839 俺もそう思うんだけど、代案が思いつかないんだよね。
やりたいのはmd5に渡すために文字列化したいだけなんだけど、
なんかすっきりしない。
packとかないの?
862 :
838 :2006/08/07(月) 01:15:56
struct.packを使って a=range(0x30,0x34) struct.pack("%db"%len(a),*a) までは書けたけど、あまり見やすくなった気はしないな。 やっぱり1文字ずつ生成して繋げるのが自然なのかな?
文字列テーブル作っておいて、好きな範囲で切り出せばいいじゃん。動的に生成する必要性が本当にあるの?
array でもいいんじゃない? >>> import md5 >>> import array >>> md5.new(array.array("B", range(10))).hexdigest() 'c56bd5480f6e5413cb62a0ad9666613a' >>> md5.new("".join(chr(i) for i in range(10))).hexdigest() 'c56bd5480f6e5413cb62a0ad9666613a'
865 :
838 :2006/08/07(月) 02:52:33
>>864 それだ!!すっきりしました。
なんかあるはずと思っていたんだよね。
866 :
838 :2006/08/07(月) 03:06:02
>>863 必要性って言うか、動的に生成するすっきりしたやり方が無いかと探していただけだし。
ちなみに文字列テーブルで好きな範囲で切り出すって具体的にはどうするの?
つ[スライス] やはり動的に生成する必要はないんか・・・
(ord(c) for c in list(s[start:end]))
869 :
838 :2006/08/07(月) 17:43:19
>>867 ,868
すまんが、これが何の問題を解決しているのか分からない
そもそも、文字列テーブルって何のテーブル?
>>>''.join(map(chr,[0x30,0x31,0x32,0x33])) '0123' >>> array.array("B", [0x30,0x31,0x32,0x33]).tostring() '0123' 今まで上のやつしか知らなかったけど 下の書き方のほうが有利そう 今度機会があるとき使わせていただきます
つーか、リストにtostringをつけてほしい。 arrayっていまさら何って感じ・・・ 統一感がない・・・
出たら奇跡。
Guodoです。
>>871 __str__()で勘弁してよ。
>Guodo, who are you?
はてなダイヤリーのpythonについてのページが詳しくなってる。
>>875 ああ、物足りなかったんで付け足しといた
>__str__()で勘弁してよ。 まるで意味が違うし
Giodoです。
>>878 ゴメン,OSConが終わったばかりで,疲れてるんだよ。
でも,リストをどのように文字列に変換するかは実装依存だと思うよ。
それくらい各自で実装してよ。
Giren です 名前くらい覚えてください
現在ActivePythonを、WSH(.pys)として使っています。 「日本Pythonユーザ会」のほうで配っているPythonでも同様にできますか?
関西にはミドリ電化のミドリちゃんというのがいてね。
>>881 「日本Pythonユーザ会」の配布のは使ってないんで、ENTHOUGHT EDITHIONので
試してみた。
http://code.enthought.com/enthon/ .pys は関連付けされていない。ActiveScriptとしては機能しない。
だけどwin32comというモジュールがあって、COMコンポーネントを扱うことが
できるから、ActiveScriptでやっているたいていの作業は標準のPythonでもで
きると思う。
IEやASPの中でPythonを動かすのは無理だけど。
885 :
881 :2006/08/08(火) 13:49:26
・・・ダメだ、もうウンコ我慢できねぇ・・・ もらしてよかですか?
誤爆 orz orz orz
いいよ、誰も気にしてないよ。 我慢するとからだに悪いよ。
どこへの誤爆かきになるな。。 拡張系ですか
ずいぶんマニアックなスレになってきたな。
eXtremeペアプログラミングって、 エッチな事だと勘違いしていました。
ペアプログラミングのお相手募集中
染色体の交換はプログラミングに入るんですか。
それはコンパイルです
実行するとどうなりますか?
あなたの場合、ソースが足りなくてコンパイルエラーが起きます。 Pythonはインタープリタ言語なのでこれ以上はスレ違いです。
前処理としてバイトコンパイルします 本番はバーチャルマシンを使います いきなりは嫌われますよ
┌──────────────────┐ | | │ _ ∩ | │ ( ゚∀゚)彡 おっPy! | │ ( ⊂彡 おっPy! .| │ | | | │ し ⌒J | │ | │ Now Oppaing. .... .| │ | │ そのままぱいthonでお待ちください。 | | | └──────────────────┘
902 :
デフォルトの名無しさん :2006/08/09(水) 21:05:38
質問です。 ActivePython + MySQL でスタンドアロンDB操作したいのですが、 ActivePythonではモジュール(MySQLdb)追加インストールはどうやって行うんですか? ActivePerlならばppmをつかって行えるのですが・・・
>>903 ありがとうございます。インストールできました。
対話モードでimportできたので、これでいけそうです。
>901 PythonMatrixのひとがPlanet〜のかわりになるようなのを用意してくれてたけど、 GoogleReaderはいまいちだなぁ。 PlanetPythonJapanみたいにずらっと並べて見れるRSS閲覧サービスってないすか。
Pythonで自分でつくりゃいいじゃん。
windowsでPython使ってるけど、easy Install とか egg とかはあまりお世話になったことが無いな。
TurboGearsでお世話になった
910 :
デフォルトの名無しさん :2006/08/10(木) 01:00:53
厨房な質問だけど,気になるんで教えてください. はじPyのP105 >>> 'SPAM'.join(['eggs', 'sausage', 'ham', 'toast']) 'eggsSPAMsausageSPAMhamSPAMtoast' となるんだけど,なんでなのかわかりません. 「joinはドット. の前に指定された文字列と連結する機能がある.」 と書かれているのですが,なんで最後のtoastの後にはSPAMが連結されてないの?
>>910 説明文がよくないかも。
正しくは「joinはドット. の前に指定された文字列*で各要素を*連結する機能がある.」
つまりシーケンスの各要素をつなげるんだけど、そのときに間に文字列を挟むことができますよ、
そしてその文字列はドットの前に指定された文字列ですよ、ということ。
>>910 文章による説明が自然言語の限界で不完全なだけだから気にするな
そのほうが使い勝手がいいからな。 Cを学んだ人なら、配列の要素を表示する処理を作ったら、 1, 2, 3, 4, 5, 6, と最後にいらない 「,」 が入って萎えるけど、これに対処するためだけに 処理をいじるのめんどくせー。 と思ったことが一度はあるはずだ。
なんでlist.join(string)じゃないんだろう・・・?
>>915 リストの機能ではなく文字列の機能だから
join って自動詞でもあるんだから、別にリスト側にあってもおかしくなくね? むしろ、他の言語では、どれもリスト側のメソッドとして実装されてるよね。
>>917 自分もそれ思った。str と list に両方実装しといてもらうのが一番便利な気がする。
あ、でも、pythonだから2通りできちゃまずいのかなぁ・・・
使い方を覚えればいいだけの話だろ。 愚かな一貫性は小人物に憑いたゴブリンである。
>>917 明らかに「文字列専用」の機能がリストの中に存在するのは気持ち悪いよ
>>921 joinが文字列専用だってこと?
どう考えてもjoinはリストやシーケンス専用の機能としか思えないのだが。
>>922 明らかに文字列操作のカテゴリに属する機能だと思うけど
聞く耳持たないなら議論しないけどさw
joinはリストの機能だよ派の意見: ・joinはリストを連結するんだからリストの機能だろ! ・他の言語と違くて気持ちわりー! ・あの子とjoinしたいです>< joinは文字列の機能だよ派の意見: ・joinは文字列で連結して文字列を作るんだから、どうみても文字列の機能です。 ・他の言語との一貫性を求めるなら他の言語使えやヴォケ! ・あいつとjoinしたい アッー!!
他の言語って具体的に何?
joinが文字列機能でああいう書式なら、splitの方も ','.split('a,b,c') にするべきじゃないのか?
joinの話だが、 joinが受け取れるのは、リストだけではない。文字列だけを要素とするものだっ たら、タプル、リスト、イテレータ、ジェネレータ、なんでもOKだ。 >>> def get_hoge(): ... for i in range(10): ... yield "hoge" + str(i) ... >>> "-".join(get_hoge()) 'hoge0-hoge1-hoge2-hoge3-hoge4-hoge5-hoge6-hoge7-hoge8-hoge9' そういうものすべてにjoinを実装するのではなく、何でも受け取れる 万能のjoinを文字列のメソッドとして用意するのは、一つの見識だと思う。 まあこういう万能関数が必要になるのは、Pythonのコレクション型が混乱して いるせいだとも思うが。
>>927 どっちにしても文字列のメソッドだから、そちらは正直どっちでも構わん
リストのメソッドに文字列結合機能があるのは気持ち悪いという話だから
joinについてはむしろ素の関数にしたほうが良かった気もするね string.join(['a', 'b', 'c']) → 'abc' string.join(['a', 'b', 'c'], '+') → 'a+b+c' みたいな まぁ単に「決め」の話だから、「これがPythonだ、おまえら慣れろ」で別に構わんけどw
ちなみにjoinは万能とは言え、文字列以外を要素に含むコレクションは扱えない。 >>> '-'.join([1, "2", "3"]) Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: sequence item 0: expected string, int found >>> '-'.join([x.__str__() for x in [1, "2", "3"]]) '1-2-3' >>> '-'.join(map(str, [1, "2", "3"])) '1-2-3' デフォルトで__str__を呼ぶぐらいしてくれてもいいと思うが、そうなってい ないのは、やっぱり重くなるからか?
>>931 > デフォルトで__str__を呼ぶぐらいしてくれてもいいと思うが、そ
個人的にはエラーになってくれるほうが気持ちいいな
数字から文字列のような型変換は原則として明示するべきだと思う
>>921 ,923
「明らかに」を使うあたり、思考停止しているとしか考えられない。
>>930 その書き方で、動くんだけど。
知らなかったの?
ここがあの名高いrubyのスレですね。
>921 の気持ちも分かるが 気分的(見た目等)には >915 の 疑問はもっと良く分かる
>>936 stringモジュールのjoin関数のこと?
import string
string.join(["1","2","3"])
'1 2 3'
1.6でunicode文字列が導入される前に使われていた関数だね。
unicode文字列を導入するにあたり
stringモジュールにufind()とかujoin()とか作るのもちょっとね
ということで文字列メソッドが導入されたわけだが
Python3000になれば少しはすっきりするのかな
まあなんだ、Pythonがどうかはしらんが、 PHPではjoin()は配列関数に区分されている。 RubyではArrayクラスのメソッド。 JavaScriptでもArrayのメソッドだな。 join()が文字列の関数という意見は初めて見た。 本気で言ってるのか、ただのPython厨か。 つうか、シーケンスにまとめてメソッドを定義できないの?
レシーバの概念を知らないんでしょう
夏休み厨まつり!
>>941 PHP、Ruby、JavaScript厨乙ww
普通に考れば文字列操作というカテゴリの操作だろ
シーケンス一般に文字列という特殊なシーケンスに特化した操作を含めるのは美しくない
もちろん文字列のメソッドとして(名前も含めて)相応しいかどうかはまた別の話だが
個人的にはstringモジュールの関数を呼ぶほうを選ぶかな
>>941 Rubyに詳しいみたいだから聞くけれど、
>>928 みたいに、イテレータの戻り値をJOINするのは、Rubyではどうやるの?
>>945 Pythonにも詳しくないみたいだから聞くけれど、
"イテレータの戻り値"ってナニ?
callableなイテレータってどんなイテレータだ?
>>946 next()の戻り値のことだよ。
どうも通じているのにわざと聞いているような気がするけど。
夏休み厨まつり!!
Pyhonの流れに乗ればいい。
ぱいほんのながれ
ぱいほんを信じなさい。
まぁpythonのばあい、文字列しかjoinできないから、他の言語とは事情が違う、
955 :
953 :2006/08/10(木) 20:14:10
Enumerableというシーケンス用モジュールがRubyにはあるけど、 joinメソッドは持ってないみたい。
956 :
945 :2006/08/10(木) 20:44:49
>>953 おお、ありがとう!おかげですっきりしたよ。
>>952 を見て、Rubyが外部イテレータをjoinする機能を持っているのかと思っ
て、調べまくっちゃったよ。これはArrayの間違いだよなあ。
Rubyだったら、イテレータを諦めて、Arrayを使うしかないよな。
irb(main):081:0> def get_hoge
irb(main):082:1> a = []
irb(main):083:1> 10.times {|i| a.push("hoge" + i.to_s)}
irb(main):084:1> a
irb(main):085:1> end
=> nil
irb(main):087:0> get_hoge.join("-")
=> "hoge0-hoge1-hoge2-hoge3-hoge4-hoge5-hoge6-hoge7-hoge8-hoge9"
>>952 .join('-') <-- かわいい
そもそもrubyなんてどうでもいい。
rubyを意識してる奴が多いんだよ
rubyのほうが出来がいいからな
はいはい
rubyかわいいよruby
>>944 >普通に考れば文字列操作というカテゴリの操作だろ
だからその根拠はなによ?おまえのいう普通とやらが何の根拠もないんだけど。
なんの説明もなしに「普通に考えれば文字列操作」ってばか?
ここで話題にしているjoin()は、「リストの要素を連結する」という動作だぞ。
そのオプションとして、間に挟む文字列があってもいいというだけ。
list.join()でもlist.join("str")でもlist.join(123)でもいいはず。
それをなぜ"str".join(list)のように文字列だけに限定するのかわからん。
rubyなんてしらん
>>965 俺もw
Ruby勉強すると何かいいことある?(と煽ってみるw)
ヒント 便利 > 合理的
>>964 普通に考えればそう、という奴相手に、何を言っても無駄だって。
感覚のレベルの話をこんな場所で摺り合わせるなんて無理だよ 個人的にはどちらの意見もそれなりに納得できる 正直なぜと聞かれても困るが
>>910 の例で言うと
python
'SPAM'.join(['eggs', 'sausage', 'ham', 'toast'])
ruby
['eggs', 'sausage', 'ham', 'toast'].join('SPAM')
と、思いっきり反対を行ってるわけで・・・
そう簡単に、「明らかにどっちがどう」とかいえない気が、・・・
つーかなんでいつの間にかRubyとの対比がメインになってるんだよ 他でやれ他で
郷に入れば郷に従えということで。
オブジェクト指向なんて捨ててしまえ
List=["1","2","3","4","5"] obj = "str".join(List) とやったばあい、直感的にみて obj は strクラスだろうとおもうわな。 たとえば、Pythonで、Listにjoinがあるとしたら、こんなかんじか? obj = List.join("str") とやったばあい、リストのメソッドなのにobjにstrクラスがはいってたら嫌だ。 せめて、入るのは要素にしてほしい。
そろそろ誰か次スレを立ててもらえませんか?
あと3日くらいもたそうぜ。
>974 なるほど、A objのメソッドはA objを返してほしいって感覚があるんですかね。pyhonは その点rubyはカオスですね。"abcdef"[2] == 99にはチョット引いたw
> なるほど、A objのメソッドはA objを返してほしいって感覚があるんですかね。pyhonは こんなんで納得されても 本当にそうなっているメソッドは 全体の何割あるんだろうね まあ数えたことは無いが
>>979 python
"abcdef"[2] == "c"
ruby
"abcdef"[2] == 99
高級言語なのにASCIIを知ってることを強要されるの何か違和感を感じる
まあ、?cっていう技があるみたいだけど?って何って感じであまり気持ちよくない気が・・・
だから、pythonのjoinは文字列しか連結できないんだってば。
Help on method_descriptor: join(...) S.join(sequence) -> string Return a string which is the concatenation of the strings in the sequence. The separator between elements is S.
次スレ立てるよ
立てたらココで教えてください。
もうrubyの話はいいでしょ。 ruby叩きたいのなら、rubyスレでどうぞ。
え?A objのメソッドはA objを返すのがPythonのデフォルトだったのか。
この話題に俺は飽きたので次スレに持ち込むのは禁止します
たしかに飽きた。
>>990 デフォッてほどでもないけど、
たとえば、len(s)や、min(s)、max(s)が、メソッドではなく関数で
実装されてるあたりに多少そういう配慮があるような気が・・・
rubyなら普通にs.length、s.size....
でも、いまstrのメソッド細かく見てきたけど、countとかindex系とか
必ずしもすべてというわけではない・・。
python zenみたいなdocumentになんか書いてなかったかなぁ・・・
やっと夏休みが来た院生ですが, Pythonを最初からやり直そうと, みんなのPython買おうと思います. 買った人いますか?
python.orgにある配布文書じゃダメなのか。
みんなのPythonはまだ店頭に並んでないと思います
joinに関する結論: よそはよそ うちはうち! わがまま言うんじゃありません! by かーちゃん J(`o´)し
1000だったらPython3000
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。