Pythonのお勉強 Part16
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/12/14(木) 07:57:54http://www.python.jp/Zope/
http://www.python.jp/doc/release/
http://diveintopython.org/toc/
http://www.python.org/dev/peps/
http://wiki.python.org/moin/
http://python.rdy.jp/
http://www.amazon.co.jp/s/&url=search-alias%3Dstripbooks&field-keywords=Python
http://www.amazon.co.jp/s/&url=search-alias%3Denglish-books&field-keywords=Python
Pythonのお勉強 Part15
http://pc8.2ch.net/test/read.cgi/tech/1163339504/
0083デフォルトの名無しさん
2006/12/17(日) 17:08:26>Python のどこが便利だと言われて、答えられないのは、
>当然のような気がする。だって、書く時の便利さを捨ててるんだから。
Pythonは十分書く時も便利。ジェネレータのおかげで内部イテレータとしても
外部イテレータとしても扱える柔軟さが手に入る。(forループに任せず、next()
で手動でデータを取ってきたいことがある)itertoolsとの組み合わせも便利。
翻ってRubyは内部イテレータしかない。Generatorというライブラリはあるが、
スレッドのトランポリンを使っていて、めちゃくちゃ重い。実用にならない。
Rubyの書きやすさとしてよくメソッドチェーンがあげられるが、Pythonにも
内包表記がありデメリットにはならない。Rubyのブロックは複数行かけるが、
そういうメソッドチェーンはあまり見ないし、そういう場合Pythonだと高階関数
をそばに書いて内包表記に組み込むなどすれば、不便を感じない。
Pythonのスライスはa[1:3]のような表記だが、Rubyにはa[1..3]とa[1...3]が
あり、最後の要素を含む・含まないの違いがある。いつも混乱するので、Python
の方がその点で書きやすい。
0084デフォルトの名無しさん
2006/12/17(日) 17:10:24そんなことないぞ。便利だ。w
つか、おまえ糞なエディタ使ってるとかじゃね?
008571
2006/12/17(日) 17:11:04>>80
私の言いたかった問題点は、>>74でどんぴしゃですよ。
話は変わるけど、
>>82
> 3次でも100次でも、n次配列の、どの階層のどの要素でも、
> 狙い通り取ってこれるよと返事したのだが、
ただし、もとの配列が全てn次でないと困りますね。
極端な例かもしれないけど、
Python
HASH = {('X','Y','Z'):'xyz', ('X','Y'):'xy'}
print HASH[('X','Y','Z')] #xyz
Perl
$HASH['X']['Y']['Z'] ='xyz';
$HASH['X']['Y'] = 'xy';
print $HASH['X']['Y']['Z']; #データ無し
008677
2006/12/17(日) 17:22:15あー、いやいや書く手間自体はいいんだw。
俺個人としては、別にそれ嫌がってるわけじゃないから。
(だから、最近、Python 好きになったわけだし)
短く書けるか、長く書く必要があるかというのを
「不便」とか「書く時不便」とかいう表現をしちゃったのが
まずかったな。
漏れはとしては >>83 のような建設的なアピールが
出た時点で、もう思い残すことはない。
0087デフォルトの名無しさん
2006/12/17(日) 17:23:11Pythonはネイティブスレッドに対応してるからIOみたく重い処理があっても
リスポンス良く組むことが可能だし。
0088デフォルトの名無しさん
2006/12/17(日) 17:27:59バグで落ちたりのろのろ動くと悲しい。
0089デフォルトの名無しさん
2006/12/17(日) 17:32:58教えてくれたひとありがとーぉ
0090デフォルトの名無しさん
2006/12/17(日) 18:16:01あと文字コード関係で悩まなくて済む
0091デフォルトの名無しさん
2006/12/17(日) 18:23:12それは言えるな。
俺は言語的にはLisp系が好き、Pythonは許容範囲、Perlは論外って感じなんだけど、
ライブラリはPythonが充実してるから、実際の仕事ではPythonが一番活躍してる。
0092デフォルトの名無しさん
2006/12/17(日) 19:43:21使う場合はどうしたらよいのか教えて頂けないでしょうか。
例えばperlで置換する場合ですと
s/(\d)\s(\d)/ $1$2/
といったように $数字 でよいと思うのですが、
pythonではgroupというのを使えばよいらしいことは
分かったのですがどうしたらよいのか分からずにいます。
re.sub((\d)\s(\d), ??????, )
誠に恐縮ですがよろしくお願い致します。
0093デフォルトの名無しさん
2006/12/17(日) 19:54:17>>> m=re.search("(\\d)\\s(\\d)"," 2 3 ")
>>> print m.group(0)
2 3
>>> print m.group(1)
2
>>> print m.group(2)
3
置換(sub) では、どうするんかは、知らん
(もしかしたら、できぬ?)
0094デフォルトの名無しさん
2006/12/17(日) 19:59:30>>> re.sub(r"(\d)\s(\d)", r"\1\2", "5 6")
56
とすればいいんだけど、こんなとこで聞くよりマニュアル読んだほうが分かり易いと思う。
009592
2006/12/17(日) 20:09:29本当にどうもありがとうございました。
どうやら自分のにはr"\1\2"の
rがなかったようでそれを入れたところうまくいきました。
ちなみにこの r は何を意味するものなのでしょうか?
私の探し方が悪いのだと思いますがマニュアルでは
みたことがなかったものでして
009692
2006/12/17(日) 20:15:47http://iblinux.rios.co.jp/PyJdoc/lib-j/module-re.html
つまり、"r"を前につけた文字列リテラルにおいてはバックスラッシュは特別な扱いを受けることはありません。従って、r"\n"は"\"と"n"を含む2文字の文字列ですが、"\n"はニューラインを含む1文字の文字列です。
0097デフォルトの名無しさん
2006/12/17(日) 20:18:080098デフォルトの名無しさん
2006/12/17(日) 20:20:390099デフォルトの名無しさん
2006/12/17(日) 22:29:59postscriptで十分だから
0100デフォルトの名無しさん
2006/12/18(月) 00:05:210101デフォルトの名無しさん
2006/12/18(月) 03:07:490102デフォルトの名無しさん
2006/12/18(月) 10:11:040103デフォルトの名無しさん
2006/12/18(月) 10:37:13「エスケープシーケンス」次第。
0104デフォルトの名無しさん
2006/12/18(月) 15:42:510105デフォルトの名無しさん
2006/12/18(月) 16:15:540106デフォルトの名無しさん
2006/12/18(月) 16:20:060107デフォルトの名無しさん
2006/12/18(月) 16:22:070108デフォルトの名無しさん
2006/12/18(月) 16:35:14オライリー本(初めてのPython)からオンライン公式ドキュメントへっていうのが、
王道なんじゃないの?自分もいま必死に勉強中。
あと、こういうのが訳されてれば、もっと嬉しいけど。
An Introduction to Tkinter
http://www.pythonware.com/library/tkinter/introduction/index.htm
Tkinter reference: a GUI for Python
http://infohost.nmt.edu/tcc/help/pubs/tkinter/
(まあ、エキサイト君の出番だなぁ。エキサイトのハナモゲラ語が
自然な日本語に思えてくる今日この頃w)
0109デフォルトの名無しさん
2006/12/18(月) 16:44:41・Pythonのソース読む
・俺言語を実装
だよ。
0110デフォルトの名無しさん
2006/12/18(月) 16:46:54Tkinterにいまさら感を抱くおいらはwxPythonを研究中
0111デフォルトの名無しさん
2006/12/18(月) 16:58:33(゚∀゚)人(゚∀゚)ナカーマ
Tkinterはまともに扱ったことないけど、いろいろGUIツールの評判とか見て
PythonならwxPythonが良さそうだと判断した。
0112デフォルトの名無しさん
2006/12/18(月) 18:54:40漏れ的には
http://www.effbot.org/tkinterbook/
がおすすめ。
0113デフォルトの名無しさん
2006/12/18(月) 19:50:49シェルスクリプトの
trap signal_handler_cmd SIGINT
と同様のことをpythonでやるには、どうすればよいですか?
signal.signal(signal.SIGINT, signal_handler_func)
はダメでした。
0114デフォルトの名無しさん
2006/12/18(月) 19:56:44俺も若かったからさ、昔は後先も考えねえであれこれの(A)に手を
出したもんだ。幼なじみの(B)とも深い仲になっちまってたけど、
俺調子こいててずいぶんひどい仕打ちを繰り返してた。(B)に手前
勝手に使い走りをやらせてる暇で別の(A)をブイブイ言わせたりな。
(B)のやつ、ちょっと不器用なところがあるし、ぶっちゃけ面も古風で
華ってもんがなかった。けどアイツ、うらむってことを知らねえし、
俺が呼び出すといつでも飛んできて甲斐甲斐し世話を焼いてくれた。
なんつーか家庭的ってのかな。ひどいこといっぱい言っちまった気が
するけど、(B)はじっと耐えてた。俺が安っぽい(A)ばっか引っ掛けて
それなりに痛い目にあってヘコんで帰ってきても、アイツはいつも
そっと寄り添ってくれた。俺もなんだかんだ言って結局(B)のところに
戻って来ちまうんだよなあ。俺、アイツの気持ちにとっくに気付いて
たのにいいように利用してた。最低だよなあ。まじ最低。逝ってよし
つーか。やっぱあれだ、俺、(B)のこと好きだわ。うん。今すぐ会って
言ってこよ。オマエとやり直したいって。
上記の空欄(A)、(B)に適切な語句を入れなさい。(各3点)
A: GUIツールキット B: Tkinter
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
0115デフォルトの名無しさん
2006/12/18(月) 20:09:34環境、Pythonのバージョンは?
0116デフォルトの名無しさん
2006/12/18(月) 20:13:52$python -V
python 2.3.4
$uname -a
Linux my-pc 2.6.9-42.0.3.EL #1 Fri Oct 6 05:59:54 CDT 2006 i686 i686 i386 GNU/Linux
です。
0117デフォルトの名無しさん
2006/12/18(月) 20:14:040118デフォルトの名無しさん
2006/12/18(月) 20:21:57def signal_handler_func(*args):
print args; sys.exit(1)
signal.signal(signal.SIGINT, signal_handler_func)
raw_input()
手元のLinux環境では
2.3.3 だと raw_input() が KeyboardInterrupt エラーを raise、
2.4.2 だと signal_handler_func でトラップ可、
という結果になるなあ。
バージョン依存ってことでFA?
0119デフォルトの名無しさん
2006/12/18(月) 20:33:56白飯をいくら喰ってもおかずにたどり着かずにいらいらする
せっかくPythonの言語仕様がシンプルなんだから、一通りの概観を得たら
さっさとおいしいライブラリの勉強に移行するほうが望ましいと思う
そういう観点からすれば、『みんなのPython』→『Dive into Python』お勧め
後者は無料で読めるし、前半総論後半各論(ライブラリ)って構成も実践的でいいよ
0120デフォルトの名無しさん
2006/12/18(月) 21:19:29『公式チュートリアル』→ライブラリリファレンスとソース適宜参照しながらとにかく書く
だろ
0121デフォルトの名無しさん
2006/12/18(月) 21:44:400122デフォルトの名無しさん
2006/12/18(月) 21:49:34そんな話はどうでもよかったり
0123デフォルトの名無しさん
2006/12/18(月) 22:47:430124デフォルトの名無しさん
2006/12/18(月) 23:10:32紙ってデバイスに価値を感じるか否かだけを、引っ張りつづけて幾星霜。
0125デフォルトの名無しさん
2006/12/18(月) 23:25:300126デフォルトの名無しさん
2006/12/18(月) 23:28:45基本が抜けていたりする
そういう奴の何割が、Pythonのモジュールの仕組みや
オブジェクト思考機能
スコープについて完全に理解しているというのか
チュートリアルでも書籍でもいいから、いっぺん通して読んでみろ
コードのクオリティが高くなるぞ
0127デフォルトの名無しさん
2006/12/18(月) 23:37:08今読むと少々古く感じる部分もあるな。
0128デフォルトの名無しさん
2006/12/19(火) 01:00:08Pythonのモジュールの仕組みや
オブジェクト思考機能
スコープについて完全に理解しているというのか
0129デフォルトの名無しさん
2006/12/19(火) 01:07:000130デフォルトの名無しさん
2006/12/19(火) 04:33:030131デフォルトの名無しさん
2006/12/19(火) 06:41:090132デフォルトの名無しさん
2006/12/19(火) 08:20:23俺の脳内にあるんだぜ?
0133デフォルトの名無しさん
2006/12/19(火) 08:24:58http://www.google.com/codesearch
0134デフォルトの名無しさん
2006/12/19(火) 08:26:130135デフォルトの名無しさん
2006/12/19(火) 08:28:100136デフォルトの名無しさん
2006/12/19(火) 08:31:170137デフォルトの名無しさん
2006/12/19(火) 08:47:240138デフォルトの名無しさん
2006/12/19(火) 09:35:14オブジェクト思考(指向だろw)機能 というのは、
Python についてのドキュメントだけ読んでても、なかなか分らないよね。
web で参考になりそうなところを挙げてみると、下のようなところかな。
ただ、もっと初歩的な導入部分の解説のところがほしいし、
事例がPython だったら、もっといいと思うんだが。
Python のドキュメントみても、いきなり解説なしにオブジェクトやら
インスタンスやらの言葉が飛び出してくるものが多く、どれだけの人が
分っているのやら。
Java 知ってる奴しか分からんのじゃないか???
オブジェクト指向入門
http://itpro.nikkeibp.co.jp/members/NSW/ITBASIC/20050617/162922/
オブジェクト指向分析/設計
http://itpro.nikkeibp.co.jp/article/COLUMN/20061122/254695/
UML入門
http://itpro.nikkeibp.co.jp/article/COLUMN/20060213/229061/
ソフトウエア・パターン
http://itpro.nikkeibp.co.jp/article/COLUMN/20061106/252691/?ST=develop&P=1
デザインパターン
http://www.techscore.com/tech/DesignPattern/
早わかりGoFデザインパターン
http://itpro.nikkeibp.co.jp/article/COLUMN/20051201/225570/
0139デフォルトの名無しさん
2006/12/19(火) 10:10:160140デフォルトの名無しさん
2006/12/19(火) 10:22:220141デフォルトの名無しさん
2006/12/19(火) 10:45:46分かった気になってる奴の典型だな。
初心者はスキルこそ低いかも知れないが,学習意欲があるだけ可能性がある。
エセ中級者はスキルが低いくせに,分かった気になって学習意欲がない場合が多いので困る。
0142デフォルトの名無しさん
2006/12/19(火) 10:57:18データの流れる枠組みだけを必死に作ってればそれでよいのです。
0143デフォルトの名無しさん
2006/12/19(火) 11:34:26難しいのはオブジェクト指向「設計」な。こればっかりはデザパタ学んでも本を読んでもなんともならない。
設計手法を身につけたいなら,師匠につくなどして実務で経験を積むか,既存のソースを少しでも多く読むしかない。
0144デフォルトの名無しさん
2006/12/19(火) 11:36:180145デフォルトの名無しさん
2006/12/19(火) 11:38:46いや、ネタで書いてるだけなんだろうけど、
マジレスぎみに書いておけば、
ruby はそっち方面へPython より意欲的に取り組んでいるようにも
見えるんだよ。たとえば、
Rubyプログラミング+モデリング
http://www.rubyist.net/~keiju/doc/ruby-with-modeling-for-pdf.pdf
とかね。
自分の場合は、弟が会計士を取りそうなんで、会計関係のシステムでも
作りたいなと思ってあれこれ考えていたんだが、
Java でやろうかとも思ったんだけど(Java は多少とも経験がある)、
一人しか組む人間がいないのに、Java は苦しすぎると思い、
Python にたどり着いたとこ。
やっぱり大規模なシステム組むときに、オブジェクト指向は欠かせない
からね。
Java は煩瑣な言語だが、そっち方面のドキュメントはたくさん手に入る。
Python はシンプルで明快な文法だが、いかんせんそっち方面のドキュメントが乏しい。
いっそ関数だけで書いてくことにしてしまえば、悩まずに済むんだが、
(その方が早く組める可能性もないとはいえない)
悩ましいところだ…。と、グチを少々書いてみた。
みんなも頑張ってくれ。じゃ。
0146デフォルトの名無しさん
2006/12/19(火) 11:39:582冊以上持ってる奴は出入り禁止ということでどう?
0147デフォルトの名無しさん
2006/12/19(火) 11:45:420148デフォルトの名無しさん
2006/12/19(火) 11:46:46数値演算も腐ってますが何か?
0149デフォルトの名無しさん
2006/12/19(火) 11:49:57あなた何歳?
0150デフォルトの名無しさん
2006/12/19(火) 11:51:36そこでdRubyというバッドノウハウ投入
0151デフォルトの名無しさん
2006/12/19(火) 11:51:480152デフォルトの名無しさん
2006/12/19(火) 12:11:56Cやアセンブラの開発経験が豊富な俺にしてみれば、だ。
クラスとかインスタンスとかリファレンスとかは、
全部構造体とかポインタのメタファとして理解できるわけ。
だからオブジェクト指向なんて簡単。
設計手法も根底はCとかと同じだしね。
0153デフォルトの名無しさん
2006/12/19(火) 12:47:480154デフォルトの名無しさん
2006/12/19(火) 13:17:29とした場合に、モジュールXXXに固有の例外をキャッチするにはどうしたらいいんでしょうか。
具体的には、importだけを使った場合に、
import xml.dom.minidom
try:
DOM = xml.dom.minidom.parseString('python')
except xml.parsers.expat.ExpatError:
print "XML ExpatError."
と処理することを、
from xml.dom.minidom import parseString
try:
DOM = parseString('python')
except ???:
print "XML ExpatError."
ここで、???に上手く書いて処理する方法はありますか?
0155デフォルトの名無しさん
2006/12/19(火) 13:34:10ExpatError を import したくない理由が何かあるの?
0156デフォルトの名無しさん
2006/12/19(火) 13:53:13いえ、ExpatErrorをimportすれば(上の例では結局xmlからimportする必要がありますけど)出来ます。
Python一般のテクニックとして、上手く処理する方法があるのか知りたかっただけです。
0157デフォルトの名無しさん
2006/12/19(火) 13:57:130158デフォルトの名無しさん
2006/12/19(火) 13:57:230159デフォルトの名無しさん
2006/12/19(火) 14:03:01File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.5/lib-tk/Tkinter.py", line 38, in <module>
import _tkinter # If this fails your Python may not be configured for Tk
ImportError: No module named _tkinter
sys.pathは
['', '/usr/local/lib/python25.zip', '/usr/local/lib/python2.5',
'/usr/local/lib/python2.5/plat-linux2',
'/usr/local/lib/python2.5/lib-tk',
'/usr/local/lib/python2.5/lib-dynload',
'/usr/local/lib/python2.5/site-packages']
/usr/sahre/tk8.4とか、/usr/share/tcl8.4とか見てもconfigureファイルないし、
そもそもyumでインストールしてるからconfigureの必要はないと思うし・・・。
あと、yum install tkinterもしてみたけど、結果は同じでした。
ちょっとスレ違いの質問かもしれないけど、どなたか解決法教えてください。
0160デフォルトの名無しさん
2006/12/19(火) 14:03:50入門書嫁。
0161デフォルトの名無しさん
2006/12/19(火) 14:05:30ないと思われ。
0162デフォルトの名無しさん
2006/12/19(火) 14:09:35_tkinterモジュールがそもそもビルドされていないか
_tkinterモジュールのビルドに失敗しているか
_tkinterモジュールが必要としている何かがインスコされていないか
のどれかだと思われ。
どこのパケジ?
0163デフォルトの名無しさん
2006/12/19(火) 14:44:12http://www.python.jp/Zope/download/pythoncore
ここですね。
>_tkinterモジュールがそもそもビルドされていないか
これってPython-2.5内のconfigure->make->make installではビルドされないんですか?
0164デフォルトの名無しさん
2006/12/19(火) 15:11:16あれ、yum といいつつ実は Python を野良ビルドしている?
だったら
> _tkinterモジュールのビルドに失敗しているか
こっちの可能性大。
> これってPython-2.5内のconfigure->make->make installではビルドされないんですか?
状況による。
0165デフォルトの名無しさん
2006/12/19(火) 15:14:25yum install pythonするとpython-2.4がインストールされませんか?
2.5が使いたかったんでPyJUGからDLしてビルドしたんですけど・・・・。
他に方法があったんでしょうか。
0166デフォルトの名無しさん
2006/12/19(火) 15:15:55yum したのは
yum install tk
yum install tcl
yum install tkinter
の3つです。
Pythonそのものは上記の通りです。
0167デフォルトの名無しさん
2006/12/19(火) 15:23:30Pythonicさを求めるなら,例外も明示的にimportしておく.
from zipfile import ZipFile, BadZipfile
try:
ZipFile(open('hoge.tgz', 'rb'))
except BadZipfile:
print 'bad zip file.'
どのモジュールから例外が出るか分からなくても,「ある種の例外」の親クラスは共通.
try:
ZipFile(open('hoge.tgz', 'rb'))
except Exception, e:
print "exception raised from module %s" %(e.__module__)
これはちょっとハックだし,例外が同じモジュールで定義されていなければうまく動かない.
from zipfile import ZipFile
try:
ZipFile(open('hoge.tgz', 'rb'))
except Exception, e:
if e.__module__ == ZipFile.__module__:
print 'same'
else:
print 'different'
0168デフォルトの名無しさん
2006/12/19(火) 15:39:28何でそんなところでハマるのかな(;´Д`)
0169デフォルトの名無しさん
2006/12/19(火) 20:16:44ぼくちゃんはPython2.5のtkinterと2.4のtkinter、どちらが使いたいのかな?
yumでインストールしたtkinterは2.4と2.5のどちら用かな?
0170166
2006/12/19(火) 20:28:27てめーには聞いてねーよばーか^^
0171デフォルトの名無しさん
2006/12/19(火) 20:45:540172デフォルトの名無しさん
2006/12/19(火) 21:40:550173デフォルトの名無しさん
2006/12/19(火) 21:50:03まともでないことをまず疑うべきなんですね。
0174デフォルトの名無しさん
2006/12/19(火) 23:13:570175デフォルトの名無しさん
2006/12/20(水) 00:07:020176デフォルトの名無しさん
2006/12/20(水) 00:50:48もう一度ビルドしなおしてみようと思います。
0177デフォルトの名無しさん
2006/12/21(木) 15:12:46「Exceptionがobjectのサブクラスになった」という意味を理解してないのかね?
0178デフォルトの名無しさん
2006/12/21(木) 15:23:02http://rgruet.free.fr/PQR25/PQR2.5.html
0179デフォルトの名無しさん
2006/12/21(木) 15:44:04ゆっくり日本語訳されるのを待つとするか。
0180デフォルトの名無しさん
2006/12/21(木) 16:12:040181デフォルトの名無しさん
2006/12/21(木) 17:47:560182デフォルトの名無しさん
2006/12/21(木) 21:03:41radius = input("What is the radius?")
print radius*radius*3.14
のコード実行すると
SyntaxError: unexpected EOF while parsing
というエラーになるんだけどなぜでしょうか?
■ このスレッドは過去ログ倉庫に格納されています