1 :
デフォルトの名無しさん :
2006/11/12(日) 22:51:44
Pythonヌレッドの遊迷塵 def 基地外: 「みんPy」の作者タソに粘着。Zope関係者らしい。暇らしい(ヒキコモリか窓際?)。 アスペルガーとか不安神経症とか分裂症とか。 def Python初心者: 初心者を装った質問を書き込む。空気を読まない。日本語もうまく読めない。
おっ、Pythonスレ。
おつ、ぱーいたーん
静かにスレ立て乙
_ ∩ ( ゚∀゚)彡 おっぱいそん! ⊂彡 おっぱいそん!
乙.py
9 :
Python初心者 :2006/11/13(月) 11:21:44
>>928 >しゃべりまくるGuido(なんかしんどそう・・
>
http://video.google.com/videoplay?docid=-6459339159268485356#13m59s 質問その1:
大変失礼かもしれませんが、928先生は
>(なんかしんどそう・・
と内容表現する「程度しか」英語のヒヤリング能力がないとか?
安倍総理並??(w
質問その2:
しゃべりまくるGuidoの印象から、
Python3000はPerl6同様、果てしない泥沼開発へ
突入する危険性はないのか?
無謀な言語仕様や機能の肥大化競争にPythonも
わざわざ参加する必要があるのか?
こうして夫々の言語が競争開発する度に互いに
模倣し合ったあげく、画一化された言語に変容する
ことになり、各言語独自の魅力を失うのではないか?
ま た お ま え か
> >(なんかしんどそう・・ > と内容表現する「程度しか」英語のヒヤリング能力がないとか? とバカにしつつ > しゃべりまくるGuidoの印象から、 と結局自分も、「しゃべりまくるGuidoの印象」で判断しているPython初心者 自己紹介乙w
_ ∩ ( ゚∀゚)彡 おっぱいそん! ⊂彡 おっぱいそん!
ヘタな煽りだな
もうみんな飽きてきたんだね
_ ∩ ( ゚∀゚)彡 おっぱいそん! ⊂彡 おっぱいそん!
>>9 >Python3000はPerl6同様、果てしない泥沼開発へ
>突入する危険性はないのか?
たとえば、2.xと3.xをparallelに開発していくことで、
仲間の開発者に段階的なストップがかかるような
状況にならないように、というような配慮をしている。
というかもろに「次のperl6にはなりたくない」と言ってるので、
開発のタイミング的なことはかなり気にかけている模様。
ZopeやApacheを良いバージョン移行の例としてあげている。
>無謀な言語仕様や機能の肥大化競争にPythonも
>わざわざ参加する必要があるのか?
>こうして夫々の言語が競争開発する度に互いに
>模倣し合ったあげく、画一化された言語に変容する
>ことになり、各言語独自の魅力を失うのではないか?
その辺は結構強調してて、ゼロからのつくり直しではないと言っている。
どちらかと言うと互換性の崩れるマイナーチェンジと言う感じ。
classic classを無くすとか、printを関数にするとか、
聞いてるともうほとんどやるべきことの大部分は決ってて、
完全に新しいフィーチャーはそれほどないと言うような印象
(generic functionかadaptorかみたいな議論はあるけど・・・・)
とにかくperl5→perl6みたいな根本的な大変身計画ではないのは間違い
ないだろうと言う印象
byあおられた人
レスは3行までだと言っとろうが
前スレオワタ
xml.domとxml.saxとElementTree、使い勝手の違いを教えて。
xml.domはプッシュモデル。簡単に扱えるがメモリを食う。 xml.saxはプルモデル。メモリは食わないが、状態管理がちょっと複雑。 ElementTreeは知らん。
逆だった>プッシュ・プル orz
はてなのPython日記から2006-11-13のエントリだけ抜き出すのにDOMだと
import urllib
def hatena():
return urllib.urlopen("
http://d.hatena.ne.jp/keyworddiary/Python?mode=rss ")
import xml.dom.minidom
dom = xml.dom.minidom.parse(hatena())
for elem in dom.getElementsByTagName("item"):
if elem.getElementsByTagName("dc:date")[0].firstChild.nodeValue == "2006-11-13":
print elem.getElementsByTagName("title")[0].firstChild.nodeValue
SAXだとこのくらい面倒くさい。
import urllib
def hatena():
return urllib.urlopen("
http://d.hatena.ne.jp/keyworddiary/Python?mode=rss ")
import xml.sax
class Handler(xml.sax.handler.ContentHandler):
def __init__(self):
xml.sax.handler.ContentHandler.__init__(self)
self._hash = None
self._name = None
def startElement(self, name, attrs):
if name == "item":
self._hash = {}
elif self._hash is not None: # in <item>...</item>
self._name = name
def characters(self, content):
if self._hash is not None and self._name is not None:
self._hash[self._name] = content
self._name = None
def endElement(self, name):
if name == "item":
if self._hash["dc:date"] == "2006-11-13":
print self._hash["title"]
self._hash = None
self._name = None
xml.sax.parse(hatena(), Handler())
24 :
Python初心者 :2006/11/14(火) 14:17:08
>>993 >Python初心者はこのスレと一緒に埋め立て。
こういう気持ちが優しい人が多いから、つい
早めにこちらに遷りました。(w
>>16 >どちらかと言うと互換性の崩れるマイナーチェンジと言う感じ。
マイナーチェンジなら何故?後方互換性を崩す必要が
あるのだろうか?
>classic classを無くすとか、printを関数にするとか、
>聞いてるともうほとんどやるべきことの大部分は決ってて、
>完全に新しいフィーチャーはそれほどないと言うような印象
ということは、Python3000っていう大袈裟な掛け声は
ユーザーに対するフィッシングに過ぎなくなるが…
>しゃべりまくるGuido(なんかしんどそう・・
直感的な発言だとは思うが、このコメントは
本質を突いている。
WallにしてもMatzにしてもGuidoにしても、言語機能の
進歩と拡大に疲れちゃってるんじゃないのか?
貪欲なユーザーのもっともっと!という圧力に
潰れそうになっているってのが、本音のような気がして
ならない。
このスレというか、このプログラム板の中で「良識ある
連中は」みんなそんな風に心の底では感じているように
思う。
>>22 ,23
わかりやすい例だね。
私は質問者ではないけれど、とても参考になったよ。
>>20-23 大変参考になりました.
XMLをトラバースして木構造のオブジェクトを作る必要があり,おうかがいしました.
ひとまずDOMで作り,必要が感じられた時点でSAXに切り替えようと思います.
ありがとうございました.
CGI(apache)からサーバー内部のファイルを改変できるようにしたいんだけど、どうもうまく行かない。 #!/bin/python file = open("/usr/local/src/pytest/asdfasdf","w") file.write("asdfasdfasfd") file.close() print("made file") 上のようなMakeTestFile.pyていうスクリプトがあって、 それをPythonのCGI部分から下のように実行してるんですよ。 process = subprocess.Popen(["python","MakeTestFile.py"], stdout=subprocess.PIPE) そうすると、/etc/httpd/error_logでなぜか以下のようなエラーが出る。 IOError: [Errno 13] Permission denied: '/usr/local/src/pytest/asdfasdf' /usr/local/src/pytestのuid:gidはroot:groupAになってて、ユーザーapacheもgroupAに 入ってるにもかかわらずパーミッションで弾かれる。 でもなぜか「sudo -u apache python MakeTestFile.py」だと上手く行く。 これは一体何が問題なんでしょうか…
おやおや 神も仏もあったもんじゃない
>>28 CGIについての質問は板違いです。WEBプログラミング板でどうぞ。
とりあえず、スクリプトを実行しているユーザーを表示させる単純なCGIを作って、
実際にCGIを実行して見てみたら?
31 :
28 :2006/11/14(火) 20:37:10
>>30 WebProg板を見てみたけど、
頼りになりそうなスレが無いです。
PythonでCGIはマイナーすぎるのか。
>とりあえず、スクリプトを実行しているユーザーを表示させる単純なCGIを作って、
>実際にCGIを実行して見てみたら?
それやるとapacheが実行してる、って出るんだよね。
んでsudoでやると上手く行くけど、CGI経由だと相変わらずダメ。
ああああああもうわかんねええええ。
環境変数あたりを調べてみな。 コマンドへのパスが通ってないとかなんとか。
33 :
28 :2006/11/14(火) 20:49:29
エラーがPermission deniedだからパスが通ってないことはない、 っつーか途中まではちゃんと実行されるんよ。 ただfile = open("/usr/local/src/pytest/asdfasdf","w") まで行くと必ず上記エラーが起きて止まる。
>これは一体何が問題なんでしょうか… おっぱいスレでパーミッションの話をし出すお前の頭
666にしてみる 'r'をためしてみる...
俺の、俺の、俺の話を聞け〜〜♪
関係ないけど変数名に'file'を使うのはあんまり良くない
suexecってオチはやーよ
39 :
28 :2006/11/15(水) 10:34:27
>>39 CGIのスクリプト内に直接
FILE = open("/usr/local/src/pytest/asdfasdf","w")
FILE.write("asdfasdfasfd")
FILE.close()
を書いたら実行できるの?
それでも出来ないなら、perlあたりでファイル書込みCGIを作って試すとか。
41 :
28 :2006/11/15(水) 11:44:58
>>40 CGIから直接ファイル生成した結果を整理したら、以下の通り。
uid=41(mailman) gid=41(mailman) 所属グループ=41(mailman)
uid=48(apache) gid=48(apache) 所属グループ=48(apache),41(mailman)
生成できない:
drwxrwxr-x mailman:mailman
drwxrwxrw- mailman:mailman
生成できた:
drwxrwx-wx mailman:mailman
drwxrwxrwx mailman:mailman
drwxrwxr-x mailman:apache
drwxrwxr-x apache:apache
drwxrwxr-x apache:mailman
42 :
28 :2006/11/15(水) 11:46:25
上のパーミッションとかは/usr/local/src/pytestの設定ね
ML は本日より COBOL について語る会 が占拠させて頂きます
誤爆?
モグリ?
>>43 しかし空気の読めない典型的なコボラだったなw
なんでまたPythonなんざに目を付けたのだろうか。
なんで作者のブログを貼る必要が? みんPyの二の舞にしたいのか
>>48 関連情報だから.
過剰反応しすぎではないですか(W
>>49 何かドキドキすることでもあるんだろ
そっとしておいてやれや
ていうか、 晒されたり煽られたりされるほど話題になってない気が…。
そう言えばS田ってもう終わったなw
科学技術計算をpythonでやらせたいのだが, matlab位しかプログラミングをしたことが無い. 英語でもいいんだけど,やっぱ日本語でpythonで科学技術計算をやらせる本って 無いかしら.
やらせる本じゃなくて,参考書
>>47 著者紹介を見る限り
同人本にしか見えんぞ
宣伝乙>著者の人、ってこと?
むしろ関係者が自爆しているのでは?(wwwwww
>53 Python Scripting for Computational Science H.P.Langtangen ISBN3-540-29415-5 位かな... もう一冊くらいは科学計算系があったような気もするが いずれにせよ英語
60 :
デフォルトの名無しさん :2006/11/16(木) 15:19:39
htmlのformからではなく、 pythonのコードからどっかのサーバーに対しPOSTすることはできますか? GETはそのままURL直書きでいいんだけど。。。
urlencodeしたデータをurlopenに渡してやればOK。
>>62 その写真をこのスレに貼った理由を、貴様に小一時間問い詰めたい。
…ああそうだよ。不覚にも笑っちまったよ。くそう。
和むな(w
アワワワワ
キーボードが汚れたOTL
>>68 だいたいそんな感じOTL
悔しかったんで
>>59 をアマゾンで購入してしまった…
>>59 じゃないんだけど、
ニューメリカルレシピ系の本だとモノによってはWebから無料でDLできるってのは本当ですか?
C++とか。
>>72 Fortran90キタコレ
確かPythonも書籍でこのシリーズあったと思うけど、
やっぱり購入しかないかな…
学生にはきびすぃ
学生しか買わないような本を「学生には高い」なんて言われたら商売成り立たないよw 世の中には授業料というものがあるのだ
でも高いものは高い
せめて5000円以内に…
図書館に希望出せば?
学生だったら大学付属の図書館に頼んで購入してもらえばいいと思うんだが
79 :
78 :2006/11/16(木) 22:42:00
2分遅れで被ったレスをしたハズカシ(^^;;)
その手があった! どもです
81 :
マーク若葉( ) :2006/11/17(金) 12:13:19
キモイ。
マーク若葉( ) キモーイ。
キモいと思ったらNG指定すれば良い コテハン勧めた理由はそういう理由もあるだろうし
ハンドル名を二転三転させそうでなあ。
みんな、実践Pythonの話をしようぜ!
初心者なら初心者らしく 「Eclipse なんてカス、ed がお薦めだと思います」ぐらいの見栄張ろうぜ。
どういう見栄だよw
実践Pythonは買うよぉ
そうですか
はじpyとオライリーと首吊り本しかなかったのに、最近急に出版ブームだなぁ。 実践とみんpyはレベル同じくらいっぽいから、多様にはなってない気はするが、いいことだ。
首吊り本とは何ぞや あと、初pyもオライリーじゃなかったっけ
>>89 著者には見本誌が送られてくるはずだから買う必要なし。
「首吊り本」ってどれ?
Pythonで学ぶプログラム作法じゃね? 実践の著者はzope関係の人なんだね
みんPy作者に粘着してた基地外もZOPE関係者らしいぞ.
Zopeって怖いね
怖い人たちが書いた本なんだね>実践
100 :
デフォルトの名無しさん :2006/11/18(土) 03:43:47
みんPyでPythonにハマったくちだが、実践とやらの著者は なんかやらかした人たちなのか?
これからPythonはじめてみようと思うのですが、どの本が一番いいですか? ちなみにCとJavaを少し、Rubyはかなりやってます
醜いけど面白いな、そこ。 本が出るたびに誰かが嬉々として著者を叩くのは、足引きの国の伝統だし仕方ないw なんて言うと、駄本を貶すのは正義なんだって、必死な人が怒るんだろうけど。 それにしても、209は出版日を無視してるのか。ネタにしても寒い。 スレのレベル自体そんなもんなのかも知れんが、ド低能だなー。
105 :
デフォルトの名無しさん :2006/11/18(土) 08:09:41
forで回すのはタプルとリストでどちらを使うべきでしょうか?
さーて、クリスマスのサザエさんは? 一、じんろく一人のクリスマス 二、カツオ、はなぞのさんに誘われる 三、タラちゃんのサンタはマスオさん の三本です お楽しみに♪
すみません…
>>107 は誤爆です
>>106 あ、そうなんですか。
速度に差が出るならタプルを使ってみようと思います。
どうもです。
>>106 ウソ書くな。
リストの方が普段より2倍多く回るってアニキが言ってた。
>>109 さんはウケですか?
その立場からの意見として、アニキについて詳しく
気持ちとしては歯痛的なタプルの方が速いようなイメージがあるんだけど
試してみりゃいいだろ
速度的な事じゃ無くて、一般的にはどちら推奨なんだろう。 参考書はリスト使ってるし、やっぱりリストなんかな。
>>103 発売日の差を考慮してもなお,「実践」の話題性の低さは考察に値する
評価基準は内容じゃなくて話題性ですか 2chくらい内容について考察した方が良くないですか 話題性は議論するような内容じゃ ないよう なんつってwww でも 話題性が無いって事はやっぱり本の内容が ないよう なんつってwwwwwwwwwww
>114 お前無茶しやがって… クォリティ低いネタを二度繰り返すモンんじゃねぇよ…
同じ純粋和書のみんぱいに比べると、実践Pythonの方が格段に話題になってないのは確かなようだな 内容はよく分らんが、二匹目のドジョウは黙殺されるってことなんだろ(w
それよりケータイで python な方の話題... ないね
番号なんかで呼ぶな!私は自由な人間だ!
119 :
マーク若葉( ) :2006/11/18(土) 12:04:31
>>116 >同じ純粋和書のみんぱいに比べると、実践Pythonの方が格段に話題になってないのは確かなようだな
>内容はよく分らんが、二匹目のドジョウは黙殺されるってことなんだろ(w
出版社の違いじゃないだろうか?
ソフトバンクとディーアート<−誰か知ってる?どんな本出してるところ?
Pythonだけでもマイナーなのに Python×Nokiaで、もう、小数点以下のハルカ彼方に逝ってる気がする
Roguelike-RPGを作ろうかと思うのでwindows上でcursesを使いたいのですが どういったライブラリを使うのがいいでしょうか? ざっと調べたところ、anyguiというものが引っかかりましたが プロジェクトページの Anygui is no longer being actively developed or supported. These pages are not up to date. という注意書きが気になって二の足を踏んでいます。
>120 敢えてそのピンホールを突いてきたんだから せめてこのスレくらいは話題にしても良さそうなもんだが... 誰か読んでないのか?
Webで検索する限り、実践PythonよりPython×NOKIA本のほうがよく紹介されている NOKIA本は、アマゾンに上がった直後にはてブにブックマークされている 実践PythonはNOKIA本以下の話題性ってことだ
>>121 もっと普通のGUIツールで代用した方がいいような・・・
つか、どの程度の規模のRoguelikeですか?
みんも実践も、「偏りも特徴も無い一通りの手引き」っていう性格が一緒だしな。 amazonとかネット書店で片方を見ると、もう片方が「一緒に売れてます」に よく出てるのが解せない。っていうか笑えるw 同じような本なのに、ほんとに二冊とも一緒に買ってる奴多いのかよw
>124 NetHackと同規模くらいです。
128 :
121 :2006/11/18(土) 19:52:09
Windows上でもCygwin上のPythonならimport cursesできまっせ ちゃんと動くかまで確認してないけど
130 :
121 :2006/11/18(土) 20:06:31
>129 回答ありがとうございます、試してみます。
>>121 pdcursesと_cursesmodule.c
>>121 すまんw
おれはpdcursesと_cursesmodule.cをちょっと書き換えて使ってる
wincon.hの関数を使う手もあるがまあめんどい
ちなみにWCursesってやつは使いもんにならんから
え、というか本当にRoguelikeのプロジェクト立ち上げるみたいな話?
やってやってー
nokiaってかsymbian?
>>125 発売前の書籍について随分詳しそうで好感が持てる。
日本語が小学生レベルなのも親しみを増す。
>>125 みんなのPythonの”この商品を買った人は…”には、ふつケルとかBinary Hacksが並んでる
出版社といい表紙といい、実践某とは格が違うみたいだ
無名出版社、無名ライター、表紙も微妙な三流揃いの実践Pythonは内容で勝負? それにしてはページ数が少なくね? 目次一覧などを見る限り微妙な解説と役に立たないサンプルコードが 延々羅列されているだけのような気がしてくるんだが…
表紙のメガネッ娘萌え〜
実践Pyは 良い教訓 になります
初心者でみんなのpython読み始めたけど、 p206のfileinputのサンプルが動かん。 ソースだけじゃなくて、実行前後の結果も記載してほしかった。 わかりづれー
1000円以上する定食ってなんなの? 基地外なの?
あわわわわ。
Windowsのコマンドプロンプト上だと ひょっとするとKeyboardInterruptって発生しない? ネットで見つけたサンプルで、 「無限ループ中にtryがあって繰り返す処理があり、except KeyboardInterruptでループを抜ける」 というようなのを動かしてるんだけど Ctrl-C押しても終了しない…
Ctrl + Zじゃね?
Ctrl-Cだよ
Zだとプロンプトが終わるな。
どっちよ? # キャッチできる try: while True: pass except KeyboardInterrupt: pass # キャッチできない while True: try: pass except KeyboardInterrupt: break
>>149 Windowsのコマンドプロンプトってかなり特殊な存在みたいだからねぇ。
95/98/MEとかはCtrl-Cが効かないって話があった気がする
>>153 なんとなく後ろは
while True:pass
と同等になってる気がする・・・
始めてのPython = はじぱい みんなのPython = みんぱい なのだから 実践Python = しっぱい と呼ぶことにしないか.
実乳
車輪の再発明もいいとこな気もするけど、Pythonでメンテナンスできる roguelikeって夢があるな。
貧乳が表紙の実践Python=ひんぱい でどう?
実践Python、表紙のおにゃの娘めがっさ萌えにょろ♪ 作者タンは萌えをよく理解していると思う!
萌えはともかく、それが一番のセールスポイントって作者自身が言い切るのはどうかと思う
なるほど。そういう分野の本だったのか。
内容はともかく本がたくさんあること自体がPython流行ってる?と思わせる要因になるので実Py歓迎
>>163 >萌えはともかく、それが一番のセールスポイントって作者自身が言い切る
まじかよ(w
それくらいしかアピールできるポイントがないってことか
どんな内容か楽しみだな(wwww
>>163 > 作者自身が言い切る
,-ー─‐‐-、
,! || |
!‐-------‐
.|:::i ./ ̄ ̄ヽi
,|:::i | (,,゚д゚)|| < ソースきぼんぬ。
|::::(ノ 中濃 ||)
|::::i |..ソ ー ス||
\i `-----'/
 ̄U"U ̄
>>168 コメントが3つだけとは、もしかすると寂しい.
なんか、何としてでもPythonの書籍や関係者をけなしたい奴がいるようだな。 「みんPy」の時もそうだったが。
Zopeって怖いね
zopeが怖いんじゃない。 日本のzopeコミュニティがおかしいんだ。
モジックソさんって、いま何やってるんだろ
蔑んでいるからだろうね
最近S田のモジ化が著しい。
↑↑↑全部Zope関係者↑↑↑
性根の歪んだ奴が多いのか、そんな少数の声が大きいのか。
↑↑↑全部Ruby関係者↑↑↑
177の人間性の歪み方がひどくて心配になる。 多分Zope関係者だろう。
俺だけはpythonにも無関係
な ぜ こ こ に い る
pychinko
おっ、ぱいちんこ。
ふー、びっくりした。でも、Zope関係者の意見はほぼ一点に集中している。 みんPyや実Pyは作者が電波だから、読む必要はないというもの。それ、ほんとなのかなあ。 今回の書き込みでは数字のうえでは「読まなくていい」派が圧倒的だったけれど、 レスをつけない多数のサイレントマジョリティを考慮にいれて決定させてもらいます。 みんPy・実Pyは読んだほうがいい。
188 :
149 :2006/11/20(月) 22:43:53
>>153 氏
サンプルどうもです。
だけど試してたのは前者の書き方…やっぱりトラップできません。
後者もだめでした。
とりあえずキーボードをゴンゴン叩いてたら、Ctrl+Breakでコマンドプロンプトまで落とせる
(Python.exe自体を強制終了させられる)のを発見しました。
根本的な解決にはなってませんがまあいいかという感じです…。
>>187 Zope関係者はみんぱいやみんぱい作者タソのことはアレコレ言うけど
実践Pythonについては否定的なこと書かないんじゃないかな?
なぜなら実践Pythonの作者がZope関係者だから
>>170 個人攻撃もあった。
177もそうだろ。
for i in zip(*zip(*zip(*zip([[1]])))): print 'happy hacking'.join([str(x) for x in i])
しっぱい。
こーなった。 >>> for i in zip(*zip(*zip(*zip([[1]])))): ... print 'happy hacking'.join([str(x) for x in i]) ... [1] いみがわからん。 >191
キチガイ Zope関係者 実践Python
世の中には意味のないものや意味のない人間だってあるのです
つまり世間様からの参照カウントがゼロになったら抹殺されると (違
エデンから追放されるくらいならいっそ
君たちにはまだ機械宇宙がある!
あわわわわ。
>>193 ごめ
for i in zip(*zip(*zip(*zip(*[[1]])))):
print 'happy hacking'.join([str(x) for x in i])
こうだった。
意味は素振り的なものです
やっぱりわからねーよー。これはジョークプログラムってやつ? >>> for i in zip(*zip(*zip(*zip(*[[1]])))): ... print 'happy hacking'.join([str(x) for x in i]) ... 1 >>> for i in zip(*zip(*zip(*zip(*[[1,2,3]])))): ... print 'happy hacking'.join([str(x) for x in i]) ... 1happy hacking2happy hacking3
日本語でおk
特定のお仕事以外にpython使ったら基地外だと思ってんの?
いや、ゴメン。 よく分からないけど、とにかく誤っておくことにするよ(wwwwww
柏野 雄太(かしの ゆうた) 東京理科大学理学部卒業、同大学院博士課程単位修得退学。研究所、SI ベン チャー、ヤフー(株)を経て、ゾープ・ジャパン(株)に入社。ゾープ・ジャパ ン(株)はその後USZope Corporationとの契約が終了し、現在はオープンソー ス・ジャパン(株)のゾープ推進部部長である。 会社非公認水泳部の部長も兼任。本業、本読み、副業、システム開発。アカデ ミックに愛想がつき、在宅勤務に飽きがきて、西海岸でインド人と喧嘩をし、東 海岸でカンヅメにされたのも懲りずに、東京で好き勝手にやらせてもらってい る。 小松 亮介(こまつ りょうすけ) 法政大学情報科学部卒業。ヤフー(株)を経て、ゾープ・ジャパン(株)に入 社。現在はオープンソース・ジャパン(株)のゾープ推進部にて、Zope、Python の特にロジックまわりを中心とした技術を担当する。 若くて有能で無口だが毒舌。海外旅行は会社の長期出張で、というラッキーガ イ。無刻印のハッピーハッキングキーボードと公文式英語が武器である。サニー ベールで食べたシシケバブが生涯で一番おいしいものだったそうである。 穂苅 実紀夫(ほかり みきお) 慶応大学理工学部卒業。同大学院修士課程中退。セイコーアイテック(株)を経 てゾープ・ジャパン(株)入社する。現在はオープンソース・ジャパン(株)の ゾープ推進部にて、Zope、Pythonの特にユーザインタフェースまわりを中心とし た技術を担当する。 コンピュータ言語のクイックラーナーで実装もOK なのだが、それを人に伝える 能力に欠如するのが玉に瑕。夜残業をするとアゴが真っ黒になるほど毛が濃い。 会社では稟議をあげたことがないが、家庭内では稟議をあげないと飲みにいけな いらしい。 ...学歴も職歴も微妙だな。まぁ、今の俺よりはマシか。
ActivePython2.5まだぁ?
>>206 職歴や自己紹介が妙に香ばしいのはこの際除外することにしよう。
で,だ。
Webで著者名を検索しても,実績らしきものがまったく見付からないんだよな。
唯一,一番上の人の活動実績が見付かる。
日本のZopeコミュニティで活動している人みたいだけど。
こんな風で書籍の内容は大丈夫なんだろうか。。。?
大丈夫でない書籍なんていくらでもあるので大丈夫ですよw
実績て何?
ウェブに個人名が出る「実績」とやらの方が少ないと思うのだが。
普通本を書くぐらいPythonを使い込んでいたら 自分でソフト作成して公開しているとか 少なくとも何かPython関連ニュースグループでの発言くらい見つかるだろう。 何ひとつない。
>>212 > 普通本を書くぐらいPythonを使い込んでいたら
> 自分でソフト作成して公開しているとか
> 少なくとも何かPython関連ニュースグループでの発言くらい見つかるだろう。
それは君の主観では。
少なくとも俺はネット上でのプレゼンスがない人が本を書いても全然驚かないし、
出てきた本が良くても悪くてもネット上でのプレゼンスの有無に善し悪しの理由を求めない。
と、著者本人が申しております。
>>215 Zopeは巨大で完成度が高いから、たとえ仕事で使っていても、ほとんどバグが見つからないんだよ。
コミッタでなければ本を書いてはいけないのであれば、某R本の大半は焚書にする 必要があるな。
>>211 一般的な「業績」は普通に個人名が出ると思うけどな。
論文とか書くでしょ。
>>212 VBとかC++とかの本を考えてみろよ。本なんて誰でも書いていいんだよ。
どちらかというと普通の仕事がなくて暇な人向きの仕事だろ。w
ソースコードも,MLのログもWebに公開される昨今だ。 ましてやPythonのようなオープンソースのスクリプト言語の書籍だぜ。 Webに名前が出てこない奴の本はオレは信用しないし,そう思うヤツは多いはず。 発売前で内容が確認できないならなおさらだ。 著者さんの会社名はハッタリなのかな?
どっちかというと
>>219 に同意。
WWW脳というか、なんでもウェブにあると勘違いしすぎ。
アンビエント・ファインダビリティあたり読んでみそ。
ハッタリで商売しちゃいけないのか?
>>219 普通の仕事が無くて暇な人が書いた本なんて読みたくないな(www
PerlやRuby,PHPで目に付く書籍は,
Webなんかで露出がある人が書いていることが多いと思う.
実際は,無名な著者が書いた売れない本が沢山あるんだろうけどね.
Pythonもいよいよ売れない本が量産される時代に突入したということか.
いい事じゃん
個人的な意見でいえば、仮に入門書を書くヒマがあるんなら、 その時間でプログラミングの先端に近付く勉強・研究をしたいと思うよ。
2chなんか見てる暇があったらプログラミングの先端に近づく研究をしなさい
今俺専門学校生だけどさ、 ほとんどの教師が本だしてるよ 特に非常勤の講師は全員出してる。
224は知名度でしか物事を判断できない人ということでFA?
学校の先生なら本職と入門書書くことは共通部分が多いだろうから、やりやすいんじゃないかな。
>>228 出した本を授業のテキストとして使うんじゃね?
お前買わされただろ?
>>225 悪いことだとは思ってないけどね.
>>229 よい評判と悪い評判がある.
Web上の露出によって善し悪しを判断できることは,いいことだと思うけどな.
pychinko!
で、モジックソさんはどこにいったの?
知名度と力量は必ずしも比例しない。例えば某有名人はウンコなコードしか 書かなくてもハッカーと呼ばれており(ry
>>235 ソイツが書いたウンコなコードが公開されているなら,晒すなりすればいいだろ
判断の基準となる情報が公開されているのが重要なんだよ
215みたいに数行のコミットログしか出てこないヤツはウンコに違いないと判断できるわけだ
このスレは、本を読まずに本を評価するスレになりました。
勇者はインパスをとなえた!実践Pythonは赤く光っている。
ハックできなければ本を書けない。コミッタでなければ本を書く資格がない。 ―― Pythonbook より
プログラミングpythonは最新版も翻訳されなさそうですか?
無理でしょう。誰も Mark Lutz の体力についていけません。 翻訳が仕上がる前に次の版が出てしまいます。
本は出版した時点で既に古い情報になるからblogやwikiで情報の小出ししている方が貢献度は高いだろう
どちらも一長一短。
リファレンスや小技集みたいなのだったらネットで小出しでもいいけどね
>>245 いろいろしっぱいしてそうな書籍よりネットの情報の方がマシ。
Python Cookbookの訳書まだ〜 入門書はもういいよぉ
まぁこうやって騒いでもらえるうちが花だな
実践Pythonは出版されてからが本当の勝負. 内容がアレなら誰も見向きすらしなくなる.
251 :
デフォルトの名無しさん :2006/11/21(火) 22:16:40
素朴な疑問だけど「みんPy」の著者ってPythonで実績があったの? プログラマとして有名な人なの? 少なくても「みんPy」が発売ことによって、Pythonユーザーが増えたのは 事実だよね?
みんぱいの作者に粘着しているのはZope関係者ですが このたび、Zope関係者(実績,露出皆無)が書いた書籍が発売されます 表紙には萌え絵を使ってみました なにとぞよろしくお願いいたします
>>251 >少なくても「みんPy」が発売ことによって
相変わらず日本語がヘンですね、寺田さん.
プログラマとして有名、か・・・・。 いったい日本のPythonユーザの何人が当てはまるのだろう。
今週のPatch/Bug summaryに日本人の名前のってるね。 Ruby関係者だけど
ムネオたん
それだ!!
自治体の図書館に、「実践Python」の購入依頼を出してみた。 たぶん購入されると思う。読んで良かったら自分でも買うかな。
し〜ん。
そろそろメタ(ry
reverseに返り血が無いのがウザい
reversedを知らない世代はとっとと焼き場に行ってこんがり焼いてもらいなさい。
>>262 何これ、メソッドじゃないじゃん、
しかもリスト返してないし、
まあ、使うけど
科学技術計算でpython使ってる人に本を出して欲しい. webとかあんまり興味ない.
中級者向けくらいの本がいいな。 初心者向きの本はこれ以上不要。
Pythonで学ぶデザパタの本とか
>>265 科学技術計算やってる人って低級言語しか興味ないような気が・・・
>>266 みんPyだって後ろのほうは十分上級者向きだと思う、
>269 > 科学技術計算に低級言語 FORTRAN とか使う椰子も居るんでない?
理論原子核物理みたいな分野は、予算も無いし、若手研究者の数も少ないのでFortranライブラリから脱却できる見込みはなさそう。
>>271 この本の著者の Langtangen サメは科学技術計算のプロなので内容は信頼できる。
何度か講演を聞いた限りではとっても頭の良さそうなナイスガイだった。
この人、相当な Python スキーで同じ出版社の Diffpack の本でもバリバリ Python を使ってる。
こちらはヒジョーに高度な本。俺は科学技術計算の例題目当てで買った。
マジレスすると、「現役」の人は本を出版するような暇は無い。
>>277 人による。
時間管理がへたくそな現役ドカタに暇がないのは100%同意。
>>278 PG/SE/PMの話ではない。科学研究者の話だ。
>>274 はノルウェーで Python 使って仕事(勉強?)してるのか。
いいなあ。うらやましい。
>>281 トップクラスの学歴、瞠目すべき業績、底辺PG以下の年収。(傍からみると)土方。
アカポス(界隈)の半分近くそんな感じだと思う。
好きじゃないとやってられん。
>>283 日本在住だよ。「Python 使って仕事」はその通り。
前向きなんだか後ろ向きなんだか分からないけど好感が持てそうな人たちだ。
土方なら下向きに掘る。掘って掘って掘りまくる。
「あと3メートルだけ掘ってこの穴を埋めろ」 「常識にとらわれるな。上を向いて掘ってみるんだ。」 こんなこと言われないだけ、土方は幸せだよね。
本を書くヒマが無けりゃドカタ認定なのか
書くヒマ以前に執筆依頼すらこないオレ様がきましたょ
291 :
Python初心者(復活) :2006/11/22(水) 12:32:10
前スレの話を蒸し返すようで気が引けますが、 (レベルが低いのも…) 教えて頂けないでしょうか? 下記の通りinput.txtを作り、 Name: Tarou Bob Cheng Age: 28 34 46 City: Tokyo New_York Beijing それを読み込み縦横を変換するプログラムを作成 するプログラムでこのスレの先生の模範解答です。 for x in zip(*eval('[line.split() for line in file("input.txt")]')): print x O/Pは下記の通りでOKです。 ('Name:', 'Age:', 'City:') ('Tarou', '28', 'Tokyo') ('Bob', '34', 'New_York') ('Cheng', '46', 'Beijing') ところがevalの前の*を消してみたら? for x in zip(eval('[line.split() for line in file("input.txt")]')): print x O/Pは、 (['Name:', 'Tarou', 'Bob', 'Cheng'],) (['Age:', '28', '34', '46'],) (['City:', 'Tokyo', 'New_York', 'Beijing'],) と元通りになってしまう。引数の関数の前に *をつける意味とその仕組みを教えて下さい。
単にシーケンス型を展開して渡すだけ。<* あと、evalとか意味わかんないで使ってるんだろうけど、そのevalは 全然意味無い
教えて教えて教えてよ 自分で考えないけど教えてよ 自分で調べないけど教えてよ めんどくさいから教えてよ
くるおしいほど愛してます
あわわわわわわ。
>>284 残りの半分はどんなかんじなの?
好きなことやって標準並みの収入得られるならうらやましいな。
>>291 import StringIO
file = StringIO.StringIO("""\
Name: Tarou Bob Cheng
Age: 28 34 46
City: Tokyo New_York Beijing
""")
data = [line.split() for line in file]
print "Without asterisk"
for x in zip(data[0], data[1], data[2]):
print x
print "With asterisk"
for x in zip(*data):
print x
つまり data の要素数が3のとき、
zip(data[0], data[1], data[2]) と zip(*data) は等しい。
別の例:
>>> args = (1, 2)
>>> (lambda x, y: x+y)(args[0], args[1])
3
>>> (lambda x, y: x+y)(*args)
3
チュートリアルに * の使い方書いてないの?
書いてあってもどうせな。相手が相手だし。
|:;:;:;:;:;:;:;:;:;:;:;:;:;:i;:;:;:;:;:;:;:;:;:;:;:;:;|
|;:;:_:;:_:;:_:;:_;:;_:;:l:;_;:_:;:_:;:_:;:_;:_;|
|______|_____|
| 三| _ _ |三 !
| 三| 三シ ヾ三 |三 |
| 三′ .._ _,,.. i三 |
ト、ニ| <でiンヽ ;'i"ィでiン |三.|
', iヽ! 、 ‐' / !、 ーシ |シ,イ
i,ヽリ ,' : !. |f ノ
ヾ! i ,、 ,..、ヽ lノ
| _ _ イ l
l ,ィチ‐-‐ヽ i /、
゙i、 ゝ、二フ′ ノ/'"\
| \ ー一 / / _,ン'゙\
,ィ|、 \ /_,、-'" _,.-''´ `丶、__
_, イ | ヽ_ 二=''" _,. -''´ """""´´ ``ー
http://www.python.jp/doc/release/tut/node6.html#SECTION006740000000000000000
うんこ置いてきますね つ●
なんだよ、ちゃんとチュートリアルの該当リンクを貼ってくれてるいい奴じゃ ないか。 しかしこの * の扱いは、「初めてのPython」にも載ってたけどなあ。 個人的には、** と辞書を使った引数アンパックがすごく好き。 引数一覧を、分かりやすい形で保存できるから。 def func(a, b, c): return a + b + c params0 = {'a':1, 'b':2, 'c':3} params0 = {'a':4, 'b':5, 'c':6} print func(**params0) print func(**params1)
* 関数内やメソッド内でimport fooしたとき、fooをグローバルに反映させるにはどうしたらいいですか。 なぜメソッド内でimportするかというと、モジュール名が実行時に決まるからです。 global foo; import foo ではだめでした。 * listに複数の要素を一度に加えるには(または同じlistに連続して追加するには)どうしたらいいですか。 list.append_all(10,20,30)またはlst.append(10).append(20).append(30) みたいにできるとうれしいんですが。 新規にメソッドを用意するしかないんでしょうか。 * pythonで、スクリプトを実行することなく構文チェックだけを行うにはどうしたらいいですか。 perlやrubyの -wc オプションに相当するものです。 今は #!/usr/bin/python import sys for arg in sys.argv: compile(open(arg).read(), arg, 'exec') というスクリプトを作っているんですけど、もっとかっこいい方法あれば教えてください。 よろしくお願いします。
>>304 最初のヤツ,global使って試してみたけどこういうのじゃないの?
>>> def foo():
... global sys
... import sys
...
>>> sys
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'sys' is not defined
>>> foo()
>>> sys
<module 'sys' (built-in)>
リストに複数の要素を追加するには
>>> l.extend([1,2,3])
とか
>>> l += [1,2,3]
すればいいんじゃね?
308 :
304 :2006/11/22(水) 22:59:17
>>306 ,307
どうもありがとうございます。
globalは、関数の中からならOKだったんですが、メソッドの中からだとだめでした。
extend()どうもありがとうございました。dir([])でそれらしいメソッドがないかさがしたのですが、
extend()という名前じゃちょっとわかりづらいですね。マニュアル読み直します。
あと3番目の質問(syntax errorがないか調べる)もよろしくお願いします。
>>308 メソッドでimportしたモジュールをreturnで返せばいいんじゃねえの?
alt + / も無効なこんな世の中じゃ
>>308 現状の方法で目的が達成できてるならそれでいいじゃん。
312 :
304 :2006/11/23(木) 12:03:19
globalのことですけど、こちらの勘違いでした。 file1.py で exec("global %s; import %s" % (module_name, module_name)) を実行すれば 別の file2.py でもモジュールが利用できるのだろうと勘違いしてました。 あるファイルでimportしたモジュールは別ファイルからは見えないというだけで、globalうんぬんは関係なかったですね。 おさわがせしました。
python固有の問題ではないのですが、起動した〜.pyのフォルダのパスを 起動後に取得するにはどうしたらよいのでしょうか? ソース内で絶対パスを指定することは避けたいです。
>>313 自分もだいぶ悩んだことあるけど結局できずに環境変数に絶対パス入れたよ。
import os, sys os.path.abspath(os.path.dirname(sys.argv[0]))
import os, sys os.path.dirname(sys.argv[0])
かぶった。 あと、sys.argv[0]でなくて、__file__ だけで実行中のスクリプトファイルのパスが得られる。
おまえら今日は祝日なんだぜ?
勤労に感謝する良い兄さんの日だっけ? 休日もパイソンパイソン
Djangoのひとたちですか?
インディアンに感謝して七面鳥を食べる日じゃなかったっけ
ところでモジックソさんっていまなにしているの?
インデントに感謝して錦蛇を食べる日です。
美味いのかな、ニシキヘビ。
食ったこと無い
>>322 Zopeの次はDjango?仲間割れの演出必死だな(www
Rubyに向かうトラパーの流れを感じました。
>>329 Django普通に盛り上がってるじゃん。いいことだよ。
過剰反応すると、キチガイのZOPE関係者(実績露出皆無)であることがばれてしまうから
気をつけた方がいいですよ。○○○さん。
332 :
Python初心者(復活) :2006/11/23(木) 14:42:55
>>297 Many Tks.
*が可変個の引数をとることは知っていましたが
関数の前に付ける意味が良く分からなかったのです。
>>292 >あと、evalとか意味わかんないで使ってるんだろうけど、そのevalは
>全然意味無い
for x in zip(*[line.split() for line in file('input.txt')]):
print x
Oh No!これで全然問題無く動くじゃないですかぁ。
おぅい!前スレの
>>715 ,717
restrip()もeval()も必要ないってさぁ。
まさか?
>evalとか意味わかんないで使ってるんだろうけど
なんてことはないよねぇ?(w
ーーーーーーーーーーーーー
715 :デフォルトの名無しさん :2006/11/03(金) 13:55:57
>>712 [line.rstrip().split() for line in file('input.txt')]
717 :デフォルトの名無しさん :2006/11/03(金) 15:10:30
>>712 別にprintを使うなとは誰も言ってない
for x in zip(*eval(
>>715 )):
print x
==============
Zope関係者はDjangoコミュニティの仲間割れを画策しているの?
ここから休日っぽい展開に突入する予感…
つーか、例の人キャラ変わってね?
新嘗祭の話か?
>>333 >Zope関係者はDjangoコミュニティの仲間割れを画策しているの?
サークルクラッシャーかよ(WWWW
>333 Zopeのユーザー会と同じ日にDjangoが勉強会ぶつけてきたから 恨みに思っているのかな? Zope関係者って怖いな!!!
Zope vs Django vs その他Pythonista (゚Д゚)ウマー
そもそもWebアプリケーションという分野にあまり興味がない PHPにでも任せておけば?と思う今日このごろ
>>339 なんだこの対立構図は(WWW
ZOPEは死に体なのでDjangoの対抗になんてなり得ないだろ(WWWWWWWWW
>>340 まあ過剰反応している人は基地外なので放っておきましょう
>>332 >Oh No!これで全然問題無く動くじゃないですかぁ。
>おぅい!前スレの
>
>>715 ,717
>restrip()もeval()も必要ないってさぁ。
それはね、他人のレス内のコードを自分のコード内に取り込むには
イキナリ
>>715 で参照するのはなんとなくperlっぽい無秩序な感じがする。
ここはpythonぽく他人のレス=文字列と捉えてevalをしよう
っていう冗談だったんだよ。
ちなみに関数の前の*は、単に関数の返り値に対して*を付けるのと
一緒。だからこの場合は*[line.split() for line in file('input.txt')]
という付け方に等しくなる
344 :
デフォルトの名無しさん :2006/11/23(木) 18:05:09
すみません質問です; 下のプログラムでhogehogeと表示されるにはどうすればいいのでしょうか? class Test : def printHoge(self) : print "hogehoge" def __init__(self) : print "hoge1" self.printHoge hoge = Test()
345 :
344 :2006/11/23(木) 18:09:05
すみません自己解決しました
>>344 まず、インデントを付ければいいんじゃないかな。
半角スペース連続で表示されなくなってるだけじゃね?
皮肉でしょ。
350 :
デフォルトの名無しさん :2006/11/23(木) 21:10:45
print >> sys.stderr, "hogehoge" の >>の後には何を持ってくればOKなんですか?
>>351 愛の入力方法がわかりません。
とりあえず漢字・英語・平仮名・片仮名は試したんですが・・・
どうすればいいでしょうか?
愛は入力するものじゃないの。 勉強して出直してらっしゃい。
352にはまだ早いな
httplibとかurllib,urllib2あるけど どれをどう使えばいいんですか?
マニュアル読んでなおそういう質問をするレベルなら,urllibを使いなさい.
>>350 ファイルオブジェクトと同様の write() メソッドがあるオブジェクトなら何でも可だと思われ。
360 :
Python初心者(復活) :2006/11/24(金) 12:41:25
>>343 >冗談だったんだよ。
遅まきながら…wwwwwwwww
361 :
デフォルトの名無しさん :2006/11/24(金) 13:00:23
ここは親切じゃないインタネットですね!
「情けは人のためならず」 ・人に情けをかけておくと,巡り巡って結局は自分のためになる ・人に情けをかけて助けてやることは,結局はその人のためにならない 選ぶのは君だw
だから必要なのは愛だって言っているじゃない。 勉強して出直してらっしゃい。 ふふふ。
SN比が低いなあ
364のせいでさらにS/N比が低くなった.
>>366 そもそも0x10000を超えるUnicode(滅多に使わないけど)の扱いが不完全なのが原因
おそらくPython 3000で解決する
一番問題なのは弾氏。
一番一般的に普及しているOSでちゃんとサポートされてないからな>0x10000を超えるUnicode ちゃんとサポートされれば素晴らしいと思うが、今のところ必要としているのは 言語学者と京極夏彦くらいだろう。w
> Unicode文字をそのまま出力できないという点は、実はperlも似ていて、そのためにbinmode STDOUT, ':utf8';という行がある。pythonでは、以下のようにすればいい。 ここは Perl に合わせるならこうだろうなあ。 import codecs, sys; sys.stdout = codecs.getwriter("utf-8")(sys.__stdout__)
ほとんど言いがかりに近いような記事だね。弾ちゃんに ・site.pyに encoding = "utf-8" って書け ・unichr()でBMP外の文字使いたけりゃ--enable-unicode=ucs4 でconfigureしろ って教えてあげたほうがいいのかな。
>>371 >・site.pyに encoding = "utf-8" って書け
あわわわわ。
>>> utf32chr = lambda n: ('¥U%08X' %(n)).decode('unicode_escape') >>> utf32chr(0x2A6B2) u'¥U0002a6b2'
375 :
デフォルトの名無しさん :2006/11/24(金) 18:46:24
ちょっと気になったんだけど、 pythonのCGIHTTPServerのCGIの処理ってどうしてるんだろう? 同じCGIを複数の人がリクエスト出した場合内部でマルチスレッドで処理してるの? それともキュー? どこを見ればわかるの。
377 :
375 :2006/11/24(金) 19:00:48
探してみたらソースコードがありましたね。 % cat -n /usr/local/lib/python2.4/CGIHTTPServer.py | grep fork 6 If the os.fork() function is not present (e.g. on Windows), 43 have_fork = hasattr(os, 'fork') 128 if not (self.have_fork or self.have_popen2 or self.have_popen3): 204 if self.have_fork: 205 # Unix -- fork as we should 210 self.wfile.flush() # Always flush before forking 211 pid = os.fork()
ずいぶん大雑把な調べ方だな
力強い。
pythonでCGIを書いているんですけど、ファイルロックをする方法がわかりません。 fctrl.flock()とfctrl.lockf()はファイルオブジェクトではなくファイル記述子を使うものであり、Unixでは使えるけどWindowsで使えるかは不明。 os.open()も第2引数でオプションフラグを指定できるみたいだけど、そのオプションフラグについてはマニュアルにも詳しいことは書いてないし、Windowsでは使えないみたい。 結局、どうすればいいんでしょうか。
泥臭いところで苦労するよりDB使えば?
listに[]でアクセスするとき、範囲外のindexであれば例外IndexErrorが発生するけど、例外を発生させるかわりにNoneを返すようなメソッドはある? ちょうどdictのgetと同じようなものが、listにも欲しい。 >>> lst = [1,2,3] >>> lst.get(4) None
>BMP外の文字使いたけりゃ--enable-unicode=ucs4 悩みどころ。 あの領域の漢字は滅多に出会わないから 無駄な領域喰うのもあれだし、コンパイルし直すのも面倒だし。 さりとて使われるとうまくいかない。
>>382 ないんじゃね?
必要ならlistを継承して作れるけど、可読性が下がる。
「エラーを出さないように工夫するプログラミングより、エラーを出して処理するプログラミングの方が楽だ」 みたいなことをPython入門(Pythonプログラミング)に書いてあった気がする
388 :
デフォルトの名無しさん :2006/11/25(土) 07:20:40
389 :
デフォルトの名無しさん :2006/11/25(土) 10:14:41
WindowsでPythonをいじくって遊んでいるのですが、MeCabを利用しようとして躓きました。
MeCabの最新版とMeCab python bindingを落としてきて、MeCabをインストールして、
MeCab python bindingのsetup.pyは↓のページを参考に書き換えました。
http://www.atransia.co.jp/home/fukamachi/Diary/2006/01/15/ またpythonのバイナリは↓を利用しています。
http://www.python.jp/Zope/download/pythonjpdist しかし、次のような出力が出てインストールできませんでした。
----ここから
running install
running build
running build_py
running build_ext
error: Python was built with version 6 of Visual Studio, and extensions need to
be built with the same version of the compiler, but it isn't installed.
-----ここまで
普段はVC++を使っているので、VS2003は入っているのですが、VC6は持っていません。
VC6無しにインストールすることってできるのでしょうか。
python setup.py build --compiler=msvc かな? 試してないから分からんけど マニュアル読んでみて
コンパイラのバージョンは合わせないといけなかったよーな・・・。 MinGW 使えば本体が VC6 でも大丈夫だと思われ。
>>389 あくまで一般論だが、プログラムとそれが依存するDLL
の両者がCランタイム(libc)に依存している場合、そのバージョン/変種は
一致していなければならない。
VC6のDLL版のCランタイムはMSVCRT.DLL、VC7.1(VS2003)ではMSVCR71.DLL
なので、当然まずいわけだ。
Pythonを自分でVS2003でビルドするか、いっそCygwin環境でも使うんだね。
393 :
389 :2006/11/25(土) 12:28:30
Pythonのバージョンを最新版にしたところ、無事コンパイルすることができ、次の状態までいけました。 リンクがうまくいってない感じなんですが、コレはもうMecabのスレで聞いたほうがいいかな。 MeCab_wrap.cxxはコンパイル時にキャストミスしてたんで、無理やりキャストした。
394 :
389 :2006/11/25(土) 12:33:43
Pythonのバージョンを最新版にしたところ、無事コンパイルすることができ、次の状態までいけました。 リンクがうまくいってない感じなんですが、コレはもうMecabのスレで聞いたほうがいいかな。 MeCab_wrap.cxxはコンパイル時にキャストミスしてたんで、無理やりキャストした。
VCでのコンパイルがからむ質問はCygwin使えとかあほな答えしかかえってこんからやめとけって
Cygwin使えよw
何かを始めるときに すぐにT-Shirtsを作るのはどうしてですか?
原価が安いからでは?
裸じゃ寒いから
そこにT-Shirtsがあるから。
そろそろ自分の体を隠すような生き方は止めませんか?
裸族キタ
オレが脱いだら、403はヘコんで引きこもると思う。
403 Forbidden
dict[]とdict.getを入れ替えて、dictの[]演算子でKeyErrorをださないようにできますか。 dict.get()ではなくあくまでdict[]でアクセスしたうえで、KeyErrorのかわりにNoneが返されるようにしたいです。 d = {} d.__getitem__ = d.get としてみましたが AttributeError: 'dict' object attribute '__getitem__' is read-only とのことで、dictのメソッドは変更できないみたいです。
できるけど危険だから教えない
危険で結構ですので教えていただけませんか。
なんでそんなことしたいの?
class D(dict): def __getitem__(self,a): return self.get(a) でそれっぽい動きしてる気がする。けど、あまりお勧めしたくない感じ・・・
412 :
デフォルトの名無しさん :2006/11/26(日) 03:58:31
Rubyと違って、組み込みオブジェクトのdictの動作そのものを変えることはできない。 dictを継承したクラスを作って使うことはできる。 分かりやすく書くなら、 class MyDict(dict): def __getitem__(self, k): return self.get(k) もしくは、↓でも同様。 class MyDict2(dict): __getitem__ = dict.get dictのデフォルトの動作そのものを変えられるわけではないので、 ご期待には添えないかもしれませんが、 使うときは、こんな感じになるでしょう。 >>> MyDict({'x':2}) {'x': 2} >>> x = MyDict(a=1, b=2) >>> x {'a': 1, 'b': 2} >>> print x["a"], x["b"], x["c"] 1 2 None こんなんでどうでしょうか。
はぁ・・・
from urllib import urlopen, urlencode
data = urlencode((("nname","名前"),("password","パスワード"),("login","true")))
print urlopen("
https://www.livly.com/login.php ",data).read()
*名前を全角で登録してる場合文字コード注意
livlyは動的なswfファイルエクスポートとかしてて、微妙に面白かったり・・・ この手のビジネスとしては極端に成功した例らしいと言う記事をどこかで読んだ・・・
417 :
デフォルトの名無しさん :2006/11/26(日) 17:26:58
python 起動すると「KKCFUNC が組み込まれました」 って出ちゃいます
ttp://okwave.jp/qa2201618.html このページの通り設定したのですがプロントが
C:\DOCUME~1\USER\MYDOCU~1>
見たいな感じでおかしなままです。
対話形式(>>>ってでるやつ)にもなりません
pythonのフルパスから実行すると普通に実行できるのですが
直せるものなら直したいです ><
>>417 command.com じゃなくて cmd.exe 使えば?
98とかそれ以前はシラネ
420 :
417 :2006/11/26(日) 19:33:24
>>419 cmd.exeで起動してるんですけどKKCFUNC組み込まれちゃいます
KKCFUNCとかedlinなんて名前を聞いたのは何年ぶりだろうか。テラナツカシス。
422 :
417 :2006/11/26(日) 21:12:07
cygwinのpythonが呼ばれてました しかもexeなのに24バイトでブツブツ....... お騒がせしました(^ ^;)ゞ
423 :
413 :2006/11/26(日) 23:05:33
>>415 ありがとうございました。ただ、教えて頂いた方法でPythonからログインする
事はできたのですが、根本的な問題は解決できませんでした(泣 もしよろし
ければなのですが、ソースをアップしたら、見ていただけますでしょうか?
48KB・2000行弱なんですけど・・・どうかお願いしますです。
まずなにが問題なのか
425 :
413 :2006/11/27(月) 02:07:03
今まではlivyにログインしてなくても
http://www.livly.com/myshop.php?rid=3dKu を開くと販売しているアイテム・島が表示されたのですが、先日からログイン
していないと「ログインしてください」と表示されるようになってしまい、
パースしてアイテム・島を拾う事ができなくなってしまいました。更に、
ブラウザからlivlyにログインしても、Pythonからだと「ログインしてください」
になってしまいます。
そこで、Pythonからログインしておけば回避できるかな?と思い、こちらで
教えて頂きログインしてみたのですが結果は同じでした。cookieの管理が
云々ってサイトを見てPython2.3から2.5に変更しcookielibを操作しようと
思ったのですが、やり方がイマイチわからなくて・・・
要するにクッキー保存してないんでしょ。 アカウント持ってないとテストできないようなプログラムをアップされても見てくれる 奇特な人は少ないと思う。
427 :
413 :2006/11/27(月) 02:50:14
>要するにクッキー保存してないんでしょ。 2週間程度cookieの管理と格闘していながら理解できないヘタレです。すみません。 一応、テスト用のアカウントは作成してあります。テストできる環境の準備は 整えてありますので、見て頂ける方おりますでしょうかm(_ _;)m
下手に出ても
>>428 みたいな返事しか返ってこないんだから、さっさとどっかにうpして添削よろしくって言い放った方がいいよ。
>>425 import urllib, urllib2, cookielib
j = cookielib.CookieJar()
opener = urllib2.build_opener(HTTPCookieProcessor(j))
opener.open("
https://www.livly.com/login.php ",data=urllib.urlencode((("nname","名前"),("password","パスワード"),("login","true"))))
#ここでjにcookieが入る。print jで確認可能
req = urllib2.Request("
http://www.livly.com/myshop?rid=3dKu ")
j.add_cookie_header(req)
#これでreqのヘッダーに必要なクッキーが書き込まれる。req.header_items()で確認可能
print opener.open(req).read()
#毎回本家からクッキーを取ってくるのがアホくさいと思うなら、FileCookieJarという選択肢も可能
431 :
413 :2006/11/27(月) 08:34:11
>>415 426 429 430
多少書き換えてしまいましたけどできました。ありがとうございました。
これでこのまま寝ずに仕事してもへこたれません。感謝ですm(_ _)m
>多少書き換えてしまいましたけど どうしてここに引け目を感じているような書き方なのか理解出来ない。
>>431 多少書き換えたものを晒しておけば、誰かの肥やしになるかもしれん。
簡単な質問で申し訳ないんだけど、 数値A":" リストの内容 "文字列="数値B "文字列="数値C っていう風に出力したいんだけど、どうすればいいの?
print """数値A":" リストの内容 "文字列="数値B "文字列="数値C """
436 :
434 :2006/11/27(月) 14:39:40
自己解決しました。多少無理矢理ではありますが。 print str(strA) + ": " + str(array[0:4]) + " aaa=" + str(strB) + "ccc=" + str(strC) としました。※len(array) = 4
437 :
434 :2006/11/27(月) 14:41:48
>>435 変数の付け方がおかしかったです。
print str(intA) + ": " + str(array[0:4]) + " aaa=" + str(intB) + "ccc=" + str(intC)
439 :
434 :2006/11/27(月) 14:42:27
440 :
434 :2006/11/27(月) 14:58:08
>>438 素晴らしい。使わさせていただきました。ありがとう。
指導料300円になります。
文字列フォーマットで変数が多くなると、「この位置に表示される変数はどれだっけ」って 後ろの変数リストを指で数えたりすることない?
>442 "%(変数名)s" % locals() はどうだろう
それは税込み210円。
448 :
413 :2006/11/27(月) 20:10:49
def (url, hoge):
-中略-
urllib._urlopener = ShopURLopener()
j = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(j))
data = urllib.urlencode((("nname","名前"),("password","パス"),("login","true")))
opener.open("
https://www.livly.com/login.php ",data)
#リクエストurlは他defで指定
req = urllib2.Request(url)
try:
data = opener.open(req)
except:
print "失敗"
return 0
教えて頂いたソースが最初動かなくて、こんな感じで動きました。その後、
脱字に気が付いて教えて頂いたソースでもちゃんと動きました。書き換える
必要は全くなかったです。ありがとうございました。
今日からPythonの勉強はじめますた。 a=u'ちんちん' b=u'おっき' print a+b*2
結果は! 結果は!
???n???n?¨?A?≪?¨?A?≪
モジックソさん、○○○さんかわいそう。
↑が一番かわいそう
もじっくそって何?
ユークリッド互除法 最大公約数 def gcd(a,b): if b == 0: return a gcd(b,a%b) print gcd(21,15) ---結果--- None --------- 何故?
- gcd(b,a%b) + return gcd(b,a%b)
プログラムが間違っているから
>>457 ありがとう。なるのはなった。
でも理由がピンとこない。
理由がピンとこない理由がピンとこない
なぜ a と書かずに return a と書くかはピンとくるのか?
Rubyとごっちゃにしてる説を唱えてみる
今やっと理解できた。
>>461 値を返すのはb == 0のときだけでいいから、gcd(b,a%b)の部分は関数呼ぶだけでいいと思ったので。
>>462 たぶんそう。rubyのスクリプト例見ながら練習してるから。
ソースはなるべく見ないようにしてるんだけど、流れが分からないときだけ見るようにしてて、
それでごっちゃになってるんだと思う。
>>462 Perlもだっけ?<最後に評価した値を勝手にreturn
>>463 せっかくだから非再帰版も作ってみれ。簡単だから。
466 :
407 :2006/11/28(火) 20:54:33
>>411 ,412
おくれましたが、どうもありがとうございます。
サブクラスで対応することにしました。
cgi.FieldStorageからデータをdictにコピーしてHTMLテンプレートで使っているんですが、
params.get('key')よりはparams['key']のほうが喜ばれるので。デザイナーに。
PHPもJavaもRubyもエラーにならなかったので、Pythonでエラーがでるのには驚きました。
普通はエラーになったほうが嬉しくないか?
悪貨は良貨を駆逐するとはこのことだな。
>>467 俺の感覚からすると信じがたいことだが、
プログラムや入力データを書き間違えていてもエラーにはならない方がよい、と考える人が結構いるみたい。
以前、某システムの互換品を作っていて、その元となるシステムが
ありえないぐらい文法エラーや実行時エラーに寛容なのに驚いた。
当然ながらそのシステム用に流通しているプログラムや入力データの中にも
大量のエラーが見つかった。システム側にエラーを指摘する機能が乏しいので
エラー入りのデータがそれと気付かれることなく出回るわけだ。
似たような事例はたぶんたくさんあると思う。ウェブブラウザはその典型ではないだろうか。
タグが閉じてなくても表示してくれる方がうれしいこともあるだろうし(俺はイヤだが)
.cssファイルや.jsファイルが見つからなくてもよきに計らってくれる方がうれしいこともあるだろう(俺はイヤだが)。
List.findで要素が見付からなかったときOCamlでは例外が発生してSMLでは option型のNONEを返すんだが、俺はSMLのほうが好きだなあ。 動的型付けの言語では例外出たほうがいいのかもしれない。 でもRubyでHash#fetchはあんまり使わない気がする。
どちらが好ましいかはケース・バイ・ケースだよね。だから [] と get があるわけだ。
でも、
>>466 のケースは文章を読む限りではエラーになったほうが良さそうだよな。
ウェブブラウザはもちろん、間違ったHTMLでも”正しく”表示してくれるにこしたことはないだろう。 業務システムだって、間違ったデータでも正しく処理できるならエラーを出す必要はない。 問題は、間違ったデータで正しい処理をする超能力がどれだけあるかだが。
?
pythonのインタラクティブシェルだと print u'てすと' てすと となるのですが、ipythonだと print u'てすと' 文字化け となっちゃいます。~/.ipython以下に設定するとことかあるのでしょうか?
>>475 print unicode('ほげ', 'mbcs')
とやったときはどうなる?
list = [1,2,3] "".join(list) じゃ無理だから、似たような方法ない?
def hoge(x=[1]): x.append(1) print x >>> hoge() [1, 1] >>> hoge() [1, 1, 1] はめられたああああ! 初期化してくれねぇのかよ!
>>476 reduce(lambda x, y:str(x)+str(y),[1,2,3])とか?
>>479 いや、読み返して絶叫したんだよ。
正しくは「はまった俺はアホ」でした。すみません><
組み込み関数ならlambda使わず一発で出来るよ "".join(map(str,list))
>>481 まともな入門書なら、なぜそのようなことが起こるのか、たいてい書いてあるな。
>>477 冗長に思えるかも知れないけど、リストコンプリヘンションは表記として分かりやすいと思う。
"".join([str(x) for x in [1,2,3]])
あと、listという変数名は使わない方がいい。
>>484 >まともな入門書なら、なぜそのようなことが起こるのか、たいてい書いてあるな。
ハマりどころだからね.
初心者がハマりやすい罠を、丁寧に解説してあるのがよい入門書の条件だと思う.
pythonの関数名で、アンダーバーをいれる・いれないの基準ってありますか。 例えばdict.has_key()はアンダーバーが入っててhasattr()は入っていないんですが、ここらへんの命名方針があれば教えてください。
http://oldriver.org/python/pep-0008j.html > 関数名
>
> 関数名は lowercase 方式で命名。アンダースコアで単語を区切って可
> 読性を上げてもよい。mixedCase 方式は、既に広く使われているような文
> 脈(たとえば threading.py)で、互換性を保つ場合にのみ許される。
>
> メソッド名
>
> 関数の場合とほぼ同じ。lowercase 方式で命名し、可読性を上げる目的で、
> アンダースコアで単語を区切るのは構わない。
さじ加減次第?
488 :
475 :2006/11/29(水) 07:32:24
test = u'てすと' print u てすと となりますた。なんでだろう。
>>487 Python 3.0で統一されるかも根。
491 :
Python初心者(復活) :2006/11/29(水) 12:14:41
またご指導下さい。 Python2.5ではgeneratorにおいてsend()によって「値を 渡す」ことが出来るようになったとある。 例えば: lang = ['C','Java','Perl','Lisp', 'Python','Ruby'] def conLang (maximum): i = 0 while i < maximum: val = (yield lang[i]) if val is not None: i = lang.index(val) else: i += 1 if __name__=='__main__': x = conLang(6) print x.next() print x.next() print x.send('C') print x.next() print x.send('Python') print x.next() 以上のコードから、原則的にyield文の戻り値は代入 出来ないが、send()とは結局(yield ??)の 「代入」を可能にするということですか?
知らない
>>> def mygen():
... while 1:
... val = (yield 10)
>>> __import__('dis').dis(mygen)
2 0 SETUP_LOOP 10 (to 13)
3 >> 3 LOAD_CONST 1 (10)
6 YIELD_VALUE
7 STORE_FAST 0 (val)
10 JUMP_ABSOLUTE 3
>> 13 LOAD_CONST 0 (None)
16 RETURN_VALUE
(参考:
ttp://www.python.jp/doc/2.4/lib/bytecodes.html )
直前のnext()やsend()が値を返した直後はYIELD_VALUEまで実行されている。
send(arg)を呼ぶとargをTOSに積んでSTORE_FAST以降を実行。
だからval=argになって次のYIELD_VALUEまで進んで値を返す...ということじゃないかな。
next()を呼んだときはTOSにNoneを積むから、next()はsend(None)と等価だと思う。
>>> def mygen2():
... while 1:
... yield 10
2 0 SETUP_LOOP 8 (to 11)
3 >> 3 LOAD_CONST 1 (10)
6 YIELD_VALUE
7 POP_TOP
8 JUMP_ABSOLUTE 3
とにかく2.5ではnext()を呼ぶとTOSに何かを積むらしい。2.4ではYIELDの前後はこうだった。
3 >> 3 LOAD_CONST 2 (10)
6 YIELD_VALUE
7 JUMP_ABSOLUTE 3
> val = (yield lang[i]) > yield文の戻り値は代入出来ないが してるじゃん。
>>495 早漏ぎみですね・・・ストレスでせうか?
ストレス溜まってる時って遅漏にならねえ?
499 :
デフォルトの名無しさん :2006/11/29(水) 14:38:11
質問です。 Tkinterを使おうと思っているんですけど Microsoft Visual Studioのダイアログエディタみたいに、 GUIでボタンなどの部品を配置するソフトはありませんか?
EmEditorやらサクラエディタやらTerapadでコード書く人って、 Pythonにはあまりいなそうだね。 需要が無いからか、色分け設定用意されてないことも多いし…。
サクラエディタでやってるけど。 色分け、普通に出来てるよ。 少数派なの? みんなはなに使ってるのよ。
>>499 普通は、RADが裏で勝手なコードを吐くのが
イヤだから、スクリプト言語を使ってると思うんだ。
そういうのがいいなら、僕なら netBeansかなにかに
しとくなぁ。
Emacsでしょ、普通
ファイル構成が把握できるぐらいの小規模ならEmEditorで書いてますが・・・
>>503 日本語の扱いが他のアプリと統一できないのが嫌。
>>507 自動補完って、普通の入力補完と違うの?
サクラエディタで、色分けと普通の入力補完してるけど。
最初に .py の拡張子付きで保存しないと、機能が使えない
のが多少難だけど、特段不満ないなぁ。
キーワードが少し足りないと思うけど、
設定ファイルに自分で書き足せば問題なし。
ああ、自動補完て、もしかして RAD のように
コード生成してくれる機能のこと?
あったら便利かもしれないけど、
コードの雛形をコピペするので十分かも。
509 :
507 :2006/11/30(木) 02:32:58
>>508 最近調べていないから断言出来ないけど、
サクラエディタの補完機能はおそらく、マクロ実行コマンドを叩いてから実行されるが、
crescent eve の場合はうざい位に候補を自動で出してくれる。※編集中ファイル内の単語から候補を抽出。
EmEditor、秀丸とかも試しんですが、いづれもマクロを使って実現しているだけで、
必ずトリガーが必要で好きじゃない。
サクラで↑のような自動補完機能があれば即乗り換えなんですが、
どうでしょうか?
というか今から調べてみます。
もしMac使ってる人がいたら、 TextMateというエディタがおすすめ。 たしかTurboGearのスクリーンキャストで 使われてたので見た事ある人いるかも。
mac使ってる〜研究室で. matlabモードもあるかな…
どーも,おきたら読んで見る
>>511 TextMateは日本語入力が難しいって話だけど、どのへんがおすすめなの?
構文色分け程度なら他のエディタもあるし。
>>516 日本語の問題はhetimaさんという人がプラグイン書いてくれたおかげで、
大分ましになったかな。作者は次のMacOSXの機能を利用して完全に解決
すると公言してる。
魅力は、他のIDEのようにフォルダを階層表示するドロワーを備えていて、
関係ファイルをタブ表示できるGUI機能。文字列を選択してオプションキー
を押すだけで選択範囲を行方向の選択から列方向の選択に切り替えて複数の
行を編集できたり、鬼車という正規表現エンジンがかなり強力で文字列の
検索置換の自由度が高いなどのエディタ機能の充実。それと、選択文字列を
シェル変数に入れてそれをスクリプトで処理してそのままエディタの文字と
置換できるので、シェルで動く言語なら何でもスクリプトが書けて、
既に何十という言語に対応した文字の色分けやスクリプトをパッケージを
まとめたバンドルというプラグインが存在してる事かな。
だめな部分は、シェアウェアだという事と、日本語に完全に対応してない、
Emacsに比べるとまだまだスクリプトが充実してない事かな。
グレートにマイナーなエディタ使ってるから、色分けできねえ。 コマンド一覧吐き出させる方法があれば、設定を自作できるにしても、 本体だけでできることを少なくしてる特性上、満足なモノはできないっぽい。 かといって、全部のモジュールを拾うのは大変だし。 がんばっても入力補完できないから、alt /壊れてるIDLEの方がマシか…。
色分けって、そんなに必要? 自分は、入力補完はないとやってられないが、 色分けは特段に必要性とか感じないけど。
>>520 で、そのグレートにマイナーなエディタってなに?
いや、避けて通りたいのでw
もうメモ帳でいいじゃないか。
オレはバイトコードを手書きしてるんだぜ?
525 :
499 :2006/11/30(木) 11:23:47
>502 >510 レスthanx SpecTIXが消滅している模様・・・ TkinterのGUIビルダーは結局ないのか?! GUIビルダーを使いたいならPyGTKかwxPythonを使うしかないのか?!?!
>>525 コードの雛形をコピペするんじゃ、
ダメなの?
そんなにGUIビルダーが必要かなぁ。
Java でRAD のおせっかいにはうんざりしたクチなので。
まあ、でも、オンラインのコードのコピペOKの
ちゃんとしたクイック・リファレンスはほしいと思ってる。
>>525 > GUIビルダーを使いたいならPyGTKかwxPythonを使うしかないのか?!?!
それはイヤなの?
528 :
デフォルトの名無しさん :2006/11/30(木) 12:33:20
javaで代数螺旋のリチュースをかきたいのですが、 public class Lituus extends Applet { public void paint (Graphics g) { g.setColor(Color.red); int centerx = getWidth()/2; int centery = getHeight()/2; g.drawLine(0,centery,centerx*2,centery); g.drawLine(centerx,0,centerx,centery*2); g.setColor(Color.blue); int n=360; double zoomx=10,zoomy=10; double delta =Math.PI*2/n; int radius = (centerx<centery)? centerx*3/4:centery*3/4; double c =Math.sqrt(2*Math.PI)*(radius); double t = 0.001; double r =Math.sqrt(ここ); int lastx = (int)(r*Math.cos(t))+centerx; int lasty = -(int)(r*Math.sin(t))+centery; for (int i=1;i<=n;i++){ t+=delta; r=Math.sqrt(ここ); int x = (int)(r*Math.cos(t*zoomx))+centerx; int y = -(int)(r*Math.sin(t*zoomy))+centery; g.drawLine(lastx,lasty,x,y); lastx=x; lasty=y; } } } ここってかいたとこができればできるらしいのですが、わかりますか?おしえてください
529 :
528 :2006/11/30(木) 12:38:46
すみません。まちがえました
530 :
Python初心者(復活) :2006/11/30(木) 12:39:50
>>494 >next()はsend(None)と等価だと思う。
本当だぁ!
>>491 の最後を
x = conLang(6)
print x.send(None)
print x.next()
print x.send('C')
print x.send(None)
print x.send('Python')
print x.next()
と変えてみたが、全く同じ動作をする…
しかし、
if val is not None:
i = lang.index(val)
else:
i += 1
だから、Noneがsend()されればelse:以降が
実行されるってのは、当たり前だと言えば
そうだが…
対話環境の日本語の扱いがうまく行きません。
http://lowlife.jp/nobonobo/zine/5/6.html ここを見てsitecustomize.pyを設置しているんですが、
---------------------
Python 2.4.3 on Windows XP
>>> sys.getdefaultencoding()
'mbcs'
>>> print u'ほげ'
ほげ
---------------------
Python 2.3.4 on RedHat EL4
>>> sys.getdefaultencoding()
'UTF-8'
>>> print u"ほげ"
≫
---------------------
Python 2.3 on Debian serge
>>> sys.getdefaultencoding()
'euc-jp'
>>> print u"ほげ"
Traceback (most recent call last):
File "<stdin>", line 1, in ?
UnicodeEncodeError: 'euc_jp' codec can't encode character u'\xb2' in position 3\
: illegal multibyte sequence
---------------------
>>> print u"ほげ" がうまく行くのはWindowsだけです。
何かアドバイスをいただけないでしょうか?
532 :
531 :2006/11/30(木) 13:06:03
なお、どのマシンでも、対話環境でなくてファイルに記述すれば、 print u"ほげ" は問題なく「ほげ」と表示されます。
533 :
Python初心者(復活) :2006/11/30(木) 13:21:20
アキュムレータ(累積器)プログラムのクラスを使用した 正式ヴァージョンと関数を利用した簡易ヴァージョンです。 class Accumulator: def __init__(self, start): self.val = start def incr(self, amount): self.val += amount def getValue(self): return self.val def accum(n): s = [n] def infunc(i): s[0] += i return s[0] return infunc if __name__=='__main__': val = Accumulator(5) val.incr(3) print val.getValue() val.incr(4) print val.getValue() ac = accum(5) print ac(3) print ac(4)
534 :
Python初心者(復活) :2006/11/30(木) 13:22:19
>>533-534 自分も以前に調べたけど、ないと思う。
Pythonには
1.lambda関数には、式は書けるが、文は書けない。
2.クロージャが参照している変数は、書き換えはできない。
という制約があるから。
Guidoはlambdaが嫌いなので(見づらくなりがちだから)、1.が変わることは
ないだろうけど、2.は単に、代入するとローカル変数の宣言になってしまうと
いうだけなので、適当な表記法さえ見つかれば、クロージャの参照している変
数の書き換えの機能を追加しても良い、という話になっているらしい。以前の
Pythonスレにそう書いてあった。
こんな感じ? def foo(n): a = [n] return lambda i: a.__setitem__(0, i + a[0]) or a[0] f = foo(1) print f(2) print f(3) print f(4)
多少長いがこんな方法もある。 class foo: def __init__(self, n): self._n = n def __call__(self, i): self._n += i return self._n f = foo(1) print f(2) print f(3) print f(4)
>>531 うまくいかない環境のPythonのバージョンを
うまくいく環境のものに合わせればいいのでは。
540 :
536 :2006/11/30(木) 15:26:47
>>537-538 うわー、やろうと思ったら何とかなるのね。
しかし、537は無理やり過ぎないか?
ここだけの話だが俺は昔lambdaをランバダと読んでいた。 知らないだろ?ランバダ。
>>531 うちは XP で Python2.5だけど、
その方法ではうまくいかない。
(うちだけなのか?)
対話モードでは、諦めて
print unicode('ほげ', 'mbcs')
方式でやってるなぁ。
LANG=ja_JP.eucJPにしてみるとか
544 :
531 :2006/11/30(木) 17:07:52
>>539 残念ながら、バージョンは変えられないのです。
>>543 それはもちろんやっております。
ところで、
>>531 の書き込みが一部、おかしくなっていました。
Python 2.3.4 on RedHat EL4
>>> print u"ほげ"
≫ ←ここ
「≫ 」になっていますが、実際は a の上に ~ が付いたものが出るなどの文
字化けになっています。まあ些細なことですが。
そもそも print u'ほげ' が対話環境で問題なく出力される人って、どのぐらい いるんだろうか?いたら環境を教えて欲しい。ちなみに自分はダメ。
すくなくとも Python 2.4.2 では手元の Unix/Linux で問題なく 出力できている。
>>545 Linux (FC5 UTF-9)だが、問題なく出力される
>>> print u"ほげ" 造族 ナニコレ(WWWWWWWWWWWWWW
win2k + Python2.4.3、2.5 (コマンドプロンプト) FreeBSD6.1R + Python2.4.3、2.5 (PuTTY経由) でもいけるようだ
つ >> print "ほげ" ほげ これで不都合ないので問題ない
XPsp2 Python2.5だが問題なく表示されるぜ sys.getdefaultencoding()が asciiでもutf-8でもmbcsでも問題ない
>525 Python Tk Gui Builder 出たばかりのソフトか
日本語のインライン表示ができないエディタなんてつかえねえやアホが。
〜回生って関西の表現なのかな.
実践Pythonって今日発売日だよね. 買った人いますか? ブログ検索では買った人を見かけない...orz...
こんなのあったんだ。kaa教えてくれた人ありがと。
>>560 微妙。
日曜プログラマしか満足しねえだろ。
TextMateって,作者タソがマルチバイト対応宣言してるんじゃなかったっけ?
正式に対応してインライン変換できるようになるまで待つことにするよ。
>>561 Leopardの機能つかって対応すると言ってる。
スレ違いでしつこくてすまない
>>559 今日普通に平積みしてあった。
あまりにも低レベルな内容だったので当然スルー。
いちいちifを図で解説してもらわなくても結構という感じ。
>>563 >あまりにも低レベルな内容だったので
「実践」ってタイトルについているのに低レベルなのか。
低レベルな実践ってなんなんだ(w
貧乏学生にはtextmateが有料なので(ry
>>562 スレ違いだと分かってて居座ってますってことか?
>>566 上のほうでWindowsのエディタの話もしてたから
許容範囲かと思ったけど、別のスレに誘導すればよかったね
ごめんね
許容範囲外だと思ってるのは約一名だろうから気にするな
>>568 いや、こっちもカリカリしすぎた。気分悪くしてスマソ。
Macだけど、miの新しいPythonモードがあればいいんじゃね。ヒマなとき自分で作ってみるか ・・・と、2, 3年間考えてるが何もしてない
はじぱい>>>みんぱい>しっぱい
>>560 二本語ワロス。
といかインライン入力(だっけ?)ってできないのこれ?
任意のクラスオブジェクトをiterableにするには、__iter__(self)やiter(seft)を 実装するだけでは足りないでしょうか。 if object in MyIterable: anything_else... こんなことをすると、 TypeError: iterable argument required とか TypeError: argument of type 'type' is not iterable と怒られます。
>>575 MyIterableクラスのインスタンスをつくってイテレータとして利用するんだよ。
if object in MyIrerable():
# any code...
こんなかんじか?
>>576 あぁ、なるほど。ありがとうございます。うまくいきました。
クラスオブジェクトのままではだめか……
[(0, 1), (2, 3), ... , (n-2, n-1)]を生成するのに zip(range(0, len(n), 2), range(1, len(n), 2))とやったんですが もうちょいスマートなやり方ないですかね?
579 :
578 :2006/12/01(金) 13:01:38
あ、nは偶数という前提で。
>>> n = 10 >>> [(i, i+1) for i in range(0, n, 2)] [(0, 1), (2, 3), (4, 5), (6, 7), (8, 9)]
どうもありがとうございます。 思いつかなかった自分にへこむ・・・・・・
582 :
Python初心者(復活) :2006/12/01(金) 16:42:36
>>536 Yr Cmt Tks.
>>537 ,538
色々とあるもんですねぇ。
そこで、無理やりgeneratorで実装してみました。
def foo(n):
a = [n]
i = 0
while 1 :
val = (yield i)
if val is not None:
a[0] += val
print a[0]
else:
print 'send(any number)!'
f = foo(1)
f.next() #<-これが無いとエラーになる。
f.send(2)
f.send(3)
f.send(4)
f.next() #<-これは正常に動作する。
f.send(5)
f.next() #<-これは正常に動作する。
これからするとgeneratorにはいきなり値を
渡すことが出来ないことになるが?
(TypeError: can't send non-None value to a
just-started generator)
他に最初から値を渡す方法があるので
しょうか?
importするモジュール名を変数で指定できますか。 モジュール名を実行時に指定するわけです。 現状の構文とは相容れないとはわかってますが、 exec("import %s" % name) よりスマートな方法があれば教えてください。
>>> sys = __import__("sys") >>> sys <module 'sys' (built-in)>
sendはyieldで停止しているジェネレータを再開するときにyieldに値を 返させる関数だから、停止してない最初に呼べないのはあたりまえ。許した としても、yieldで停止した後に呼ばれたsendで上書きされるので意味がない。
> 現状の構文とは相容れないとはわかってますが、 何でそう思った?
R○○○だとrequire 'hoge'できるのにPythonではできないの?ウンコだね! という流れだと予想。
>>584 さんくすです。そうか、ライブラリじゃなくて組み込み関数だったのか。
このままだと代入先があらかじめわかってないとだめなので
mod_name = 'mymodule'
locals()[mod_name] = __import__(mod_name)
でいくことにしました。execよりは見た目複雑ですけど、これでOKです。
>>586 import モジュール名 と
import 変数名 との区別がつけられないからです。
現状の構文では、import XXX によって、モジュール名と、そのモジュールを代入する変数の両方を同時に指定している訳で、
これが import 'モジュール名' だとモジュールを代入する変数を文字列で指定することになり、pythonのしくみとしてはおかしいかなと思いました。
rubyとは違って、モジュールを変数に代入するのがpythonなので、これは仕方ないと思ってます。
>>588 動的にモジュールを決めてロードしたいだけなら、モジュール名と同じ名前で束縛する必要はない。
temp_module = __import__('mymodule')
として、モジュールオブジェクトtemp_moduleの属性にアクセスするだけでいいと思うよ。
>>589 だな。
むしろ変数名のほうがコロコロ変わったんじゃ使いにくいだろね。
>>588 のやりたいことがいまいちよくわからん。
>>588 > 現状の構文では、import XXX によって、モジュール名と、そのモジュールを代入する変数の両方を同時に指定している訳で、
import A as B という構文もあるわけだが。
>>589-591 はいはい、見当違いレス乙。
588の下の段落は586へのレスだろうが。
其の者はRxxxの優位性を示そうと虎視眈々と狙ってゐた。
595 :
Python初心者(復活) :2006/12/02(土) 16:29:40
>>585 :デフォルトの名無しさん :2006/12/01(金) 19:53:47
>sendはyieldで停止しているジェネレータを再開するときにyieldに値を
>返させる関数だから、停止してない最初に呼べないのはあたりまえ。
これは納得。
>許したとしても、yieldで停止した後に呼ばれたsendで上書きされるの
>で意味がない。
許せば少なくとも、停止させるだけの無意味なf.next()を書く必要が
なくなるので意味はある。
ところで、先生!
>>582 if val is not None:
a[0] += val
print a[0]
else:
print 'send(any number)!
f = foo(1)
f.next() #<-これが無いとエラーになる。
f.send(2)
f.send(3)
f.send(4)
f.next() #<-これは正常に動作する。
f.send(5)
f.next() #<-これは正常に動作する。
最初のf.next()の時だけ何故、else:節が実行されない
のでしょうか?
yieldで止まってるから。つか仕様嫁。sendはyieldから返る値を指定するnextなの。 1.最初にsend(x)する 2.yield iでジェネレータが止まる。呼び出し側にはiが返る 3.次にsend(y)する 4.yieldがyを返し、ジェネレータが実行を再開して次のyieldでまた止まる。 だからxは意味がない。
実践Python、なんでぜんぜん話題にならないの? 発売前もそうだけど、発売されてからも全然わだいにならないのはなぜ? 誰も注目してないの? そんなにひどい内容なの? やっばり「しっぱい」なの?
>>596 補足しとくと、
仕様書を読むだけでなく実際にジェネレータを定義して試してみればわかるが、
最初にsend(x)できるのはxがNoneの時だけ。
>>601 内容がひどいからというよりも、書いてる人が偉くも偉そうでもなくて煽りどころがないからじゃないの。
>>601 Blog検索で調べてみたけど、言及数が少ないなー。
普通に話題になってないだけだと思われ。
Pythonもこういう駄本が出版されるようになったということか。
ま、いいことですな。
>>604 みんぱいの作者タソはZope関係者に粘着されてたんでしょう?
実践Pythonの著者もZope関係者らしいが(WWWWWWWWWW
>>601 何を話題にしろと?どこに注目しろと?
・・・表紙?
困ったときのZope&ぱい本叩き。わかりやすいなwwww
>>607 いや、ほとんど社交辞令みたいなもんだろそれ
あのぅZopeのスレがないようなので... Zopeの管理画面にfavicon.icoを表示させたいんですが どこ置けばいいですか?
613 :
Python初心者(復活) :2006/12/03(日) 18:39:29
>>596 Tks fr Res.
>>602 >yieldで止まってるから。
f.next() #<-これは何もOPしない。しかし無いとエラー。
f.send(2)
f.send(3)
f.send(4)
f.next() #<-else節のsend(any number)!をOP
f.send(5)
f.next() #<-else節のsend(any number)!をOP
しつこいようですが、最初のf.next()が
yieldで止まってelse節まで実行しないなら、
何故?二番目や三番目のf.next()は
else節を実行するのでしょうか?
簡略化した while 1: yield #else節 で説明すれば、最初のnext()は「関数の最初から」「次に出くわすyieldまで」 を実行する。その間にelse節はないので実行されない。 二回目以降のnext()は「止まっているyield」から「次に出くわすyieldまで」 を実行する。yieldの後else節があるので、それを実行した後while 1で戻されて yieldで止まる。つか、最初のnextが気に入らないなら無理にジェネレータを 使う必要ない希ガス。
つか、糞本ですが買ってくださいとか言われる方が困る
心持ちとしてはすごくまっとー
>>607 は厨房か、ひっきーか?
正直社会人の感性ではないな
http://www.python.org/dev/peps/pep-0342/ の consumer でおk
def consumer(func):
def wrapper(*args,**kw):
gen = func(*args, **kw)
gen.next()
return gen
wrapper.__name__ = func.__name__
wrapper.__dict__ = func.__dict__
wrapper.__doc__ = func.__doc__
return wrapper
@consumer
def func(n):
while 1:
val = yield n
if val is not None:
n += val
else:
print "send(any number)!"
f = func(1)
print f.send(2)
print f.send(3)
print f.send(4)
>>615 >つか、糞本ですが買ってください
そうだね、
たとえ本当に糞本だったとしても、普通はそんなことは言わないね。
くわしいな
有名人とは書いてないだろ。トップレベルなんだろ。何がトップかは放っといてやれ。
623 :
Python初心者(復活) :2006/12/04(月) 12:00:28
>>623 >Really Pythonic Code!
お前が言うなよ(WWWWWWW
つか,参照先間違ってね?
>>616 これはカッコいい!デコレータってすごいな!
すみません、また対話環境の日本語なのですが、少し進展がありました。 うまく動かない環境では、 "ほげ".decode(エンコード名)と u"ほげ" の内容が一致しないのです。 -------------------------------- Python 2.3.5 (#2, Sep 4 2005, 22:01:42) [GCC 3.3.5 (Debian 1:3.3.5-13)] on linux2 >>> "ほげ".decode('euc-jp') u'\u307b\u3052' >>> u"ほげ" u'\xa4\xdb\xa4\xb2' -------------------------------- Python 2.3.4 (#1, Nov 4 2004, 14:06:56) [GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2 >>> "ほげ".decode("utf-8") u'\u307b\u3052' >>> u"ほげ" u'\xe3\x81\xbb\xe3\x81\x92' -------------------------------- Python 2.4.3 - Enthought Edition 1.0.0.beta4 (#69, Jul 13 2006, 15:35:31) [MSC v.1310 32 bit (Intel)] on win32 >>> "ほげ".decode('mbcs') u'\u307b\u3052' >>> u"ほげ" u'\u307b\u3052'
対話環境で日本語が正常に処理されるのは、最後のWinXP版のみなのですが、
これだけが二つの式の内容が一致しています。
残りはいずれも、u"ほげ"の側はデコードされていません。元のエンコードの
ままです。
そこで予想を立てたのですが、Python2.3以前では、対話環境では u"ほげ"を
デコードしないのではないかと思うのです。
ということでお願いなのですが、print u"ほげ"がうまく行く方、行かない方、
それぞれPythonのバージョンを教えていただけないでしょうか?
ただし、すみませんがsitecustomize.py を設定している方に限ります。
http://lowlife.jp/nobonobo/zine/5/6.html
すみません、長すぎるのでまとめます。 対話環境で >>>print u"ほげ" ほげ がうまく表示される方、されない方、 それぞれPythonのバージョンを教えていただけないでしょうか? できたらOS等の環境もお願いします。
そんな回りくどいことをしなくても、すずきせんせいに聞けばちゃんと教えてくれるよ。
>>627 > Python2.3以前では、対話環境では u"ほげ"を
> デコードしないのではないかと思うのです。
その通りだと思われ。
631 :
626 :2006/12/04(月) 15:39:31
すみません、どうもPythonのバージョンは直接は関係ないようです。 むしろ問題は、対話環境自体のようです。 同じWinXPの Python 2.4.3 - Enthought Edition 1.0.0.beta4 でも、対話 環境の種類で結果が変わりましたので。 --------------------------- # 通常の対話シェル >>> "ほげ".decode("cp932") u'\u307b\u3052' >>> u"ほげ" u'\u307b\u3052' --------------------------- # IDLE 1.1.3 >>> "ほげ".decode('cp932') u'\u307b\u3052' >>> u"ほげ" u'\x82\xd9\x82\xb0' --------------------------- # IPython 0.6.15 -- An enhanced Interactive Python. In [6]: "ほげ".decode('cp932') Out[6]: u'\u307b\u3052' In [7]: u"ほげ" Out[7]: u'\x82\xd9\x82\xb0'
632 :
626 :2006/12/04(月) 15:42:58
すると解決策は、 ・Pythonのバージョンを上げて、その標準の対話環境を使う ・u"ほげ"のデコードに対応した対話シェルを捜す このどちらかになりそうです。 しかし、前者はなかなか難しいし、 後者も、IDLEとIPythonがダメですからねえ。うーん。
"ほげ".decode("mbcs") とか unicode("ほげ", "mbcs") とか書けばいいジャマイカ。 "mbcs" のところは環境依存。 汎用性のある方法が分かっているのにヌルーするのはなぜ?
634 :
626 :2006/12/04(月) 16:08:31
>>633 その理由は、
・"ほげ".decode("cp932")と書くより、u"ほげ"の方が簡単
・スクリプトファイルの中では u"ほげ" と書いているので、統一したい
(スクリプト内では当然、エンコーディング指定は冒頭の一箇所のみにしたい)
・違うサーバごとに、対話環境で違うエンコーディングを打ち込むのは混乱する
"ほげ".decode("cp932"|"euc-jp"|"utf-8")
などです。
毎回エンコーディングを指定するのが面倒ならテキトーな関数なり派生クラスを定義して使うとか。 ちなみに以下の例ではキー入力のエンコーディングはファイルシステムのエンコーディングと同じに違いないっ!と仮定。 >>> import sys >>> class u(unicode): def __new__(cls, s, enc=sys.getfilesystemencoding()): return unicode(s, enc) >>> u("ほげ") u'\u307b\u3052'
636 :
626 :2006/12/04(月) 16:30:22
>>635 これは面白いですね!ありがとうございます。ちょっといじってみました。
>>> class u(object):
... import sys
... def __new__(cls, s, enc=sys.getdefaultencoding()):
... return s.decode(enc)
...
>>> u("ほげ")
u'\u307b\u3052'
u"ほげ"にカッコをつけるだけですむのは確かに楽です。しかし、
>>> u"ほげ"
u'\xa4\xdb\xa4\xb2'
こちらが直らないのは、やはり残念ですね。
638 :
626 :2006/12/04(月) 17:18:27
>>637 > sys.stdin.encodingやらsys.stdout.encodingやらがasciiになってるんじゃないの?
残念ながら、なっていません。
DebianではEUC-JP、RedHatではUTF-8、WinXPではCP932です。
>
http://python.matrix.jp/tips/compatibility/interact_encoding.html > とかが参考にならんか?
残念ながら、ならないようです。
環境変数「PYTHONSTARTUP」に
interact.py
# -*- encoding: mbcs -*-
などを各サーバに指定してみましたが、結果は同じでした。
そもそもこのページには、内容に疑問があります。
mbcs, cp932, shift_jisはほとんど同じもので、ひらがなの文字化けの原因には
ならないと思うのですが。
あんまり関係ないけど、
>>637 のページ、
> \python25\python -c "import sys; print sys.stdout.encoding"
cp932
> \python25\python -c "import sys; print sys.stdout.encoding" > out.txt
> more out.txt
None
という違いがあることも書いてあるといいかもね。
>>639 リダイレクトしても、結果は変わらなかったぞ(Python2.3 on Linux)。
2.5だとそうなるの?
641 :
640 :2006/12/04(月) 18:13:37
ごめん、こちらの間違いだった。 print sys.stdout.encoding を 間違えて sys.getdefaultencoding() にしちまってた。
>>618 まとめると
A: 判型が微妙
B: レイアウトが微妙
C: 実践というタイトルが微妙
D: サンプルコードが微妙
E: 著者は無名、(何がかは微妙だけど)トップ
なるほど、これでは話題になるわけがないな.
この種の内容のない煽り書き込みは、何が目的なんだろうか? 『みんなのPython』はぼろくそに叩かれていたけれど、人に借りて読んでみたら ごく普通の入門書だった。まあ買う気はないけど。 Rubyも散々な言われようだったけど、使ってみたら、好みは分かれるだろうが 悪い言語じゃなかった。 この煽りどもの暗い情熱はどこから涌いてくるのだろうか? ママの愛情が足りなかったのか?
python-devすげいな
科学技術計算にはRubyとPythonどっちがいいんだろう? ワタシはMatlab鹿使えないんですが.
>>644 いや、ここ2chだし。責任って重石の取れた、匿名筆談ならこんなもん。
人間の品性にどんな希望を抱いてるか知んないけど、
リアル以上に下司の声が大きいくらいが、むしろ自然じゃないか。
どんな板・話題でも、下層民のルサンチマンは所嫌わず。
努力してそうしてるわけではない。
おい、おまえら。下層民とか言われてるぞ。
>>646 Rubyの事情は良く知らないんだけど、たぶんPythonでいいと思う。
NumPy, SciPy, mathplotlibといった、洗練されたライブラリが大量にあるから。
ボク下層民です。 648さんごめんなさい。
>>644 みんぱいの場合は、作者本人への粘着もあったよな
Zope関係者の仕業と言うことになってるんだっけか?
>>644 >Rubyも散々な言われようだったけど
Matzも他言語をよく扱下ろすからな。同情できん。
自分の基準で何を言うかや、どの情報を採るかを決めるのは、 ある意味とっても健全だわな。 なんて書いてて思ったんだけど、mixiにPythonコミュってある?
今ちょろっと検索かけただけだけど思ったよりあるっぽいね
656 :
デフォルトの名無しさん :2006/12/05(火) 00:23:07
>>646 Matlabで用が足りているなら学習コストをかけてPythonを使う必要はない希ガス。
科学技術計算以外のこと「も」やりたいなら超お勧めだけどね。
多分、研究室とは別に、自宅に用意したいんだろう。 そういう時、無料というメリットは大きい。 あと、SCILABとかと違って、汎用言語だというのは、 欠点でもあるけど、メリットでもある。 自分の場合、計算結果をRDBに保存する必要がでてきて、 ああPythonでよかったと思った。
scipyは大分よくなったけど、数値計算を楽にしたいと思っているのならまだ今はmatlabを使った方がいい。
660 :
646 :2006/12/05(火) 11:55:46
みなさんどうも.風邪を引いて家で論文読みです.
matlabだけだと学校出た後にきついかなと思ったのと,
ゲームとかも作れるようになりたいなと思ったので質問しました.
>>656 のmac版はないかなぁ…
自分で探します
662 :
Python初心者(復活) :2006/12/05(火) 13:10:27
>>624 >つか、糞本ですが買ってください
>>616 のコードも良いけど、
>>615 のこれも
結構Really Pythonicだと思わん?
泣けるで…
ところで、
三項演算子はandとorの組み合わせで代用可能だと、
どこかで読んだ覚えがある。
x = 2
print ('One' if x == 1 else 'Not One')
print (('One' and x == 1) or 'Not One')
これはうまく作動するが、x = 1 になると下の式は
Trueを返す???
正しくはどうやるんでしょうか?
663 :
Python初心者(復活) :2006/12/05(火) 13:21:21
口はばったいことを敢えて言わせてもらえば、 始めてのPythonにしてもそうだが、外人が書く本は どこか著者が全力で書いている部分がある。 そこが読者の心を打つ。 ところが日本人が書く本は、どこかこの程度で いいじゃん的な部分が見られて萎える。 これは内容が分かり易いとか難しいとかを 超えたものだと思う。 自らの著作に対する姿勢の問題じゃないか。
>>662 ・・・・・・・・・・。
print x == 1 and 'One' or 'Not One'
>>662 ただ、Pythonだと0は偽になるんで、値が0の時を真にしたい場合にハマる危険がある。
>>663 ぶっちゃけ得られる銭が全く違うからなぁ・・・
日本では専門書なんて売れないから印税なんて雀の涙
米国では図書館が買ってくれるだけれも馬鹿にならない
そういう文化インフラが嫌になるくらい違うんだよね
>>665 そうだね。トリッキーな書き方はPythonに似合わない気がする。
素直に if 文で分けるか、2.5 以降の三項演算子を使うのが吉。
>>663 >どこか著者が全力で書いている部分がある。
全力で書きすぎて厚くなってしまった本をありがたがるのは
体力がありあまっているガイジンかオマエみたいな変わり者だけだよ
初めてのPythonには仕事や教育の現場で得た経験が詰まってる。 日本のpy本はまとめサイト級(ほめ言葉)って気がする(読んでないから知らんけど)。
>>670 >読んでないから知らんけど
ハイハイ、妄想しがちなヒキコモリは黙っていてね
zope乙
>>663 そんなあなたにはmatzの本がおすすめ。
pydevでコンソールでutf-8文字化けしないようにってできまつか?
twistedの2.5はまだですか
676 :
Python初心者(復活) :2006/12/06(水) 21:19:19
>>664 ,665,666,668 Tks.
>ただ、Pythonだと0は偽になるんで、値が0の時を
>真にしたい場合にハマる危険がある。
x = 0
print x == 0 and 'Zero' or 'Not Zero'
これ、ハマらないようだけど?
677 :
Python初心者(復活) :2006/12/06(水) 21:20:41
>>667 >米国では図書館が買ってくれるだけれも馬鹿にならない
「初めてのPython」初版、第二版とも市立図書館に既にある。
「みんなのPython」はリクエストして、現在読んでる。
「実践Python」はついこの前リクエストしたところ。
来年にはこの4冊が揃ってるはず。
来年もし市立図書館でこの4冊を発見したら、貴女は
米国ではなくて私と同じ市に住んでいるのかも…
>>673 >そんなあなたにはmatzの本がおすすめ。
表紙はいかにも品無いが、最初のRuby本は確かに
良かった。Perlのラクダ本に匹敵すると感じた。
>>676 b = True
print b == True and 0 or 'Not Zero' # => 'Not Zero'
てことだろ
>>677 いや 最初のあの本はダメだと思うが...
Perl4のラクダ本は良くまとまってたよな
Perl5版はぜんぜんダメだが
俺も買わずに図書館に入れてもらった。 みんなが読めるようにした方がいいだろ。
よく図書館で借りるだけで気が済むね。 言語の入門書なんて、一番手元に置いておきたい類の本じゃないかな? あ、もしかして借りたままなのか(wwww
入門書は立ち読みで十分
kuma-
686 :
Python初心者(復活) :2006/12/07(木) 12:31:13
>>678 いや正しい?ハマり方は、
def makeZero():
return 0
print makeZero() and 'Zero' or 'Not Zero'
じゃなかろうか?
687 :
Python初心者(復活) :2006/12/07(木) 12:33:17
Python初心者には学ぶ姿勢が感じられない。ただの煽り厨。
まあそんなに気にするなよ。 誰もがあんたみたいに賢く能率がいいわけじゃない。 それに、話題の提供にはなっているしね。
>>691 図書館の職員ですか?wwwwwwwww
>>692 どうでもいいけど、はやく本返せよ。
はがき送っておいただろ。
>>687 RoRはインストール含めて10分って言ってた気がしたけど、
Churaもインストールから始めたら何分なんでしょうね。
早いだけの奴は嫌われるよ。
いまさらだけど、デコレータって、クラスの中以外でも使えるのね。 単純だけど、ものすごく応用範囲が広そうだ。 考えた人は賢いなあ。
デコレータは初めて見たとき、アスペクト指向っぽい考え方だなぁ、と思った。 デコレートの情報をクラスから分離できたり、 クラスのメソッドを一括でデコレートするようにできたりすれば面白そう。
functoolもよろしく
702 :
デフォルトの名無しさん :2006/12/08(金) 11:22:11
これはひどい
これはひどい
しっぱい
長い時間かかる処理の間何も表示しないのも微妙だなと思って 手動で止めるまで標準入力にピリオドを表示させるのを意図して作ったんですけど import sys, time, threading def do_something(): time.sleep(10) #何か長時間かかる処理... class myThread(threading.Thread): alive = True def run(self): while self.alive: sys.stdout.write('.') time.sleep(1) def kill(self): self.alive = False t = myThread() print '開始', t.start() do_something() t.kill() print '終了' こんな感じで問題ないですかね?
709 :
Python初心者(復活) :2006/12/08(金) 13:04:57
>>699 ,700
デコレーターはシンプルな方から逆に考えるとその本質が
掴みやすい。
1.一番簡単な直接記述例(3行):
print 'Hello'
print 'Python'
print 'Good Bye'
2.関数化した例(5行):
def say_name():
print 'Hello'
print 'Python'
print 'Good Bye'
say_name()
3.夫々を関数化した例(9行):
def greeting1():
print 'Hello'
def greeting2():
print 'Good Bye'
def say_name():
greeting1()
print 'Python'
greeting2()
say_name()
710 :
Python初心者(復活) :2006/12/08(金) 13:06:17
4.そしてこれがデコレーター(15行)! def deco1(func): def greeting1(): print 'Hello' func() return greeting1 def deco2(func): def greeting2(): func() print 'Good Bye' return greeting2 @deco1 @deco2 def say_name(): print 'Python' say_name() デコレーターとはシンプルに書けることを隠蔽化と 汎用化のため、わざわざ複雑に構造化しているに 過ぎないのではなかろうか? 上記の1項は極端にしても普通は2または3項の 書き方で十分ではないかと思うが…
712 :
デフォルトの名無しさん :2006/12/08(金) 14:43:47
Pythonなんかやってる方が恥ずかしい Rubyやれよ売国奴が
コンピュータ関連書籍を買うときはまず索引の充実度をチェックするのだが、 実践Pythonのやつはヒドすぎ。索引無いも同然。ほかの内容見ずにすぐ棚に戻した。
Windownなんかやってる方が恥ずかしい 超漢字やれよ売国奴が
>>710 道具の選び方が悪いだけ。君がしきりに主張していた「最初のnextが邪魔」
という件には有益では?「鉈で刺身が切れない」とごねるのと大差ない希ガス。
煽りにマジレスかこ悪い。
>>716 これが噂の誤植か。
首を吊って氏ねや。
>>710 この手の抽象化は基本的に、重複するコードを分かりやすくまとめるためにあ
るのだから、元のコードに重複が無ければ、抽象化のご利益には預かれないと
思う。
>>684 のリンク先に影響を受けて、デコレータでメモワイズを実装してみた。
「メモワイズ」って偉そうな名前だけど、要するに戻り値のキャッシュ。
#メモワイズ関数
def memoize(func):
memo = {}
def wrapper(x):
# return memo.setdefault(x, func(x))
if x in memo:
return memo[x]
else:
return memo.setdefault(x, func(x))
return wrapper
処理対象には、再帰の問題にはありがちだけど、フィボナッチ関数。
fn = f(n-1) + f(n-2), f2 = f1 = 1 で定義される奴。
#フィボナッチ関数
@memoize
def fib1(x):
if x <= 2:
return 1
else:
return fib1(x - 1) + fib1(x - 2)
fib() の定義に、@memoize が無い場合とある場合で比較してみたら、
素晴らしい高速化を実感できた。
デコレータいいねえ。
>>721 そうだね。特にある関数にreturnが複数あって、その関数が何回も呼ばれている
場合(入口も出口も複数ある場合)その関数の挙動をデバッグしたいときなんか
威力を発揮する。
def decorate(f):
def wrap(foo, boo):
print "foo=%d, boo=%d" % (foo, boo)
ret = f(foo, boo)
print "ret=%d" % ret
return ret
return wrap
@decorate
def func(foo, boo):
return foo * boo
func(func(3,2), func(4,5)) + func(2,1)
まあ、これはつまらない例だけど、こんな感じで挙動を追跡できる。
微妙にかぶったorz
自分のマシンだと、@memoizeなしでは、x=36あたりですごく重くなる。 @memoizeつきだと、スタックがあふれるまで(x=500)繰り返しても一瞬。 まあこれは特殊な例だけど、 DBやネットワークから値を取得する関数などに使えば便利かも知れない。
726 :
722 :2006/12/08(金) 16:43:39
あ、かぶったというか、レスが混じってしまった。すまん。 しかも722に貼ったコード、清書する前の版だった。 memoize()に変なコメントアウトがあるし、fib()がfib1()になってる。 重ね重ねすまん。 実はmemoize関数内の wrapper 関数は、最初は if文が無くて、コメントアウ トされてるsetdefault()しか元々存在していなかった。 その版だとかえって遅くなってしまった。当たり前だけど、Pythonは正格評価 なのだった。
scipyがようやく2.5対応に
2.5どころか、職場のサーバのPythonが2.3で、デコレータすら使えない俺は負け組。
>>729 そんなことはない.2.3で使えないのはデコレータじゃなくてデコレータ構文.
731 :
デフォルトの名無しさん :2006/12/08(金) 21:43:51
えー、この構文が使えないのはいやだなあ。 @decorator def func(...): ... ... これが def func(...): ... ... func = decorator(func) こうなっちゃうんじゃ、相当ガッカリだよ。
実pyを立ち読みしてきた。 レイアウトが確かに異様に読みやすい。 あと、対話型実行例だらけなので、何を やってるか(自分的には)把握しやすい。 ので、「読みやすい」本ではあるかなと思た。 ただ、変数とか、関数とかの説明が初心者向け ではない(この辺はみんpyの方がかなり秀逸(と思う) なので、ほんとうの初心者に薦める本ではないかなという感じ。 ところどころhackっぽいネタが載ってたりするので、 時間つぶしに読むにはそれなりに楽しい。 何か目的を持って情報を取り出そうとするとイライラする本かもしれないけど。
しかし初めてじゃないのか 読んだという触れ込みでのレポは
>>733 初心者には難し過ぎて価値がない.
中〜上級者には立ち読みする価値しかない.
そんな書籍なんだろう.
>>735 どうした?ママの愛情が足りなかったのか?
お前がどうしたんだw
>>708 の時間経過表示が面白かったんで、デコレータ化してみたよ。
class myThread は
>>708 をそのまま使わせていただいて、
def sandgrass(func):
"""時間経過を表示させるデコレータ
"""
def wrapper(*args, **keys):
t = myThread()
print '開始',
t.start()
ret = func()
t.kill()
print '終了'
return ret
return wrapper
@sandgrass
def do_something():
"""何か時間のかかる処理。
"""
time.sleep(10)
これってすっごく実用的じゃない?
デコレータって言うと、前処理と後処理というイメージがあったけど、
別スレッドで同時進行というのもアリだなあ。
>>736 Zope関係者乙。
みんPyの作者に粘着すれば気分が晴れるかも知れないぞ(WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
740 :
デフォルトの名無しさん :2006/12/09(土) 00:54:33
Amazonより みんPy >初心者にもわかりやすく解説 実Py >Pythonは経験したことがないが、何らかのプログラミング言語に >ついては触れてみたことがある方 実Pyは初心者向けじゃないんじゃ?
741 :
738 :2006/12/09(土) 00:59:22
あちこちバグがあったので修正。 def sandgrass(func): u"""時間経過を表示させるデコレータ """ def wrapper(*args, **keys): t = myThread() print '開始', t.start() ret = func(* args, **keys) t.kill() print '終了' return ret wrapper.__name__ = func.__name__ wrapper.__doc__ = func.__doc__ return wrapper 元のままだと、ヘルプが機能しなくなってた。 あと、funcに引数を渡してなかった。 デコレータって、使うのは簡単だけど、作るのは結構気をつかうのね。
742 :
738 :2006/12/09(土) 01:06:30
>>741 「砂時計」は、sandg[l]ass でした。
直すんだったらまずそれを直すべきでした。なんかダメダメ。
>>738 おい、@sandglass を、
>>722 のフィボナッチ関数に付けたら、
えらいことになったぞ。
Pythonでは再帰は鬼門なんだろうか。
あんまり使うなとは言われたことあるなぁ。Cとは違うのか…。
考えてみたら、末尾再帰をループに変換もしてくれないし、 スタックもたった500であふれてしまうみたいだしなあ。 Stackless Python方面の人は、再帰を多用していたりするんだろうか。 デコレータと組み合わせたときの不具合で困ったりしてないのかな。
Cの場合、フィボナッチ数列を再帰で解いちゃいけないってどこかで読んだ記憶が・・・ 簡潔には書けるけど、オーバーヘッドがものすごく大きいとか書いてあったような。
>>738 おーい、@sandglass だけど、
モジュールをリロードしたあと、処理の実行を Ctl+C で中断すると、
「...」がいつまでも出現しつづけるぞ。
どうしたら消えるんだ、これ。
まあ、オリジナルの
>>708 のでも同じみたいだけど。
あと、砂時計だったら、hourglass の方が普通じゃないか?
>>748 オーバーヘッド云々という話ではなく、計算量をちゃんと見積もれば明白。
別にCだからとかいう話ではない。再帰+キャッシングが有用な例題としては教科書的。
>749 def wrapper(*args, **keys): try: t = myThread() print '開始', t.start() ret = func(* args, **keys) print '終了' return ret except: t.kill() raise (略) はどうだろう
>>740 >実Pyは初心者向けじゃないんじゃ?
俺読んだけど,なんか中途半端な内容だった。
初心者向けじゃないとしたら,誰向けなんだ? 表紙に萌えるオタク向け?
用語の不統一,微妙なサンプル,間違った解説。
このスレみてて,そう思ったのは俺だけじゃないんだと分かってホッとした。
753 :
751 :2006/12/09(土) 02:15:30
すまん間違えた
754 :
751 :2006/12/09(土) 02:19:00
とりあえずこれで。 def wrapper(*args, **keys): try: t = myThread() print '開始', t.start() ret = func(* args, **keys) return ret finally: t.kill() print '終了'
755 :
749 :2006/12/09(土) 02:30:13
>>754 うまく行くようになったよ。ありがとう!
なるほど try - finally か。
デコレータは、クラスに付けることはできないのね。 付けられるのは関数にだけみたいだ。 なんか残念。
クラスには継承がある
だけど、デコレータをちょこっとクラス定義の前につけるだけで クラスの挙動を変えられたら便利だと思うけどなあ。
デコレータと関係ないけど、 フィボナッチ数列を返すジェネレータを作ってみた。 再帰じゃなくてループ。 引数 max は項の数の最大値。 def fib(max): f_1, f_2 = 1, 1 for i in range(1, max+1): if i <= 2: yield 1 else: f = f_1 + f_2 yield f f_1 , f_2 = f, f_1
客観的に評価してみた(出版順) はじPyはどうみても冗長 みんPyは独り善がり しっPyは受け狙い ちなみに俺推奨は公式ドキュメント(含むリファレンス)→DiveIntoPython→本番
>>759 ちょい枝切り
def fib(max,a=0,b=1):
for i in range(max):
yield b
a,b=b,a+b
>>760 evalが壊れてるみたいだから、インストールし直した方が良い。
最高のPython本は760が出版する。 2chでくだを巻くしか脳のない、ルサンチマンの760だけど 最高のPython本を書けるのは760だけだ。 出版予定は西暦3000年です。
この程度のセンスでは松竹にすら入れない。
windows で刻一刻と成長していく log file を見て 更新されたら更新されたぶん(追加された行)だけ 処理対象にしたい (とりあえず tail -f のクローンを書きたい) って言うときはどうするのでしょう? while True: newdata = f.read() ... time.sleep(1) で polling するしかない?
Py.py
円周率の計算するプログラム pi.py
770 :
Python初心者(復活) :2006/12/09(土) 12:56:57
>>770 「これからは」っつーより、10年くらい前に流行った話だ
おい、pygame1.8のリリースが延期だってよ。 ずっとワクテカしてたのにがっかりだよ。
773 :
759 :2006/12/09(土) 15:43:32
>>761 おお、ありがとう!目からウロコです。
自分もさらに少しだけ手を入れてみますた。
# ・組み込み関数名とかち合ってしまうので、引数名 max を size に変更。
# ・a, b を引数のデフォルトにするのは、外部から初期値を変更可になって
# しまうのがいやなので、関数内で普通に宣言。
def fib(size):
a = 0; b = 1
for i in range(size):
yield b
a, b = b, a + b
PEP 246 については誰もツッコまないのか?
>>774 ツッコミたいんだけど、俺英語ダメなんだよ。今必死こいて読んでる。
>>> a = u'ちんぽ' >>> b = u'っぽ' >>> for i in range(10): ... print a + b * i ... ちんぽ ちんぽっぽ ちんぽっぽっぽ ちんぽっぽっぽっぽ ちんぽっぽっぽっぽっぽ ちんぽっぽっぽっぽっぽっぽ ちんぽっぽっぽっぽっぽっぽっぽ ちんぽっぽっぽっぽっぽっぽっぽっぽ ちんぽっぽっぽっぽっぽっぽっぽっぽっぽ ちんぽっぽっぽっぽっぽっぽっぽっぽっぽっぽ
Python2.4でWindowsのEclipse pydevを使ってます。 #coding: sjis print u"あいうえお" Shift JISでファイルを保存して上のを実行すると Traceback (most recent call last): File "D:\workspace\PythonTest\src\test.py", line 2, in ? print u"あいうえお" UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128) というエラーが出ます。原因は何でしょうか?
あっわかった enthought版入れてたからCJKCodecが入ってないようでした
標準の2.5を入れてみたのですが #coding: sjis print "あいうえお" だとちゃんと表示されます。みんPy読んでると print u"あいうえお" としないとだめと書いてあるのにこっちだとエラーです。 なぜでしょうか・・・
>>781 これの実行結果を見せてもらえないかな。
import sys
print sys.getfilesystemencoding()
print sys.stdin.encoding
print sys.stdout.encoding
print sys.stderr.encoding
print sys.getdefaultencoding()
>>782 mbcs
None
None
None
ascii
なってます。
一言で言えば設定が悪いから
二言お願いします
>>782 この状態で日本語のUnicode文字が出力できるわけがない
そのページ紹介しようかと思ったんだけど、Cygwin固有の話だからねえ。 しかし、どうしてこんな設定になっているのだろう?
あんまり関係ないかもしれないけど、 sitecustomize.py を設定したらどうなるかな。 c:\Python25/Lib/site-packages/sitecustomize.py に import sys sys.setdefaultencoding('cp932')
>>790 mbcs
None
None
None
cp932
なりました
>>789 それなら、コマンドラインなら print u"あいうえお" で行けるはずだよ。
どうやらPyDevの設定の問題かな。
import re def castrate(s): return re.sub(u'ちんぽ(っぽ)*', '', s)
>>791 それだとやっぱりダメだねえ。
誰かPyDevの設定方法を知っている人いないか?
>>792 ありがとうございます。コマンドライン上からはできました。
やはりPyDevみたいですがやはりPyDev上だとだめでした。
PyDevの設定見てみます。
796 :
デフォルトの名無しさん :2006/12/09(土) 22:49:44
役に立つかどうかわかりませんが、実PyにPyDevの項目があるので、 立ち読みしてみては?
ちょっとよくわからない状況なんですが、enthought版のpythonを再インストールして import sys print sys.getfilesystemencoding() print sys.stdin.encoding print sys.stdout.encoding print sys.stderr.encoding print sys.getdefaultencoding() をやったら mbcs None None None mbcs となり #coding: sjis str = u"あいうえお かきくけこ" temp = str.split() for item in temp: print item のプログラムはちゃんと実行できました。 perlだとそんなに気にしてなかったけどUnicode文字列とそれ以外の文字列など区別が複雑です・・・
結局の所、Core Pythonが最強ってことでFA?
799 :
デフォルトの名無しさん :2006/12/10(日) 00:01:07
雑誌の読者プレゼントで「みんなの Python」当たったから、 今日から勉強するぜー(^ω^)
800 :
デフォルトの名無しさん :2006/12/10(日) 00:41:17
801 :
799 :2006/12/10(日) 00:49:55
>>800 いや、サインも何も無し。
新品のが来たっす。
すぐにbook offで転売しなきゃ
803 :
799 :2006/12/10(日) 01:20:18
>>802 BookOffだと二束三文で買い叩かれるんじゃね?w
805 :
799 :2006/12/10(日) 01:48:21
>>804 馬鹿かwww
俺は売るなんて一言も言ってねーだろうが。
低脳はもう寝ろwwwww
>>805 必死だなww 寝るよバカwwww
Python なんてもう消えさればいいのに。
おまえら喧嘩してるのかじゃれあってるのかよくわからんな
matlabくらいしかプログラミングやったことないけど, diveIntoPythonで勉強始めたよ. hehe..
matlabはいいね。
>>800 >サインがなきゃ転売できるんだがなー。
サイン本プレゼントって有名人気取りかよ(wwww
三流著者のサインなんて誰がほしがるんだろうな
考えることも三流だな(wwwwww
そもそもその用途に ruby を使う香具師なんているのか?
Programming Python が届いた 分厚い… 会社に持って行けるかな
>>813 厚い、とてつもなく厚い。
厚い分あれもこれも色々書いてあるが、リファレンスとしては使いにくい。
もちろん会社で仕事の合間に読み通せるようなボリュームじゃない。
正月休みにじっくり読むしかないじゃないか?
>>813 運搬するくらいなら会社用を買うのがお勧めw
おまいら仕事でpython? pythonを使う仕事って何?
Python+fastcgi で WEB とか
>>816 仕事で使うちょっとしたツール類や、プロトコルを検証するための実験的プログラムが
今のところ多いな。中にはそのまま納品するアプリケーションになることもあるよ。
>>813 会社用を経費でゲット
それでコンピュータ技術書の出版に少しでも金を落としてくれ
でないとそのうち技術書は何も出版されなくなってしまう
和書買えよ。
821 :
813 :2006/12/10(日) 23:16:59
はじぱいとみんぱいも買ってますよ Cookbookも、これは洋書か
Cookbookの翻訳はいつ完成するんだろうか
>>822 もう一年近く動きがないように見えるんだが気のせいか?
ほんとにちょっとずつだよね。 辛抱強く見守ることの大切さを感じるよ。
オッサンはもうイラネ
それより誰かDive和訳してよ
お前ら能無しコンサルみたいに舶来モノばかり崇めてんじゃねえよ!!! DIPに匹敵する和製コンテンツを角くらいの意気込みのあるヤツはいねえのかボケ共が!!!
車輪の再発明をするのもなあ。 それにしても、英語を何とか身につけたいなあ。 いつまでも翻訳を待っている身ではどうしようもない。
カクで角が出るとはなかなか調教された辞書をお持ちのようだ
今夜勉強を始められないなら一生身につかないな
>>826 ああ、でも、歴史的意義まで今になってから否定するのは
良くない希ガス。
Python1.4はさすがに知らないけど、考え方自体は、
今のPython でも通用するかもしれないし。
自分の場合は、Java をかじった経験からOOP とか
理解できたけど、学校で学んだ人間は別として、
そうでない一般人がJava 知らないで、公式ドキュメントだけで
Python (やOOP)を理解できるのか疑問に思う。
チュートリアル自体が、他の言語のことはよく知ってる人間を
対象にしてるとしか思えない書き方だし。
そういう意味では、内容にはあれこれあっても、
最近のPython 書籍ブームは歓迎かな。
早く、ほかの言語をなにも知らない人間でもすんなり入れる
言語になってほしい。(あともう少しと思う)
と、結局は人頼み…なんだけど。
書籍名:Python 原論〜グイドたんの脳内を解析しますた〜 出版元:Pythonのお勉強スレ@2ch §1:Python って何?ググれよ §2:PEP は良いものです〜PEP相関図〜 §3:CPython ソースコードツアー §4:で、どうやって使うの?知らんがな
みんPyの最後らへんの章なんて著者のオナニーじゃん。おまえの使い方なんて誰も訊いちゃいねーんだよw
みっともない。
はいはい. 私怨私怨. はいはい. 三流ZOPE関係者三流ZOPE関係者.
>>837 こういう書き込みをオナニーっていうんじゃねえの?(WWWW
他人のオナニーを見ながらオナニーをするとはド変態だな(www
843 :
デフォルトの名無しさん :2006/12/11(月) 19:42:53
> そうでない一般人がJava 知らないで、公式ドキュメントだけで > Python (やOOP)を理解できるのか疑問に思う。 それはどうかな。 逆に、Javaだったら公式ドキュメントだけでJavaやOOPを理解出来るの?
一生OOPを理解せず、Pythonを知らないで過ごすのが、いわゆる「一般人」だろう。w 正直言って一般人がどうだろうとかって興味ないよ。
というかpythonに興味を持った時点で 既に一般人じゃない。
でも「みんなの」と銘打っておきながらweb系に偏っているのはどうかと思うがね。 まぁweb系の人だから経験上でそれしか言えないという事情もあったのだろうけどね。
そもそもOOPって仕様書のプログラム言語化だし。わかるわからないの次元じゃないんだよ。
↑は分かってない予感
OOPはDB設計と同じ
いよいよ来たな、年末デザパタ祭り!
OOスレでやってよ!
OpenOfficeヌレどこ?
まあここは一つメタクラスでも。
∀・)<誰もいない・・・・・メタクラするなら今のうち・・・・・ # クラス名をcapitalizeするメタクラ class Capitalizer(type): def __new__(meta, name, bases, attrs): return type.__new__(meta, name.capitalize(), bases, attrs) class foo: __metaclass__ = Capitalizer class BAR(foo): pass print foo() # => <__main__.Foo object at 0x0125C370> print BAR() # => <__main__.Bar object at 0x0125C930>
857 :
デフォルトの名無しさん :2006/12/12(火) 01:05:46
windows版のpythonでtkinterを使ったプログラム実行しようとしたら、firewallがブロックするとかいうエラーが出て、実行できなかった。 さらにIDLEまで起動しなくなっちゃんたんだけど、何が問題でしょうか?せめてIDLEが起動しないという問題は解決したいです
1.誰かが書籍を取り上げる 2.ゴミだろ! と吐き捨てる 3.でも読んでみると。と持ち上げる 4.また本人か! と反応 5.どこどこ行けよ! と追い出しにかかる 6.メタクラスの話でもしようぜ! と話を変えてみる 7.それよりも……と自分の理解できるネタに話を逸らそうとする 8.おっぱい!おっぱい! 叫びだして、全てがうやむやになる
−=≡ _ _ ∩ −=≡ ( ゚∀゚)彡 おっぱい!おっぱい! −=≡ ⊂ ⊂彡 −=≡ ( ⌒) −=≡ c し'
860 :
857 :2006/12/12(火) 01:12:32
ちなみに、firewall切っても、python再インストールしてもだめでした
9. Python初心者(復活)が現れる
864 :
デフォルトの名無しさん :2006/12/12(火) 01:18:03
無理無理、処理系どこからエラーメッセージの文章すら書けない人の トラブルシュートなんてやってらんないよ。 しばらく環境が出尽くすまで干しとくよろし。
メタクラスって何? 出来ればおせーて
それより関数型プログラミングの話でもしようぜ
それだけは勘弁してくれ
じゃあおれはZopeについて書きまくるよ。
憎腐イラネ
moinmoinの語感が好き システムは大嫌い
873 :
デフォルトの名無しさん :2006/12/12(火) 12:06:19
ちょっと質問です。 キーワード引数を使う関数が、どういうキーワードを使ってるかを ソースを見ないで調べる方法はありますか? 例えば、 def SUM(X=1, Y=2, Z=3): return X + Y+ Z の時の、'X', 'Y', 'Z' というキーワードを知りたいのです。
>>> help(SUM) Help on function SUM in module __main__: SUM(X=1, Y=2, Z=3)
>>874 おお、できました。ありがとうございます。
876 :
Python初心者(復活) :2006/12/12(火) 12:33:13
>>862 >9. Python初心者(復活)が現れる
オマタぁ?
>>834 >早く、ほかの言語をなにも知らない人間でもすんなり入れる
>言語になってほしい。(あともう少しと思う)
すんなり
print 'Python'
ならだれでも入れる。
import sys
sys.stdout.write('Python')
には少し知識が必要。
class Py:
def __setattr__(self,attr,py):
if attr == 'lang':
self.__dict__[attr] = py
else:
raise AttributeError,attr + ' not allowed'
if __name__=='__main__':
p = Py()
p.lang = 'Python'
print p.lang #->Python
p.name = 'Python'#->AttributeError: name not allowed
これはJavaやOOPを知っていても、__setattr__や__dict__[attr]
などのWinAPI風味の?Python独特の仕組みを知らないと厳しい。
どんな言語でも「すんなり」入れるレベルとある程度の習熟が
必要なレベルがあるだけで、「すんなり」だけで構成されて
いる言語はLogoとかDoLittleなど教育用の言語しかないんじゃ
なかろうか?
cしか書かない友人に配列とか文字列の扱いがキモイといわれたことならある・・・
やだ、配列だって、877キモーイ
Perlの質問スレで2次元配列に苦労してる初心者見ると、Pythonに乗り換えればいいのにと思う。
PerlはPerlで、ワンライナーないし数行程度で下らなくて汚い仕事をやるという 役目がある
その言語特有の役目とか言い出すと Pythonには何の役目も無いな
役目がないのは881。
>>881 何を言う!
Pythonは電卓として便利だぞ
自明の役目があったら、
>>882-883 とほぼ同等の字数(手間)でそれを挙げられるから
こういう「反撃」より先にそれが書き込まれて元レス瞬殺って流れになるんだけどね。
残念ながら、役目が思いつかないか、思いついたとしても自明ではないゆえ
必死っぽい「解説」を添えなきゃならず、結果、瞬殺イベントは起きることなく
代わりに単純否定や煽りやネタが先に来てしまう。
885は屁理屈ばかりで役に立たない頭でっかちのヒキコモリ.
Pythonが素晴らしいのはアカシックレコードにも書き込まれている真実だからな 霊的なレベルの低い奴には永遠に理解できないだろうけど
つーか、こんな便利なものお前らに使わせない。 Pythonを普及しよう、とかいってるやつらはマジむかつく。 俺の秘密兵器を他人に使われたらどうするんだよ。 一般人はRubyとかPerlとかPHPとか使ってろよ頼むから。
Python特有の役目(のひとつ)は科学技術計算だな。 特に対話形式の利用と他システムとの強力な連携の2点において 他のどのプログラミング言語にも取って代われない特異な位置を占めている。
むしゃくしゃしてやった。 インデントなら何でもよかった。 今はトリプルクオートしている。
屁理屈ばっかし。
893 :
888 :2006/12/12(火) 17:12:38
>>891 オマエは頭が弱そうだからPHPでも使っておけば?
if 0:
コード
みたいなコードの無効化は、あんまりやらねえよな。
つーかsvnとか使い始めれば不要なコードを残しておくなんて事もしなくなるんじゃね?
>>894 だろうなぁ
現実が書かれているのは信者にはキツかろう
>>895 最後まで読んでおまえがキチガイだとわかった。
>>891 > インデントなら何でもよかった。
つ Haskell
「Pythonの役目」がいかに禁句なのかがよくわかる展開でしたね
日用品ですよ。
スルーされて遊ばれてるだけなのに 勝ち誇っている人がいておかしいですね(wwww
Pythonの真っ先に誰でも利用できる使い方は、試行錯誤しながら書く、使い捨
てスクリプトやプロトタイプだと思う。柔軟で簡潔な構文と対話環境が、すご
く開発効率を上げてくれる。
しかし使い捨てスクリプトならPerlとかの方ががずっと普及しているわけで、
この用途に関してなら、Pythonが圧倒的に優れているわけじゃない。
たぶんポイントは、コードを書いてから半年後。Perlと違い、Pythonだと半年
後でも、読んですぐにすっと理解できる。つまり、使い捨てコードが使い捨て
じゃなくなるわけで。
http://www.python.jp/Zope/articles/misc/morality_tale
Pythonでちょっとしたサーバーソフト書いたりするけど、ライブラリがやけに充実してて困る
>>901 単に劣っているものが普及しただけでは?
Perl こそ何が良くてこれだけ使われてるのか全く理解できない言語なんだけどな
このスレでPerlの方が読みやすいっていってもしょうがないよな 要は言語の問題じゃなくて書かれ方の問題なんだが...
ここでPerl初心者登場↓
Perlだけは読めない というか理解できない
>>901 ワンライナーでPythonの存在意義を示さないと885タソは満足しないぞ(www
タン呼びできるほど萌えないからいいお
>>905 熱心なPerlerはみんなそう言うから、Perlerにとってはそれが真実なんだろう
とは思う。
だけどそれが普遍的な事実とは思えない。
書き方の問題じゃなくて、Pythonの方が本質的に読みやすい、と感じる人も少
なくないわけで。特にここはPythonスレだしね。
個人的には、Perlのスタイルガイドは、こういうことを気にしながら書くなら、
言語がそれを強制するPythonの方が楽だと思う。
http://www.rfs.jp/sb/perl/09/05.html
俺スカトロマニアなんだけど、ウンチとかシッコが美味しくてしようがないよ。 お前らも食べてみろよ。 この世にこんなに美味い食べ物があるなんて信じられないよ。
じゃあ、言語に縛られた考え方しかできない奴がヘボってことで。。。
それぞれの言語特有の良さを理解できない、生かせない奴がヘボだろ。
Pythonが平均的に読みやすいことは認める。 だけど、Pythonのコードだっていつも見やすいわけじゃないぞ。 __hoge__ だらけのコードは、初心者はぎょっとする。 初心者でなくても、リスト内包表記のネストの読みづらさは異常。 対話環境で試行錯誤していて、出来上がったのがリスト内包表記のネストだっ たりすると、あとで読むときにえらく苦労するぞ。
>>914 ドMのド変態が、自分の欠点をさらけ出して
ハアハアしているようにしか見えないのは気のせいか?
どうでもよくなって参りました(w
>>914 リスト内包表記は集合論をかじったことがあればむしろ直感的に分かりやすい。
木をみるな、森を見るんだ!(ぇ
>>917 いや、リスト内包表記自体は分かりやすいと思うよ。
問題は、それがネストした(入れ子になった)ときだよ。
キレイだし便利だから多用してると、あっという間にわけが分からなくなる。
おまえらlisp使えよ
リスト内包表記とmap/reduce/filterで繰り返し処理 ラムダで変数を定義 論理演算子で制御構造 これで後で後悔できるワンライナーが書ける
921 :
デフォルトの名無しさん :2006/12/12(火) 20:52:05
> これで後で後悔できるワンライナーが書ける ワラタ。やはり「書き方の問題」という部分は、どんな言語にもあるよな。
>>918 どういう多用の仕方をいってるのかよくわからないけど、
内包表記ネストが必要なところで内包表記ネストをつかうのは
分かりにくくならないと思う。要するに関数で飛ばした中身
をさらに関数で飛ばしたいとき。
922つづき どう考えてもこのネストは分かりやすくないと思ったら 中間的な小さいクラスをねつ造してみる。 そういう必要性から生まれたクラスはたいてい、あっさりうまくいく。
自分は、ワンライナー的に書き上げたコードは、リファクタリングして直してるな。 リスト内包表記がネストしたら、たいていはforループに書き直す。 バグが入り込む心配はない。 そういうときのためにdoctestがあるんだから。
そろそろ10時。 メタクラスの時間ですよ。
メタクラスよりメタキャラクタの方が好きだ。
ところで、せっかく式で定義できたデータ構造をforループで書き換える意味が分からない。 ロジックのプロトタイプを書くのにワンライナーを使っているんだとすると、まずそのステップを踏んであとで直すという無駄な手間を自慢する理由もわからない。ひょっとしてオn(ry
>>929 何に対する「ところで」なんだよ。
ちゃんと寝てるか?
なんで急に睡眠の話を始めるんだろう。 2レス連続で電波だな。
>920でも書いたが (lambda a, b, chk = lambda ob: isinstance(ob, __import__('datetime').date): chk(a) and chk(b) and b - a)(some_long_expression_no1, some_long_expression_no2) とかしてラムダで変数定義してandでif的構造を再現するワンライナーとか mapとreduceとfilterと[]でごにょごにょし続けるワンライナーとか こういうのを組み合わせて一行ってるといつまでたっても終わらないのでバランス感覚は必要だよねという話 プロトタイピングでそんな複雑なワンライナー書くわけねーだろ変態野郎といわれたら申し訳ない
うん、シリアスコードでそんなの書かない。
変態野郎
志賀高原の焼額山、ライブカメラで見てみたんです。 そしたら、山頂付近がモト冬樹でした...orz...。
937 :
Python初心者(復活) :2006/12/13(水) 13:16:09
>>914 >初心者でなくても、リスト内包表記のネストの読みづらさは異常。
>対話環境で試行錯誤していて、出来上がったのがリスト内包表記
>のネストだったりすると、あとで読むときにえらく苦労するぞ。
Flat is better than nested.
これはPythonの言語仕様における原則の一つです。
つまり、インデントは深いネストを制限する効果も
ある訳です。ところがリスト内包表記でのネストは
この原則からは逸脱している。
ところが、コードの透過性という観点から視れば
全ての機能がそのコードで理解出来るから
ネスト構造もあながち否定されるべきものでもない。
要は、ネスト構造に伴う頭脳負荷にどこまで耐えられのか。
ワインバーガーは通常のプログラマの場合、5層以上の
ネスト構造は避けるべきだと云っている。
リスト内包表記の最後のコードに括弧が]]]]]までという
意味だが、慣れたLisperの場合には]]]]]]]]]10個程度は
理解可能のようです。勿論ある程度のインデントは必要で
しょうが。
逆に言えばどれだけのネスト構造に耐えられるかで
そのプログラマの頭脳耐性が分かるということです。
皆さんはどうでしょうか?
ネストが深くなっても読みやすいのはLispくらいだな。(慣れの問題か?) Pythonではあまり深いネストはやらない。長い式も代入して分けたりしている。
括弧内は改行が許されるルールを使うと 長い行もある程度読みやすくなるけど 改行が必要なほど長い行は 「分割しる!!」と言う警鐘だと思うことにしているよ
]]]]]という形なら使ってる関数をまとめることで 簡単にネストを解消できるのでは? 問題は] for a in b] for c in d] for e in f] for g in h] という終わり方だと思う。 さすがにこれは理解する自信ないなw
頭脳耐性とかきもいよね
>941 そこでmap/reduce/filterですよ
ネストは二重まで、それ以上は関数にする。
ネストは必要なだけ。よく使う操作は関数にする。
map と filter は使うことあるけど、reduceのお世話になった記憶はないなあ
変態的辞書生成法 reduce(lambda dict, j: dict.update({j: j + 1, }) and None or dict, range(10), {})
If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea.
手を入れてみた。 reduce(lambda dic, j: dic.update({j: j + 1, }) or dic, range(10), {}) 1.dictは組み込み型と名前が重なるので、dic に変更。 2.and None はいらなくね?dic.update() は戻り値はNone だし。 3.当然だが、やっぱり素直にループで書くべきだな。
変態だ。とはいえループで書く気もしない。dict([(i, i+1) for range(10)])
dictはわざと。スコープ小さいし上書きしても構わねえだろという判断。{}が死ぬわけではないので普段から上書きしちゃうこともあるが and Noneで失敗させてるのはupdateの挙動が変わったときのため まあワンライナーにメンテナンス性とか互換性を求める時点で狂ってるとは思う 書いてると言語に対する理解とかは深まるんだが声高に批判する人がいても無理ないよな どう見ても変態ですもの
あー、dictにそういう初期化形式があったっけ。 dict(zip(range(10), range(1, 11))) こうも書けるな。ちょっと汚いけど。
マクロ展開とかに便利。 >>> spam_macros = [('egg', 'egg and spam'), ('spam', 'spam with bacon'), ('ham', 'ham and spam and egg')] >>> reduce(lambda x, y: x.replace(y[0], y[1]), spam_macros, 'egg and bacon and ham') 'egg and spam with bacon and bacon and ham and spam and egg' >>>
>950 dict([(i, i+1) for i in range(10)]) dictってkey,valueペアのシーケンスから辞書を作ってくれるのか。知らなかったわ
>>953 以前も出たが、どうしておまいは素直にLISPを使わないんだ?
その使い方なら、そのほうが幸せなんでね?
だってPythonのこと大好きなんだもん。
Guidoだったら、素直にこう書け、と言いそうだが。 def trans_macro(text): spam_macros = [('egg', 'egg and spam'), ('spam', 'spam with bacon'), ('ham', 'ham and spam and egg')] for i in spam_macros: text = text.replace(i[0], i[1]) return text
そもそもワンライナーにこだわる理由も分からない。 対話環境しか使ってないのか? Emacs のpython-mode で書いて、C-c C-c とやれば、即座にスクリプトが実行 されるんだが。 Emacs LISPのスクラッチバッファや、scheme-mode と同じぐらい快適だよ。
Guidoは高階関数が嫌いなんじゃなかったっけ?
高階関数そのものが嫌いなら、デコレータやfunctoolsは作らないんじゃない?
>>964 どっちも、Guido自身が提案したわけじゃないし
>>963 その言い方は、なんか腹が立つな。
じゃあ、どういう理由でワンライナーなの?
>>965 デコレータとかは、無いものをわざわざ導入したんだから、それなりに認めて
るんじゃないか?
mapやreduce は、今あるのに廃止しようとしたんだから、態度が違うよ。
まあ実際のところは本人に聞くしかないわけだが(w
呼んだか?
Perl使いだったけどPythonに寝返ったよ
俺もPerl飽きたからPython勉強中 でも何かめんどくせ
Pythonて標準で汎用なflockが無いのかー
map は今の記法がいいかどうかはともかく便利だし 読みにくいかどうかも所詮は慣れじゃないのかな... 内包表記だって慣れなかったら相当読みにくいよ
そろそろ誰か次スレをお願い。
元気があっていいと思う。(どうせそのうち何も言わなくなる。
こういう「自分ワールドで居丈高」なム系のブログって、 他の日の項目にラノベとかエロゲがある確率高すぎ。
982 :
デフォルトの名無しさん :2006/12/14(木) 14:02:25
まだまだいくよぉ〜〜〜!! 巫女みこナース! 巫女みこナース! リスト内包 巫女みこナース!! 巫女みこナース! 巫女みこナース! lambda 一行 巫女みこナース!! 巫女みこナース! 巫女みこナース! Py本粘着 巫女みこナース!! 巫女みこナース! 巫女みこナース! 初心者(復活) 巫女みこナース!! 巫女みこナース! 巫女みこナース! print u"文字化け"巫女みこナース!! 巫女みこナース! 巫女みこナース! メタクラ おっぱい 巫女みこナース!! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 巫女みこナース! 最後にもいっちょー、ハイ! 巫女みこナース!
Pythonの回りにもヘンなヤツが増えてきたなあ。
python使いにアニオタがいるなんて
「しっぱい」の表紙がアニメ絵だったよな。著者はアニオタか?
>>981 Pythonの回りにもヘンなヤツが増えてきたなあ。
989 :
デフォルトの名無しさん :2006/12/14(木) 19:59:59
自己紹介文 経歴 弘前大の応用生命工学科に入学 大学1年次に情報処理の講義でコンピュータに興味を持ち、友人の助けを借りて学習を続ける。 卒論優秀賞を受賞し卒業 帰省後就職活動を行い、IT系人材派遣会社に就職する。 半年後 IPA の未踏ユース公募を見て会社を辞め、未踏ユースに応募する が、選考落ち orz いいもん、いつか自分で完成させてやる( ´・ω・`) 現在 働かないとご飯食べられなくなりそうなのでお仕事募集中。 クライアントサイドスクリプトなら問題なくかけると思います。 Javascriptクライアントサイドスクリプトで作ったツールはこちら LLRing ブログで開催されたコンテストで見たRubyで書かれたコードの美しさに惹かれ、Ruby も勉強しようと思う今日この頃。 Python と Ruby でお仕事探そうかな(`・ω・´) 興味のあること プログラミング(現在C言語、Python, Javascript使用), 知識も技術もまだまだ勉強が必要です。 .NET, Ruby も使えるようになりたいですね。
ぐぐる八分とは姑息だなw
>>990 八分って誰が喜ぶのか考えると笑えるな(ZOPEZOPEZOPE
ぐーぐる八分はたまたまリンクの具合とかでなったんじゃねえか? 頼むとそんなにすぐにはずしてくれるものなの? しかも、どっかの依頼ではずしたならすぐ戻されないだろ常識的に考えて・・・
たまたまなって、文句を言った直後にたまたまもどったわけか。 たまたまが多いな。
995 :
デフォルトの名無しさん :2006/12/14(木) 22:47:20
ただの被害妄想じゃないか?
そういうことにしたいのですね。
>>991 そのネタいいですね。
何にも知らない人にpythonて何がいいのとか聞かれたときに
便利そうなネタ
Pythonで書かれたブログシステムで 共有レンタルサーバーなんかにインストールできるものってありますか? WordPressとかみたいに、展開して使えるといったようなものです もしご存じでしたらお願いします ZopeでCoreblogとかだとrootが必要で そうするとVPSか専用レンタルサーバーにしなくてはならなくて 個人でかりるには金額的にきびしいものがあります
>>998 mod_pythonが使えるレン鯖なら、DjangoのBlogとかがつかえるんじゃね?
でなければpyblosxomとか。
1000 :
デフォルトの名無しさん :2006/12/14(木) 23:34:38
やなぎさわー!!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。