Pythonのお勉強 Part30
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2008/11/16(日) 19:09:55http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1223543412/
0002デフォルトの名無しさん
2008/11/16(日) 19:10:570003デフォルトの名無しさん
2008/11/16(日) 19:18:260004デフォルトの名無しさん
2008/11/16(日) 19:19:30( ゚∀゚)彡 おっぱいそん!おっぱいそん!
⊂彡
0005デフォルトの名無しさん
2008/11/16(日) 21:15:07www
0006デフォルトの名無しさん
2008/11/16(日) 23:12:230007デフォルトの名無しさん
2008/11/17(月) 00:26:19これはいいPythonista
0008デフォルトの名無しさん
2008/11/17(月) 00:29:57なんかホールとか発見したら教えてね。
しばらくしたら忘れてね。
http://rail.s4.pf-x.net/bbs/
0009デフォルトの名無しさん
2008/11/17(月) 00:39:56メガンテしちゃうぞ!!
0010デフォルトの名無しさん
2008/11/17(月) 00:56:260011デフォルトの名無しさん
2008/11/17(月) 00:57:000012デフォルトの名無しさん
2008/11/17(月) 00:59:00Low Levelの略である。PythonコミュニティでLLといって場合には
むしろこっちの意味にとられるかもしれないから注意が必要だ。SDですが。
0013デフォルトの名無しさん
2008/11/17(月) 01:24:140014デフォルトの名無しさん
2008/11/17(月) 01:25:42import urllib2
import cookielib
req = urllib2.Request(
'http://pc11.2ch.net/test/bbs.cgi',
urllib.urlencode(
{
'bbs' : 'tech',
'key' : '1226830195',
'time' : 1,
'submit' : u'書き込み'.encode('sjis'),
'FROM' : '',
'mail' : 'sage',
'MESSAGE' : u'おっぱい'.encode('sjis'),
'suka' : 'pontan'
}
),
{'Referer' : 'http://pc11.2ch.net/'}
)
opener = urllib2.build_opener(
urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
res1 = opener.open(req)
if '<!-- 2ch_X:cookie -->' in res1.read():
res2 = opener.open(req)
0015デフォルトの名無しさん
2008/11/17(月) 03:21:58print u"おっぱい"
0016デフォルトの名無しさん
2008/11/17(月) 04:40:09print u"( ゚∀゚)o彡°おっぱい!おっぱい!"
0017デフォルトの名無しさん
2008/11/17(月) 07:57:46まあ俺はアメリカのITトップ企業につとまっているので日本語のおかしいなってきた。
0018デフォルトの名無しさん
2008/11/17(月) 18:50:15Rubyの方が優れてない?
0019デフォルトの名無しさん
2008/11/17(月) 18:57:52PythonはOSとかの環境を気にせず使えるのが最大の利点かな。
0020デフォルトの名無しさん
2008/11/17(月) 19:18:030021デフォルトの名無しさん
2008/11/17(月) 19:43:58Ruby、というかRailsに持ってかれちゃった感が拭えない。
0022デフォルトの名無しさん
2008/11/17(月) 19:44:28RubyがPythonをかなりパクってる為、言語としてはそこまで変わ
りはないが、世界ではPython人口の方が圧倒的に多く (企業/政府機関で
もGoogle、NASA、Appleを筆頭にPythonを全面的に促進)、
ライブラリの数も多いから、やろうと思えばなんでもプログラムできる。
Pythonの方が年配だから、プロジェクト/プログラム例も盛り沢山。
それに gtk、gimp、pidgin など、LinuxやUnixではPythonを
様々なコンポーネントで有効活用しているから、沢山遊べる。
シンタックスもPythonの方が綺麗。
Pythonの作者は まつもとゆきひろ とは違って、DQN気味ではない。
どうも見ても Python の方が有利だし、Pythonを学ぶのが吉。
0023デフォルトの名無しさん
2008/11/17(月) 19:47:510024デフォルトの名無しさん
2008/11/17(月) 19:53:19言語を選択する際のライブラリの充実度はかなり重要。
文法だけならPythonやRubyよりも好きな言語は沢山あるんだけど、
マイナーすぎてまだつかえない。
0025デフォルトの名無しさん
2008/11/17(月) 20:06:080026デフォルトの名無しさん
2008/11/17(月) 20:07:01俺も使ってるよ。
あと、 Google App Engine 使ってる人の多くは Django を使ってると思う。
0027デフォルトの名無しさん
2008/11/17(月) 20:27:09なんつうかRubyだのPythonだのよりまず先に英語を学べ
0028デフォルトの名無しさん
2008/11/17(月) 20:35:58.NETやJVMにタダ乗り系の奴は、マイナーでも
自動的にライブラリは充実してることになるよな
0029デフォルトの名無しさん
2008/11/17(月) 20:40:20.netなしでも動くPythonの価値。
マイナーってホントマイナーな奴。
0030デフォルトの名無しさん
2008/11/17(月) 20:42:350031デフォルトの名無しさん
2008/11/17(月) 20:49:25自分で海外の資料よみあされないと、
プログラマとしての能力に限界を設けることになるからな。
0032デフォルトの名無しさん
2008/11/17(月) 20:59:43それと一緒だ
つうか英語以上に学んで役に立つプログラミング言語はねえぞ
0033デフォルトの名無しさん
2008/11/17(月) 21:05:46自然言語だ!
このケツ毛野郎が!
0034デフォルトの名無しさん
2008/11/17(月) 21:06:310035デフォルトの名無しさん
2008/11/17(月) 21:48:20乙Python
0036デフォルトの名無しさん
2008/11/17(月) 21:56:05最近全然聞かないんだけど。
0037デフォルトの名無しさん
2008/11/17(月) 21:58:49OpPythonとかになるんだろ?
0038デフォルトの名無しさん
2008/11/17(月) 22:06:120039デフォルトの名無しさん
2008/11/17(月) 22:14:250040デフォルトの名無しさん
2008/11/17(月) 22:16:51>RubyがPythonをかなりパクってる為
これはダウト。RubyはPerlやLispをパクってるけど、Pythonからはかけらもパクってないだろ。
>ライブラリの数も多いから、やろうと思えばなんでもプログラムできる。
これはPythonに限らずRubyでもPerlでもJavaでも同じだろ。
>>24
>Pythonの方がライブラリが充実してるから。これにつきる。
これはないって。RubyもPerlもJavaも同じようなもん。他の言語をろくに知らないと、こういう見方になるのか。
Pythonにも痛い信者がいるもんだな。もっと冷静な人ばかりだと思ってた。
>>30
>Linux、Unix、Mac、Windows、全てのOSで強いのが Python。
確かに、WIndowsでの動作はPythonは比較的良い。Javaがいちばんだけど。
でもPythonはWindowsではファイルロックができんからなー。あれはなんとかならんのか?
0041デフォルトの名無しさん
2008/11/17(月) 22:17:34とか言ってたら変態だからな。
0042デフォルトの名無しさん
2008/11/17(月) 22:21:290043デフォルトの名無しさん
2008/11/17(月) 22:24:55うそうそ、全部嘘。
みんな名前のH度でPython選んでるに決まってるじゃん。
俺もそうだ。
0044デフォルトの名無しさん
2008/11/17(月) 22:31:14なんでJavaが入ってるの?これだからJ厨は…
0045デフォルトの名無しさん
2008/11/17(月) 22:41:41http://code.activestate.com/recipes/65203/
0046デフォルトの名無しさん
2008/11/17(月) 22:45:33大事なのは何が一番馴染むか。
もちろん俺はおっぱいそんだがな。
0047デフォルトの名無しさん
2008/11/17(月) 22:46:440048デフォルトの名無しさん
2008/11/17(月) 22:52:13演算速度はPythonより早いから
0049デフォルトの名無しさん
2008/11/17(月) 23:02:12> でもPythonはWindowsではファイルロックができん
ctypesで別に何でもできるが
msvcrt.locking
というのがある
が、Windowsでのプロセス間排他はMutexやSemaphoeのほうが一般的だろう
0050デフォルトの名無しさん
2008/11/17(月) 23:03:340051デフォルトの名無しさん
2008/11/17(月) 23:07:18まさにC/C++とPython/Rubyみたいなのを両刀できないやつの
逃げ道w
0052デフォルトの名無しさん
2008/11/17(月) 23:18:13PythonにはPsycoもboost.pythonもCythonもScipy.weaveもある
0053デフォルトの名無しさん
2008/11/17(月) 23:41:110054デフォルトの名無しさん
2008/11/17(月) 23:43:560055デフォルトの名無しさん
2008/11/18(火) 00:39:44モジュールを作るのがこれほど手軽な言語は他に知らない。
0056デフォルトの名無しさん
2008/11/18(火) 00:42:53メガンテという魔法を使えばファイルロックできるよ。
0057デフォルトの名無しさん
2008/11/18(火) 02:01:030058デフォルトの名無しさん
2008/11/18(火) 02:01:420059デフォルトの名無しさん
2008/11/18(火) 02:02:350060デフォルトの名無しさん
2008/11/18(火) 02:04:240061デフォルトの名無しさん
2008/11/18(火) 02:30:010062デフォルトの名無しさん
2008/11/18(火) 08:56:5312月が山だと思う。察してくれよみんな。
0063デフォルトの名無しさん
2008/11/18(火) 10:53:300064デフォルトの名無しさん
2008/11/18(火) 12:53:54psyco
0065デフォルトの名無しさん
2008/11/18(火) 13:49:400066デフォルトの名無しさん
2008/11/18(火) 14:18:100067デフォルトの名無しさん
2008/11/18(火) 15:19:150068デフォルトの名無しさん
2008/11/18(火) 15:22:53ごめん、ほんとうにごめん。もう駄目だ。
0069デフォルトの名無しさん
2008/11/18(火) 15:27:030070デフォルトの名無しさん
2008/11/18(火) 15:47:360071デフォルトの名無しさん
2008/11/18(火) 15:54:250072デフォルトの名無しさん
2008/11/18(火) 15:54:470073デフォルトの名無しさん
2008/11/18(火) 15:59:300074デフォルトの名無しさん
2008/11/18(火) 15:59:480075デフォルトの名無しさん
2008/11/18(火) 16:00:400076デフォルトの名無しさん
2008/11/18(火) 19:20:33Google groupのDjango usersぐらいしかないんだけど。
0077デフォルトの名無しさん
2008/11/18(火) 21:35:14Google App Engineのスレさえないんだね。
しかもPythonスレでも全然話題になってないとは・・・
0078デフォルトの名無しさん
2008/11/18(火) 21:37:36弄ってる人はここで話してもしょうがないからねぇ・・・
0079デフォルトの名無しさん
2008/11/18(火) 22:43:090080デフォルトの名無しさん
2008/11/18(火) 23:31:14Javaはstrutsの悪いイメージが・・・
0081デフォルトの名無しさん
2008/11/19(水) 00:48:29Google App Engine
http://pc11.2ch.net/test/read.cgi/php/1207754942/
0082デフォルトの名無しさん
2008/11/19(水) 01:09:57会ってもしょうがないよ。
落胆するだけ。
0083デフォルトの名無しさん
2008/11/19(水) 02:15:50勿体無い。
思うのはさ、「ウンコに触れたら自分もウンコ臭い」ってことだと思うんだ。
(ww辺りをNGに設定してさ、極力スルーしようよ。
皆で頼み込めばID実装されるかもしれないしさ。
これじゃpythonスレとしての機能を果たしてないよね。
0084デフォルトの名無しさん
2008/11/19(水) 02:16:160085デフォルトの名無しさん
2008/11/19(水) 03:01:43http://pc11.2ch.net/test/read.cgi/tech/1223709050/
そっちでやれ
0086デフォルトの名無しさん
2008/11/19(水) 10:42:040087デフォルトの名無しさん
2008/11/19(水) 10:43:17javaと根本的に違うって感じは確かにしないね
0088デフォルトの名無しさん
2008/11/19(水) 13:14:44ま、シリアスなタスクはPythonではやりたくないがな
性能は最初から求めないにしても、リソースリーク、排他制御が問題になるような
タスクは嫌だ
0089デフォルトの名無しさん
2008/11/19(水) 15:13:24自分だけの秘密ツールにするか
公開してしまうか悩むな
0090デフォルトの名無しさん
2008/11/19(水) 15:20:160091デフォルトの名無しさん
2008/11/19(水) 15:21:18公開すると後悔するよ
0092デフォルトの名無しさん
2008/11/19(水) 15:23:18どんなツールかだけでも書けばいいのに。
0093デフォルトの名無しさん
2008/11/19(水) 15:24:01とりあえず何するプログラムか言え
0094デフォルトの名無しさん
2008/11/19(水) 15:30:59ダンジョーを使って作りました。
0095デフォルトの名無しさん
2008/11/19(水) 15:36:43ダンジョーってなに? Djangoのことか?
別に公開しても問題ないでしょ。
launchpad あたりにあげてくれれば、参加できるけど。
0096デフォルトの名無しさん
2008/11/19(水) 15:42:34パイソンで書きました。
0097デフォルトの名無しさん
2008/11/19(水) 15:53:20"dg" にこだわるなら「ぢゃんご」
0098デフォルトの名無しさん
2008/11/19(水) 15:58:22な、94とか95とか97みたいな奴ばっかりなんだって。
会っても意味ないよ。
0099デフォルトの名無しさん
2008/11/19(水) 16:16:040100デフォルトの名無しさん
2008/11/19(水) 17:13:230101デフォルトの名無しさん
2008/11/19(水) 18:15:57こんなとこで公開すると、変なやつに粘着されるぞw
0102デフォルトの名無しさん
2008/11/19(水) 18:39:33興味持って聞いてくる奴が出てくる。
それからでも遅くない。
0103デフォルトの名無しさん
2008/11/19(水) 18:58:370104デフォルトの名無しさん
2008/11/19(水) 19:12:110105デフォルトの名無しさん
2008/11/19(水) 19:24:28どっちが柔軟に感じる?
0106デフォルトの名無しさん
2008/11/19(水) 19:57:03djangoだね。turbogearsは落ち目だから、もうやめたほうがいいよ。
0107デフォルトの名無しさん
2008/11/19(水) 20:02:15どんな使いかたするのかのいい例がみつからない
0108デフォルトの名無しさん
2008/11/19(水) 20:05:28TurboGears、落ち目か。
pylonsと統合するとかいう話はどうなったんだろう。
俺としては、Djangoは便利なんだけど、認証まわりの拡張性がイマイチだと思うのよ。
0109デフォルトの名無しさん
2008/11/19(水) 20:16:30> 俺としては、Djangoは便利なんだけど、認証まわりの拡張性がイマイチだと思うのよ。
それは実際当たってるね。
セッション、ユーザーログインなど、ユーザーの情報をdjangoで有効活用するように
するには、多少のプログラミングが必要となる。
あと、個人的にはtemplateへの文字列が atuto escape になったのが嫌い(解除できるけど)。
0110デフォルトの名無しさん
2008/11/19(水) 20:23:400111デフォルトの名無しさん
2008/11/19(水) 20:36:07そんなに困ったことはないなあ。
いざとなったらカスタムSQL書けばいいし。
0112デフォルトの名無しさん
2008/11/19(水) 20:38:34多くの開発者は満足しているようなんだけど、
Django の ORM のどの辺が "低機能すぎ" なの?
どこが改良できそうなの?
DBスキーマのラッパーなんだから、DBの機能よりは
フレキシブルにはいかないのはしってるよね。
0113デフォルトの名無しさん
2008/11/19(水) 20:42:190114デフォルトの名無しさん
2008/11/19(水) 20:46:17な。111とか112みたいなやつばっかりなんだって。
0115デフォルトの名無しさん
2008/11/19(水) 20:48:100116デフォルトの名無しさん
2008/11/19(水) 20:52:01106も追加しといて.
0118デフォルトの名無しさん
2008/11/19(水) 21:03:44TurboGearsとPylonsとDjangoどれが好き?
0119デフォルトの名無しさん
2008/11/19(水) 21:09:290120デフォルトの名無しさん
2008/11/19(水) 21:09:500121デフォルトの名無しさん
2008/11/19(水) 21:23:03オマエガナー
0122デフォルトの名無しさん
2008/11/19(水) 21:26:33web.py作ってた人たちはPylonsに移行したんだぜ。
0123デフォルトの名無しさん
2008/11/19(水) 21:49:170124デフォルトの名無しさん
2008/11/19(水) 22:39:330125デフォルトの名無しさん
2008/11/20(木) 00:51:050126デフォルトの名無しさん
2008/11/20(木) 06:34:570127デフォルトの名無しさん
2008/11/21(金) 01:40:50優良鯖が有料鯖になりそうだ…
Python使える無料鯖って少ないよな
0128デフォルトの名無しさん
2008/11/21(金) 01:53:00でもPython使う様になるんだと
VPSとか金払ってしっかり環境整えたいから
気にしないなあ。‥嘘ですが
0129デフォルトの名無しさん
2008/11/21(金) 10:09:140130デフォルトの名無しさん
2008/11/21(金) 10:10:270131デフォルトの名無しさん
2008/11/21(金) 11:09:370132デフォルトの名無しさん
2008/11/21(金) 12:02:380133デフォルトの名無しさん
2008/11/21(金) 12:59:46後者だとしたら、たいしたことないくせに身の程知らずが、と思います。
0134デフォルトの名無しさん
2008/11/21(金) 13:17:240135デフォルトの名無しさん
2008/11/21(金) 13:19:230136デフォルトの名無しさん
2008/11/21(金) 13:31:04よく気がついたな >134
0137デフォルトの名無しさん
2008/11/21(金) 13:57:37>>94-95
0138デフォルトの名無しさん
2008/11/21(金) 13:58:340139デフォルトの名無しさん
2008/11/21(金) 16:04:090140デフォルトの名無しさん
2008/11/21(金) 16:05:41アッーーー!!
0141デフォルトの名無しさん
2008/11/21(金) 16:30:03普通に出来ると思うけど。どのような利用例を想定してる?
ロジック部分の関数とデータ所得(任意の深さにアクセス)を分けるなら単にネストでok。
map(func, map(lambda x:x[0][1][2], alist))
0142デフォルトの名無しさん
2008/11/21(金) 16:52:540143デフォルトの名無しさん
2008/11/21(金) 17:15:22自己主張という名の自慰行為を見せ合って喜ぶ変態集団,というようななところか。
0144デフォルトの名無しさん
2008/11/21(金) 17:18:210145デフォルトの名無しさん
2008/11/21(金) 17:35:30for x in xs:
if hasattr(x, "__iter__"):
yield list(treemap(f, x))
else:
yield f(x)
こんなもんでいいんじゃね
0146デフォルトの名無しさん
2008/11/21(金) 17:44:300147デフォルトの名無しさん
2008/11/21(金) 17:48:12def f(a):
if hasattr(a, "__len__"):
return map(f, a)
else:
return fun(a)
return f(arg)
0148デフォルトの名無しさん
2008/11/22(土) 13:17:09サポートサイト(http://python.is-a-geek.org/wiki/)が潰れてるみたい
なんだよね。どっかに正誤表ないかな?
0149デフォルトの名無しさん
2008/11/22(土) 13:48:230150デフォルトの名無しさん
2008/11/22(土) 22:47:05どうすればいいか分かりますか?
scim使ってるので
XMODIFIERS="@im=scim"
や
LANG=ja_JP.eucJP
とかしてるんですが、全然だめです。
0151デフォルトの名無しさん
2008/11/22(土) 23:25:50scim-qtimm 入れて QT_IM_MODULE=scim ってしないと駄目じゃないかな?
つーかPythonの話ではないな。
0152デフォルトの名無しさん
2008/11/23(日) 08:28:37そうですね、QTの話だなと思い直してググったら
scim-bridgeという奴ならという情報があったので
それを使ったら入力できるようになりました。
ただscimで入力できていたktermやFirefoxでは
だめになったので、scimとscim-bridge並走状態…
とりあえずはいいか…
unicodeが普通に使えるようになってPyQt4での
日本語の扱いも楽になりましたね。
0153デフォルトの名無しさん
2008/11/23(日) 13:51:04現在入力中の文がコマンドとして
1 途中なのか、2 エラーなのか、3 コンプリートしたものか
判断する方法はないでしょうか?
1の例
for i in range(1, 3): ←これだけ入力されたら続きがある
2の例
j = foo() ←fooという関数はない
3の例
1+2 ←文として評価する事ができる
アドバイス頂けたら幸いですm(__)m
0154デフォルトの名無しさん
2008/11/23(日) 14:10:530156デフォルトの名無しさん
2008/11/23(日) 15:13:15pypy
0158デフォルトの名無しさん
2008/11/23(日) 19:59:53scimでもscim-bridgeでもuimでも問題ないだろ。
つーかLANG=ja_JP.eucJPってどんな化石なディストリ使ってるんだよ。
0159デフォルトの名無しさん
2008/11/24(月) 16:16:54マジで有るのか。
「パイパイいれていじってみたんだけど良いなコレ。」
「パイパイちょっと触ってみたんだけど、まだ発展途上じゃね?」
みたいな会話が繰り広げられているのか。
0160デフォルトの名無しさん
2008/11/24(月) 19:50:05temp=lst[i]; lst[i]=-1; i=temp #(1)
pythonではこんな見苦しい一時変数は必要ないもんね。と思い次のように書いた。
i, lst[i] = lst[i], -1 #(2)
賢明な諸兄はお気づきかと思うが、このプログラムは上手くいかない。
半日悩んだ結果、次のように書けばよいことが判った。
lst[i], i = -1, lst[i] #(3)
で、教えて欲しいんだけど、(2)が駄目で、(3)なら良いというこの動作は
うちの環境ではたまたま動くだけ? それとも公式に規定された動作ですか?
### 結局、プログラムは(1)の書き方で完成しました。
0161デフォルトの名無しさん
2008/11/24(月) 20:15:08http://www.python.org/doc/2.5.2/ref/assignment.html
http://www.python.jp/doc/release/ref/assignment.html
0162デフォルトの名無しさん
2008/11/24(月) 20:27:12http://www.python.org/doc/2.5.2/ref/assignment.html
> If the target is a target list enclosed in parentheses or in square brackets:
> The object must be a sequence with the same number of items as there are targets
> in the target list, and its items are assigned, from left to right, to the
> corresponding targets.
左から右の順で代入するとあるので公式に規定された動作といえそう。
0163デフォルトの名無しさん
2008/11/25(火) 03:29:32Pythonにもそういうイベントってある?
0164デフォルトの名無しさん
2008/11/25(火) 08:34:11PyConじゃね?
0165デフォルトの名無しさん
2008/11/25(火) 08:56:230166デフォルトの名無しさん
2008/11/25(火) 09:37:520167デフォルトの名無しさん
2008/11/25(火) 11:56:27残念ですが、なくなったようです。
0168デフォルトの名無しさん
2008/11/25(火) 12:52:260169デフォルトの名無しさん
2008/11/25(火) 17:18:14PyConって無くなったの?
知らなかった...orz....Pythonもうダメだ....。
0170デフォルトの名無しさん
2008/11/25(火) 17:19:020171デフォルトの名無しさん
2008/11/25(火) 17:34:31>>167=>>169
おい、デマばっか流してんじゃねーよ。
PyCon は今年もあったし、来年もちゃんとある。
http://www.python.org/community/pycon/
せいぜいお前は Python の人気を妬む Ruby使いってとこだろうが、
大人気ないぞ。
0172デフォルトの名無しさん
2008/11/25(火) 17:36:510173デフォルトの名無しさん
2008/11/25(火) 17:46:13ダンジョー乙
0174デフォルトの名無しさん
2008/11/25(火) 18:01:24日本でpython使うメリットなんてないんだよ。
0175デフォルトの名無しさん
2008/11/25(火) 18:27:390176デフォルトの名無しさん
2008/11/25(火) 18:45:13なんだ >>174 は、
恥というものを知らんのか。
0177デフォルトの名無しさん
2008/11/25(火) 18:56:11いいえ、ターボギアスR2です。
0178デフォルトの名無しさん
2008/11/25(火) 19:01:460179デフォルトの名無しさん
2008/11/25(火) 19:19:21惨めなやつ!
0180160
2008/11/25(火) 20:06:14なるほど、ちゃんと公式ドキュメントに書かれてたんですね。
「are not safe 安全でない」の解釈が微妙ですが、
規定された動作と考えてよさそうですね。
勉強になりました。ありがとうございました。
0181デフォルトの名無しさん
2008/11/25(火) 20:20:07例えば、
txt="abcdefg"
5番目と7番目(インデックス4と6)の文字の表示色を反転
print txt
みたいなことを望んでいます。
0182181
2008/11/25(火) 20:24:00文字と文字の背景の色を反転という意味です。
0183デフォルトの名無しさん
2008/11/25(火) 20:58:490184sage
2008/11/25(火) 21:00:56http://www.siafoo.net/snippet/88
もっと凝りたいなら、cursesで。
0185デフォルトの名無しさん
2008/11/25(火) 21:03:190187デフォルトの名無しさん
2008/11/26(水) 14:44:10「全く安全という訳ではない」
0188デフォルトの名無しさん
2008/11/26(水) 19:02:41turbogearsを構成している各eggファイルをダウンロードして、turbogearsのインストールを行いたいのですが、
公式サイトのファイルリストのどのファイルをダウンロードすればいいのでしょうか。
ちなみにWindows環境です。
0189デフォルトの名無しさん
2008/11/26(水) 19:15:300190デフォルトの名無しさん
2008/11/26(水) 19:20:15http://docs.turbogears.org/1.0/Wiki20/Page1
0191デフォルトの名無しさん
2008/11/26(水) 19:27:41ご紹介いただいたページは既に拝見しました。
プロクシ環境なのでこの方法が使えません。
そこで、上記サイトのオフラインインストールマニュアルを見たのですが、
"基本的に最新バージョンの各パッケージのeggファイルを落とせばいいけど、lightbox等の一部のパッケージは除く"みたいな表現があったので、悩んでます。
これらのファイルはダウンロードしなくていいって事なんですかね?
0192デフォルトの名無しさん
2008/11/26(水) 19:35:230193デフォルトの名無しさん
2008/11/26(水) 19:38:57そうですか。では、インストールしてみます。
ありがとうございました。
0194デフォルトの名無しさん
2008/11/27(木) 00:00:43Pythonで数独を解くプログラムを書きました。
色々いじってPenIII933MHzでPsycoなしで70秒、Psycoありで
25秒くらいで回答できるようになりました。
さらに高速化しようとboost.pythonを利用してC++に
移植したのですが返って遅くなってしまいました。
何が原因でしょうか?必要であればソース出します。
0195デフォルトの名無しさん
2008/11/27(木) 00:11:03よくわかんねえな。つうかそんなの組み方次第じゃないの。
数独解くプログラムって
ttp://codepad.org/T5tQp3vL
こんなもんでいいの?
C/CLLなら瞬殺だと思うけど。
0196デフォルトの名無しさん
2008/11/27(木) 00:11:58>PenIII933MHz
ワーキングプアかよ(wwWwwwWWWwwwwWwwWwwww
0197デフォルトの名無しさん
2008/11/27(木) 00:26:59回答ありがとうございました。ほとんど同じコードをPythonで書いていました。
あまりC++が詳しくないので、おっしゃられるとおりC++での組み方が
悪いだけなのだと思います。勉強しなおしてきます。
0198195
2008/11/27(木) 00:44:36C++のtypoね
>>197
ロジックが同じようなもんなら、とりあえず以下の点が疑わしいかなあ
・最適化していない(コンパイルオプションの問題)
・最近のVC++を使っているなら、vectorとかを使うと、[]演算子でもデフォルトで
範囲チェックがなされている可能性が高い(俺も細かいことは知らん)
0199デフォルトの名無しさん
2008/11/27(木) 00:57:35Pythonでは
ttp://codepad.org/3jRpg91x
という感じでした。
C++はおっしゃられるとおりvectorを多用していました。
boost.pythonがどうこういう以前の話だったようです。
勉強になりました。
0200デフォルトの名無しさん
2008/11/27(木) 01:07:400201デフォルトの名無しさん
2008/11/27(木) 01:07:55vector<>は別に悪者じゃなくて、C++ならそれが普通なんだけどね
VC++は最近セキュリティがらみで色々やってるみたいだから
SECURE_SCLだったかな?そのへんのキーワードでぐぐってみるといい
0202デフォルトの名無しさん
2008/11/27(木) 01:10:31スレ違いだが、vectorの仕様では、
oprator[]は範囲チェックなし、
範囲チェックしたければメンバー関数at(i)を使うことになっている。
0203デフォルトの名無しさん
2008/11/27(木) 01:12:55仕様ではそうなっていてもVC8以降は_SECURE_SCLが効いてると
operator[]の範囲チェックをするようになっていた気がする
だから、[]演算子「でも」と書いたんだけどね
0204デフォルトの名無しさん
2008/11/27(木) 05:32:110205デフォルトの名無しさん
2008/11/27(木) 05:34:040206デフォルトの名無しさん
2008/11/27(木) 06:17:44PIII800MHz
192MB
ですがなにか?
0207デフォルトの名無しさん
2008/11/27(木) 08:07:040208デフォルトの名無しさん
2008/11/27(木) 08:23:41cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res1 = opener.open(req)
if '<!-- 2ch_X:cookie -->' in res1.read():
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res2 = opener.open(req)
0209デフォルトの名無しさん
2008/11/27(木) 08:27:500210デフォルトの名無しさん
2008/11/27(木) 10:41:28pythonで一番メジャーなパッケージマネージャは何ですか?
調べてもあんまり出てこないんですよね・・。
0211デフォルトの名無しさん
2008/11/27(木) 10:53:26easy_installじゃないの?
0212デフォルトの名無しさん
2008/11/27(木) 12:26:520213デフォルトの名無しさん
2008/11/27(木) 13:34:53つか、遅すぎなんだけど。なにそれ。やる気あんの?
boost とか使う前にアルゴリズムを改良しろよ。
まずは CSP 学べ。
0214デフォルトの名無しさん
2008/11/27(木) 13:43:260215デフォルトの名無しさん
2008/11/27(木) 14:18:440216デフォルトの名無しさん
2008/11/27(木) 14:26:15総当りに近いんじゃね?
25秒とか、古い Pen II でもありえんよ。
CPU が P3 933Mhz もあるんだったら、半秒以上かかる sudoku solver 書いた時点で負け。
0217デフォルトの名無しさん
2008/11/27(木) 14:31:220218デフォルトの名無しさん
2008/11/27(木) 14:56:20if __name__ == '__main__':
import sys
main(sys.argv[1])
を付け加えて、
530070000
600195000
098000060
800060003
400803001
700020006
060000280
000419005
000080079
とかいう入力を与えてみたけど、一瞬だったけど?
time の結果が0.25秒程度
別にPsycoとか使ってねー
PentiumM 1.7GHz
Windows XP SP3
Python 2.5.2
0219デフォルトの名無しさん
2008/11/27(木) 15:01:05それって25*25でってこと?
0220デフォルトの名無しさん
2008/11/27(木) 15:14:04(少なくとも)3種の枝刈り手法があったと思ったが、どれもやってないの?
0221デフォルトの名無しさん
2008/11/27(木) 15:16:32上でやってるのはごくシンプルなバックトラックだよ
数十秒とか絶対ありえん
0222デフォルトの名無しさん
2008/11/27(木) 15:17:260223221=222
2008/11/27(木) 15:18:470224194
2008/11/27(木) 16:01:18221さんが指摘されているとおりシンプルなバックトラックです。
他のアルゴリズムも勉強してみます。
>213,218,221
218さんが検証してくださっているとおり簡単な問題は
1秒未満で回答できます。紛らわしくてすいません。
ttp://www.sudoku.name/index-jp.php
の問題を使用しているのですが上級++で
004000080
003007000
600800009
030002500
070080090
005000030
200001007
000400100
050000600
というような問題の回答が遅いです。
220さんがおっしゃっているようにアルゴリズムの工夫で
何とかしてみます。ありがとうございました。
0225デフォルトの名無しさん
2008/11/27(木) 16:32:27がんばって。
0226デフォルトの名無しさん
2008/11/27(木) 17:16:130227デフォルトの名無しさん
2008/11/27(木) 18:32:35GTKがLGPLなのに対して、QtはGPLか最近のtool kit としては高額の
有償ライセンスかのいずれか
利用できる人間は、どうしても限られてくる
0228デフォルトの名無しさん
2008/11/27(木) 21:04:280229デフォルトの名無しさん
2008/11/28(金) 02:59:53どっかのホームページで数独の問題集があって、難易度ごとに別れているんだけど
最強難易度の一番最後の問題(たぶん94番目)を解くのに3秒くらいだったよん。
==環境==
WinXP
ActivePython 2.5.2.2くらい
Core2Duo1.7GHz
bar = "fuga"
TITLE = {"title":foo - bar}
print TITLE["title"]
これで hoge - fuga と出力したいんだけど
"foo - bar"で引用符で囲むと foo - barになる。
囲まないとエラーになる。
どうすれば hoge - fuga に出来ますか?
0231デフォルトの名無しさん
2008/11/28(金) 11:00:31ちゃんと勉強汁
foo + " - " + bar
"%s - %s" % (foo, bar)
0232デフォルトの名無しさん
2008/11/28(金) 11:15:59>>195の、単純なバックトラックのCのコードですら
その問題は(俺の環境では)0.35秒ぐらいで解けるようだよ
アルゴリズム改善がベストだが、C++で書いても
そんなに遅いのは、別の理由もありそうだな
0233デフォルトの名無しさん
2008/11/28(金) 11:21:1116進数を作ってから、\xとつなげるにはどうすればいいですか?
"\x%x"のように文字列フォーマットを使おうとするとエラーになってしまいます。
0234デフォルトの名無しさん
2008/11/28(金) 11:22:440235デフォルトの名無しさん
2008/11/28(金) 11:25:310236デフォルトの名無しさん
2008/11/28(金) 11:26:190237デフォルトの名無しさん
2008/11/28(金) 11:30:51こんな感じ
0238デフォルトの名無しさん
2008/11/28(金) 12:18:40chr(0x25)
おぉ! + を使って繋げるのか
TITLE = {"title":foo + " - " + bar}
print TITLE["title"]
hoge - fuga
と、無事にできました
でも、これが分かりません orz
> "%s - %s" % (foo, bar)
プログラム経験は昨日からです...
www.python.jpを見ながら勉強してます
0241デフォルトの名無しさん
2008/11/28(金) 13:51:06PyScripterはバグが多く、使いにくかったです…
テキストエディタでいいじゃん
0243デフォルトの名無しさん
2008/11/28(金) 15:15:29Vimを +python でコンパイルしたもの
0244デフォルトの名無しさん
2008/11/28(金) 15:26:20ttp://www.sudoku9981.com/jp/print/extreme.asp
の94番目のやつ
0245225
2008/11/28(金) 15:46:29ありがと。
0.98秒くらいだった。ハードのスペック違うけど。
Vista
CPython 2.6
PentiumM 2.1GHz
0246225
2008/11/28(金) 16:31:333回くらい実行したら、最短で0.2秒くらいだった。
0248デフォルトの名無しさん
2008/11/28(金) 16:51:580249デフォルトの名無しさん
2008/11/28(金) 16:52:45まあ地道にコード打ってがんばろう。
てなことで今数独問題生成・解答アルゴリズムを考えてる。
0250デフォルトの名無しさん
2008/11/28(金) 17:17:26http://wiki.python.org/moin/BeginnersGuide/NonProgrammers
>"python file" と "python <file" の違いに注意してください。
>後者の場合、プログラム内でinput() や raw_input() が呼び
>出され、ユーザからの入力が必要な場合、入力はファイル から
>取り込まれます。この場合、パーザはプログラムの実行を開始
>される前にファイルを終端まで読み込んでおくので、プログラム
>はすぐに入力の終わりまで到達してしまいます。前者の場合
>(大抵はこちらの方が望ましい動作です)、入力には Python
>インタプリタの標準入力に接続された何らかのファイルまたは
>デバイスが充てられます。
まず最初に意味が理解できなかった所です。
0252デフォルトの名無しさん
2008/11/28(金) 18:01:08pythonは違うから注意しろってことだろ
0253デフォルトの名無しさん
2008/11/28(金) 18:26:17チュートリアルといいつつ、本当の初心者向けの文章ではないからね
Unixの経験と、他の何らかの言語の経験を仮定している記述も多い
必要の無いところは、分からなくても読み飛ばしてしまっていいと思う
0254デフォルトの名無しさん
2008/11/28(金) 18:34:05両者ともfileに含まれるPythonコードを解析し実行するという点では同じ。
ただ後者の場合は、解析段階で最後まで読んだfileをinput()の入力にあてがうので、
やってみるとEOFErrorになる。なので普通は誰もやらない。
0255デフォルトの名無しさん
2008/11/28(金) 18:45:00ひょっとしてコンソールで
$ python file.py
$ python < file.py
こういう事?
0256デフォルトの名無しさん
2008/11/28(金) 18:52:23なんでそんな簡単なことがわからんの?
Pythonがどうこう以前に、そんなこと
普通にシェルに触ったことがある奴なら誰でもしってるよ。
$ cat < file.py
がなんで file.py の内容をそのまんま吐き出すか考えてみろよ。
stdin からのインプットを待ってるからだろ?
0257デフォルトの名無しさん
2008/11/28(金) 19:05:030258デフォルトの名無しさん
2008/11/28(金) 19:19:45Pythonにこだわらずに
LISPだけでもいいです。
0259デフォルトの名無しさん
2008/11/28(金) 19:25:11LISP風の定義を言え。
lambda関数ばっかでやりたいのか? 変数に代入できんだろ。
0260デフォルトの名無しさん
2008/11/28(金) 19:41:120261デフォルトの名無しさん
2008/11/28(金) 19:47:35Lispは全然詳しくないが
・インデクスアクセスしたいタイプの問題なので、リストよりベクタ向き
・副作用を避けようとすると、9x9のベクタを大量にコピーしまくる羽目になる
ような気がするが、どうなんだろうな
>>199のコードはforとかは使っているが比較的関数型よりのコードに見えるよ
つまり、コピーしまくりんぐ
0262デフォルトの名無しさん
2008/11/28(金) 19:53:30http://www.norvig.com/sudoku.html
http://blog.livedoor.jp/k_urushima/archives/554026.html
http://www.unixuser.org/~euske/doc/python/python-lisp-j.html
http://d.hatena.ne.jp/reinyannyan/20080605/p1
ごめんなさい
0264デフォルトの名無しさん
2008/11/28(金) 20:37:06python < <i>file</i>
このようになってたら分かり易いんだけどな。
fileがファイル名なのか "file" という文字を
そのまま打つ必要があるのかが解り難い
0265デフォルトの名無しさん
2008/11/28(金) 21:07:380266194
2008/11/28(金) 22:38:59ttp://codepad.org/IdQp5HCX
枝刈りとして分岐が少ない場所から走査するようにしたところ
5秒で回答できるようになり5倍高速化しました。
数十倍は難しいです。もしよろしければ後学のために
ソースを見せていただけないでしょうか?
>>244,245
2.8秒でした。自分のプログラムもそれなりの速さがでているようで
安心しました。
>>198,201,202,232
C++勉強して書き直したところboost.pythonを利用して
0.5秒で回答できるようになりました。
きちんとC++やりなおさないとだめですね。
ところでC++とPythonで配列をやりとりするとき
ttp://codepad.org/rQ1unjWk
のように書いてみたのですが他にうまい書き方があるのでしょうか?
ttp://www.boost.org/doc/libs/1_37_0/libs/python/doc/v2/faq.html#question2
を見たのですが、vector<->listの変換の自動化は未実装である
ということでしたが毎回wrapperを書かないといけないのでしょうか?
0267デフォルトの名無しさん
2008/11/28(金) 23:00:46python標準のリストって何でも入るからな
効率よくC++のvector<int>とやりとりしたいんなら
とりあえずarrayがいいんじゃないの
arrayモジュールについて調べてみることを薦める
arrayは単一型のシークエンスで、バッファインタフェースを備えていて、
buffer_info()で思いっきり内部にアロケートされてる配列のアドレスも取れるから
0268225
2008/11/29(土) 00:36:50改造しちゃったけど、それでよければ。
ttp://codepad.org/jYgSN02c
0269デフォルトの名無しさん
2008/11/29(土) 05:23:48{
board[i]=boost::python::extract<int>(l[i]);
}
イテレータでまわすほうが速くなると思う
0270デフォルトの名無しさん
2008/11/29(土) 05:29:06助けて
$ python sudoku.py
Traceback (most recent call last):
File "sudoku.py", line 80, in <module>
main(sys.argv[1])
IndexError: list index out of range
0271デフォルトの名無しさん
2008/11/29(土) 05:32:09#test()
#sys.exit(0)
のコメントアウトを外すんだね。
吊ってくる。
0272デフォルトの名無しさん
2008/11/29(土) 05:50:26ポイントは
・セルごとに次に置ける数字のsetを用意する(テーブル)
・一番数字の個数が少ないセルから分岐する
・テーブルは再帰ごとに新しいのをつくる
最初、数字ごとに次におけるセルをテーブルにして苦労した。
0273デフォルトの名無しさん
2008/11/29(土) 11:51:430274デフォルトの名無しさん
2008/11/29(土) 12:55:56また、-3コマンドラインスイッチにより3.0で削除される機能を使っている場合、警告を出せる。
http://d.hatena.ne.jp/JiaLu/20081003/1222999530
2.6を使用するために、あなたのコードに下記の変更が必要かもしれない。
0275デフォルトの名無しさん
2008/11/29(土) 17:07:00例えば AST とか、バイトコンパイルの実装とか、そういったやつ。
0276デフォルトの名無しさん
2008/11/29(土) 19:02:430277デフォルトの名無しさん
2008/11/29(土) 19:05:490278デフォルトの名無しさん
2008/11/29(土) 19:10:38そういう池沼にはレスつけないでくれ。
0279デフォルトの名無しさん
2008/11/29(土) 19:33:54そうか、なら安心だな。
0280デフォルトの名無しさん
2008/11/29(土) 19:35:53どうみても同一人物だな
0281デフォルトの名無しさん
2008/11/29(土) 19:36:24どうみても同一人物だな
0282デフォルトの名無しさん
2008/11/29(土) 20:30:01自分は普通に使えてるんだけど
0283デフォルトの名無しさん
2008/11/29(土) 20:46:37matplotlibがもうサポートしないよと言ってる
0284デフォルトの名無しさん
2008/11/29(土) 22:45:230285デフォルトの名無しさん
2008/11/30(日) 20:49:38便利そうだ
http://www.nasuinfo.or.jp/FreeSpace/kenji/sf/visualj/index.html
0286デフォルトの名無しさん
2008/12/01(月) 11:47:04色んなライブラリのパッケージもあって楽だし
今のところは2.5が一番使いやすい環境みたいだけど、
今からそれ勉強しても無駄になりますか?
0287デフォルトの名無しさん
2008/12/01(月) 15:29:43>今からそれ勉強しても無駄になりますか?
無駄にはならないと思うよ。ただ2.6を使ったり、Python 3.0で何がどう変わるのか、なぜ変わるのか、その辺りの事情についてアンテナ張って勉強しとけばオッケーかと。
0288デフォルトの名無しさん
2008/12/01(月) 15:47:030289デフォルトの名無しさん
2008/12/01(月) 18:28:12環境全部移行するのが面倒くさすぎて、結局まだ2.5.2を使っている
どーせ主要なディストリとかcygwinとかもまだキャッチアップしてないだろ
0290デフォルトの名無しさん
2008/12/01(月) 19:15:10Debian stableだとまだ2.4だw
3に完全移行するのは当分先になるだろうな
0291デフォルトの名無しさん
2008/12/01(月) 19:15:260292デフォルトの名無しさん
2008/12/01(月) 19:32:20俺なんかTenginだもんね。
0293デフォルトの名無しさん
2008/12/01(月) 19:37:18mod_wsgiで動くの?
0294デフォルトの名無しさん
2008/12/01(月) 19:37:56動画なら何を使うといいのでしょうか?
0295デフォルトの名無しさん
2008/12/01(月) 21:51:440296デフォルトの名無しさん
2008/12/01(月) 22:21:280297デフォルトの名無しさん
2008/12/01(月) 22:34:550298デフォルトの名無しさん
2008/12/01(月) 22:38:07Djangoの話題はスレが荒れる
0299デフォルトの名無しさん
2008/12/01(月) 22:57:040300デフォルトの名無しさん
2008/12/01(月) 23:04:19使ってる人たちの香ばしさとか
0301デフォルトの名無しさん
2008/12/01(月) 23:26:180302デフォルトの名無しさん
2008/12/02(火) 00:55:46ファイルサイズが大きくて困ってます
0303デフォルトの名無しさん
2008/12/02(火) 01:00:590304デフォルトの名無しさん
2008/12/02(火) 01:03:52for i in x: print i;print '\n';
これなら出来るけど
class hoge: def func(): pass;
みたいにインデントが必要なのが2つ以上は無理だと思うよ
0305デフォルトの名無しさん
2008/12/02(火) 01:18:02たかがスクリプトのファイルサイズを気にする奴がいるとはな
0306デフォルトの名無しさん
2008/12/02(火) 01:30:410307デフォルトの名無しさん
2008/12/02(火) 01:31:530308デフォルトの名無しさん
2008/12/02(火) 01:32:030309デフォルトの名無しさん
2008/12/02(火) 01:34:270310デフォルトの名無しさん
2008/12/02(火) 01:51:350311デフォルトの名無しさん
2008/12/02(火) 01:53:12インデントが実行速度に影響するわけないだろ
0312デフォルトの名無しさん
2008/12/02(火) 01:53:36> インタプリタだから
関係ねえし。
0313デフォルトの名無しさん
2008/12/02(火) 01:57:51発想が化石過ぎて感動した
pycってファイルが何なのか分かってるか?
0314デフォルトの名無しさん
2008/12/02(火) 02:11:320315デフォルトの名無しさん
2008/12/02(火) 02:13:220316デフォルトの名無しさん
2008/12/02(火) 02:13:30宣言しておいた方が速くなるとかあったなw
そういえば、レンタル鯖とかでPythonのCGIを実行する場合って
pycは作られるのかな?
0317デフォルトの名無しさん
2008/12/02(火) 02:14:17作られるよ
0318デフォルトの名無しさん
2008/12/02(火) 02:14:52実行だから、「インデントが」速度に影響出るなんてことは、あり得ねえけどな
0319デフォルトの名無しさん
2008/12/02(火) 04:06:23> pythonでインデント使わない方法はありませんか?
> ファイルサイズが大きくて困ってます
ハードタブにしろ
0320デフォルトの名無しさん
2008/12/02(火) 07:30:440321デフォルトの名無しさん
2008/12/02(火) 08:30:29全体の実行時間に対する割合で言えば影響は無いと言ってもいいくらいという
0322デフォルトの名無しさん
2008/12/02(火) 08:42:550323デフォルトの名無しさん
2008/12/02(火) 10:06:44ギャバンが蒸着を完了する程度の差しか無いだろうな。
0324デフォルトの名無しさん
2008/12/02(火) 10:29:07バージョン間ごとの信者なんて沸かないことだな。
安定だの不安定だの、信頼性に欠けるとか。
ドキュメント化されてるからそうなってるんだろうなー。
0325デフォルトの名無しさん
2008/12/02(火) 10:36:25バージョンあがるごとに確実によくなってるし、Deprecated Warning を無視していない
限りはほぼ確実に次のマイナーバージョンアップ (2.4 -> 2.5 みたいな) で問題ないから
移行も楽だからねぇ。
Python3.0も、互換性はなくなるけどオブジェクトシステムとか基本が変わらないし、
Python2.6にPython3.0移行支援が用意されてる (大量の Deprecated Warning と 2to3) から、
php4 -> php5 とか perl5 -> perl6 とか ruby1.8 -> ruby1.9 とかよりも簡単に
移行できそう。まぁ、ある程度有名ライブラリが3.0に対応してくるまで自分のアプリは
2.x 用のままだけど。
0326デフォルトの名無しさん
2008/12/02(火) 10:37:200327デフォルトの名無しさん
2008/12/02(火) 18:45:34どこかにいいsample codeないのかな
0328デフォルトの名無しさん
2008/12/02(火) 18:51:240329デフォルトの名無しさん
2008/12/02(火) 21:41:14動画はpygame
という使い分けでいいのか?
0330デフォルトの名無しさん
2008/12/02(火) 22:40:310331デフォルトの名無しさん
2008/12/03(水) 02:00:48加工して書き込みできなかった
pygameが読み込みも加工も新規作成もできる
0332デフォルトの名無しさん
2008/12/03(水) 14:21:04class foo(object): CON = 'const'
print foo.CON # print CON としたい
例えば上のprint文で、いちいち"foo."を書くのが面倒です。
importっぽいことをやって、"foo."を省略できるように
させる方法はあるのでしょうか?
0333デフォルトの名無しさん
2008/12/03(水) 14:53:10pythonに切り替えた
はたしてこの選択は間違っていなかったのか
0334デフォルトの名無しさん
2008/12/03(水) 15:10:020335デフォルトの名無しさん
2008/12/03(水) 16:25:36python というより numpy, scipy の話って感じかな
sage ってのもなんか似た臭いなんだけどどういう位置づけなのかな?
scipy のさらに上位のまとめライブラリ?
ただ matlab から"乗り換え" というのなら普通は
scilab とか octave とかが思い浮かぶけど
0336デフォルトの名無しさん
2008/12/03(水) 16:41:24俺は windows用の matlab なら持ってるけど、俺がメインでつかう
linux 用の matlab はもってないから、完全に matlablib に乗り換えた。
(http://en.wikipedia.org/wiki/Matplotlib)
matlab はソフトウェアには組込めないけど、matlablibは
簡単にインテグレーションできるので、移行してよかった。
てか、matlablib を見つけれてよかったとおもってる。
お勧めするよ。
0337デフォルトの名無しさん
2008/12/03(水) 16:45:21おれが知らない matlablib の話なのか
はっきりしてくれ
0338デフォルトの名無しさん
2008/12/03(水) 16:48:23ごめん、matlablib は自分用語で、公式にはmatplotlib。
0339デフォルトの名無しさん
2008/12/03(水) 20:20:50はたしてこの選択は間違っていなかったのか
Matlab は揃いすぎ。理屈が解らなくても、マウス・クリックだけでフィルタ設計ができ
てしまう。Python ならば、学生が理論を理解できていなかったら結果を出せない。学生
用ならば python のほうが良いと思う。
>>335 ただ matlab から"乗り換え" というのなら普通は
scilab とか octave とかが思い浮かぶけど
Python 使いならば matlab から scipy に乗り換えてもおかしくない。sympy など、他の
モジュールとの連携させる意味では python のほうが matlab より扱いやすい。もう
matlab は言語としては古臭くなっていると思う。
Matlab の優位性は、matlab 言語での膨大な蓄積とドキュメントの豊富さだと思う。
0340デフォルトの名無しさん
2008/12/03(水) 22:08:10class foo(object): CON = 'const'
CON = foo.CON
print CON
どうよ?
0341デフォルトの名無しさん
2008/12/04(木) 01:25:08import foo.CON as CON
0342デフォルトの名無しさん
2008/12/04(木) 01:36:370343デフォルトの名無しさん
2008/12/04(木) 02:45:06--------
class foo(object): CON = 'const'
--------
file2
--------
from file1 import foo.CON as CON
print CON
--------
0344デフォルトの名無しさん
2008/12/04(木) 05:42:060345デフォルトの名無しさん
2008/12/04(木) 09:09:15ナイトツアー問題
http://slashdot.jp/article.pl?sid=08/12/03/0419216
0346デフォルトの名無しさん
2008/12/04(木) 09:56:16ってめっさ遅くないですか?
ローカルにある2MBくらいのファイルを移動するのに0.4秒から1秒かかったんですけど
流体の計算より時間かかるってどんだけ
0347デフォルトの名無しさん
2008/12/04(木) 10:48:530348デフォルトの名無しさん
2008/12/04(木) 11:05:44時間がかかってるんなら、それはクロスデバイスな移動を行おうとしたからで、
実際にはコピーが走ってるんだろ
コピーはshutil.copyfileobj()で行われるはずだが
デフォルトでは16KB単位(デフォルト引数でlength=16*1024となっている)
のようだから、ddでも使ってその環境での最適なバッファ長を確認したうえで、
shutil.copyfileobj.func_defaultsを書き換えてみたら
0349デフォルトの名無しさん
2008/12/04(木) 11:08:41キャッシュに一旦入ってしまうとコピーは一瞬で終わるし
コピーの性能を評価する時には色々気をつけなければならないことは沢山あるぞ
勿論同一デバイス上でのrenameでいいのなら、それに越したことは無い
0350デフォルトの名無しさん
2008/12/04(木) 11:42:520351346
2008/12/04(木) 11:43:58XPsp2 core2 Cドラ 空き100ギガ以上
とりあえずファイルの操作はpopenでシェル呼んでやったほうが速いですか?
popen2.popen4('move '+ファイルパス+' '+ディレクトリパス+' /y')
でいけますか?
0352332
2008/12/04(木) 12:02:47お返事有難うございました。
するとなると、下記のような場合で foo.CONX を一気に CONX と
書けるようにするのは難しいのでしょうか?
class foo(object):
CON1 = 'const1'
CON2 = 'const2'
# 以下CON3などたくさん
0353デフォルトの名無しさん
2008/12/04(木) 12:04:09よくわからんな
Cドライブ→Cドライブの移動で、そんなに時間かかってんの?
0354デフォルトの名無しさん
2008/12/04(木) 12:21:56他のライブラリーが対応してないから
0355デフォルトの名無しさん
2008/12/04(木) 12:24:11そういえば、 Perl 6 という vaporware もありました。
0356デフォルトの名無しさん
2008/12/04(木) 12:30:130357デフォルトの名無しさん
2008/12/04(木) 12:41:44CからCです。
いくらなんでも遅すぎですよね。
0358デフォルトの名無しさん
2008/12/04(木) 12:45:06file1
--------
class foo(object):
CON = [('const%d' % n) for n in xrange(1000)]
--------
file2
--------
from file1 import foo.CON as CON
for n in len(CON):
print 'CON%d = %s' % (n, CON[n])
--------
0359デフォルトの名無しさん
2008/12/04(木) 12:47:22早めにディスクのバックアップ取っとけw
0360デフォルトの名無しさん
2008/12/04(木) 13:51:33numpy単独よりも便利なのかな
0361デフォルトの名無しさん
2008/12/04(木) 14:13:380362デフォルトの名無しさん
2008/12/04(木) 14:17:330363デフォルトの名無しさん
2008/12/04(木) 14:21:57変更点は全て列挙してあると思うけど、例を載せてほしいってこと?
0364デフォルトの名無しさん
2008/12/04(木) 15:05:480365デフォルトの名無しさん
2008/12/04(木) 15:43:10ありすぎて書けない… わけじゃなく段差の分結果的に
"what's new" の項目数は少なくなったって感じ?
0366デフォルトの名無しさん
2008/12/04(木) 15:44:05いやいや、十分長いがなw
参考文献へのリンクも含めて読んでみろよ。
0368デフォルトの名無しさん
2008/12/04(木) 16:16:05実装のos.renameでOSErrorが発生してcopy2の方が呼ばれてるから遅くなってるのかな?
shutil.move("C:\test.txt", "C:\Test\test.txt")みたいにファイル名を追加するか
os.renameを直で使ってみたら?
0369368
2008/12/04(木) 16:17:100371デフォルトの名無しさん
2008/12/04(木) 17:37:200秒
0372デフォルトの名無しさん
2008/12/04(木) 19:02:540373デフォルトの名無しさん
2008/12/04(木) 19:35:22お前の使ってるライブラリが対応したときだろ。
0374デフォルトの名無しさん
2008/12/04(木) 19:59:37リリースすればよかったような気がする。
でも、3.0は長い移行期間が必要とされるから、逆に早めにリリース
しておきたかったんだろうね。
0375デフォルトの名無しさん
2008/12/04(木) 20:17:04... class a:
... CONST1=1
... CONST2=2
... for x in dir(a):
... if x.startswith("CONST"):
... exec(x + "=" + "a." +x)
... print CONST1
どうよ?
0376375
2008/12/04(木) 20:18:06ごめんよ。
0377デフォルトの名無しさん
2008/12/04(木) 20:57:18こっちの方が言語的にいいのは、頭では理解してんだけどさ。
いままでの癖がなかなか抜けなくて、ぱいそんたんに怒られてばっかりだ。
0378デフォルトの名無しさん
2008/12/04(木) 21:26:41早速起動した。
> help()
打ってみた。動く。
そこで出た文章に従って
> modules spam
打ってみた。
エラー出た。
uft-8 ってエンコーディングが見つからないって。
・・・・あたりまえじゃああああ
どこが間違ってるのかよく分からんです。
Python30のディレクトリ下をgrepして出てくるのは
Lib/test/bad_encoding.py だけ。これは想定通りだろうが・・・
0379デフォルトの名無しさん
2008/12/04(木) 21:35:52除去するのが正しい使い方?
別んとこによけておいたら、↑も通った。
0380デフォルトの名無しさん
2008/12/04(木) 22:38:47なんかキモイな…
0381デフォルトの名無しさん
2008/12/04(木) 22:42:12これでフレームワークが対応してくれれば・・・。
0382デフォルトの名無しさん
2008/12/04(木) 22:52:02def printf(fmt, *args): print fmt % args,
def fprintf(f, fmt, *args): print >>f, fmt % args,
とか定義すりゃ
printf("a%s%s\n", 'b', 'c')
とか書けるわなあ
print()関数は、%とカッコがC風のprintf()より冗長に見えてしまうね
0383デフォルトの名無しさん
2008/12/04(木) 23:03:100384デフォルトの名無しさん
2008/12/04(木) 23:06:110385デフォルトの名無しさん
2008/12/05(金) 00:17:30boost::format
みたいだ
0386デフォルトの名無しさん
2008/12/05(金) 00:28:39print("a", 'b', 'c', sep="")
0387デフォルトの名無しさん
2008/12/05(金) 00:32:32それもキモいな
あまり意味の感じられない多様性
Perlみたい
0388デフォルトの名無しさん
2008/12/05(金) 00:44:150389デフォルトの名無しさん
2008/12/05(金) 00:53:59ちょっと込み入った規模ならファイルオブジェクトにwriteするか
loggingを使ってる。
潔癖症にかかってる人は
変える必要など無い所まで変えやがるから
迷惑この上ない。
0390デフォルトの名無しさん
2008/12/05(金) 01:03:49Pythonの中の人言ってなかったっけか
0391デフォルトの名無しさん
2008/12/05(金) 01:06:36それは本当にそう思うけど
print()関数は、後方互換性潰してまで導入したのがこれか、とは思う
0392デフォルトの名無しさん
2008/12/05(金) 01:07:240393デフォルトの名無しさん
2008/12/05(金) 01:09:51全くだw
0394デフォルトの名無しさん
2008/12/05(金) 01:12:030395デフォルトの名無しさん
2008/12/05(金) 01:15:560396デフォルトの名無しさん
2008/12/05(金) 01:21:54じゃぁお前はprintの変更の影響受けて無いじゃん。
Python開発者は潔癖症なんかじゃないよ。
print文の変更も議論の上だよ。 print文でファイルに出力する方法とか、最後に改行しない
方法とか、その為だけに構文を増やしていたのを、普通の関数呼び出しにして柔軟に
使えるようになった。
数タイプを削減するためだけに構文増やしまくってたprint文がキモ過ぎただけで、
print関数は素直で自然な姿。
0397デフォルトの名無しさん
2008/12/05(金) 02:15:030399デフォルトの名無しさん
2008/12/05(金) 04:52:48どこかで切り捨ては必要だなって思う。
0400デフォルトの名無しさん
2008/12/05(金) 09:11:270401デフォルトの名無しさん
2008/12/05(金) 10:00:420402デフォルトの名無しさん
2008/12/05(金) 10:32:16printの構文くらいしか噛みつくとこないということにする以外に噛み付く方法無いんですね
0403デフォルトの名無しさん
2008/12/05(金) 10:41:210404デフォルトの名無しさん
2008/12/05(金) 10:44:28printが関数になって、関数の構文で呼び出せるようになり、
Pythonの構文がいっそうシンプルになった。
0405デフォルトの名無しさん
2008/12/05(金) 10:46:27ぶっちゃけPython3.0の新機能なんざ、後方互換性の破壊による
二重保守や移行の手間に見合うほどのもんじゃないよ、どれもこれも
Python3.0のほうがより良い仕様だということは認めるが、
別に言語仕様だの性能だのの明白な強化に繋がる仕様じゃないし
単なる切り落としも多い
例えば、reduce()がbuiltinから消えて喜ぶ奴がいるか?
はっきりしているのは、それでスクリプトを書き換える必要が生じる
ユーザだけは沢山いるということだ
周辺ライブラリとか作ってる人たち、今後は二重保守やテストを強いられることに
なんのかね
当たり前のようにC APIも仕様変わってんだろ
ぞっとするぜ
0406デフォルトの名無しさん
2008/12/05(金) 10:47:36文字列の扱いは全く完璧に変わった
例外のハンドリングも構文が変わった
シンタクスレベルの変更なので、スクリプト内で動的にバージョンを判断して
分岐することはできない
バイトコンパイルの時点でシンタクスエラーになるからな
0407デフォルトの名無しさん
2008/12/05(金) 10:49:240408デフォルトの名無しさん
2008/12/05(金) 11:02:43移行したくないならどうぞそのまま Python 2.x をお使いください。
だれもあなたに移行しろと言ってませんし、俺もまだ移行しません。
1年や2年は様子見で良いよ。
ライブラリが揃いだしてから、新規のコードは Python3.0 用に書き始めれば良い。
0409デフォルトの名無しさん
2008/12/05(金) 11:09:44なるほど、使ってる全部の端末に2種類のPythonインタプリタをインストールして
二重運用するわけかw
そして今までのコードベースはそのやり方じゃ、3.0からは使えない、と
うっかりミスでトラブル続出だな
boost.pythonとかどうなるのやら
0410デフォルトの名無しさん
2008/12/05(金) 11:11:52俺は1.9、2.4、2.5、2.6、3.0全部入れてるぞ
0411デフォルトの名無しさん
2008/12/05(金) 11:13:16>1.9
Ruby厨乙(ww
0412デフォルトの名無しさん
2008/12/05(金) 11:13:560413デフォルトの名無しさん
2008/12/05(金) 11:51:49format文(pythonのprint文)のきもい使い方駆使しまくってたんだけど
似たことpythonでもできるようになるのかい?
0414デフォルトの名無しさん
2008/12/05(金) 11:59:32C APIについてはどうなのか知らないけど、
通常のPythonスクリプトのプロジェクトでの2重保守のコストは、
テストを自動化してるかどうかによると思う。
変換ユーティリティ 2to3 の利用もテストを前提としてるみたいなので。
ttp://www.artima.com/weblogs/viewpost.jsp?thread=208549 より、簡単に抜粋すると。
0. テストを書く。
1. python 2.6 へ移植。
2. py3k 警告モードでテスト。
3. 警告がなくなるまで修正を繰り返す。
4. 2to3で 3.0 向けに変換。
5. 3.0 でテスト。
6. エラーがあれば変換前のコードを修正する。
7. release
手作業が必要なところ以外を自動化してしまえば、
保守コストが2倍掛かるなんてことにはならないはず。
移植コストは 2to3 がどの程度の変換をサポートしてるかに拠るのかな。
8割程カバー出来ればいいや、みたいな事言ってたを何処かで読んだけど。ソース失念。
0415デフォルトの名無しさん
2008/12/05(金) 12:05:31に2to3の適用範囲についての説明はあるな
その後もっとマシなものになっているのかどうかは分からんが
その辺は、要求品質にもよるだろうな
業務としてやってるようなものなら、テストだって全自動で終わりとかありえねえし
ゲームの自動テストでも書いてみるか?w
0416デフォルトの名無しさん
2008/12/05(金) 12:32:190417デフォルトの名無しさん
2008/12/05(金) 12:47:45を見ると、Sequence ObjectsからString Objectsの記述は無くなって、
Bytes ObjectsだのByte Array Objectsだのが登場している。
Unicode Objectsは残っている。
strはUnicode Objectsにマップするのだろうか。
http://docs.python.org/3.0/c-api/arg.html
を見ると、相変わらずフォーマット"s"が存在し、
「string or Unicode Objects」とか書いてある。
そしてそれが「char*に」変換する。
byteからのフォーマット指定子も追加されているが。
正直何がしたいんだか良く分からないんだが。
上っ面だけ整理して、C APIはカオスに見える。
ドキュメントが追いついていないだけか?
0418デフォルトの名無しさん
2008/12/05(金) 13:38:36テスト書かないハゲは消えろや。
0419デフォルトの名無しさん
2008/12/05(金) 15:34:22この段階では print 文でなくて print 関数を使うようにはできませんか?
future import なんとかでできたらいいなぁ、と。
いずれ python 3.0 に移行するまでのつなぎとして
今からそう書いておきたいんですが・・・
0420デフォルトの名無しさん
2008/12/05(金) 15:36:260422デフォルトの名無しさん
2008/12/05(金) 16:26:390423デフォルトの名無しさん
2008/12/05(金) 17:42:43ありがとうございました.
めでたく print("aiueo") できました.
ところで,Python でメッセージを標準エラー出力
に出す時に簡便な方法といえば何でしょうか?
やはり os.write などを使って出すのでしょうか?
print2("aiueo") のような関数は標準的にはありませんか?
自分で便利関数を作ってもその存在を忘れてしまうほど
頭が弱いので,与えられたものがあればそれを使おうと思います.
0424デフォルトの名無しさん
2008/12/05(金) 17:45:34print >>sys.stderr, ...
print(..., file=sys.stderr)
0425デフォルトの名無しさん
2008/12/05(金) 17:47:20> print >>sys.stderr, ...
これは非推奨。
0426デフォルトの名無しさん
2008/12/05(金) 18:02:020427デフォルトの名無しさん
2008/12/05(金) 19:03:20>>425 のような書き方も知りませんでした.
もう一つ質問があります.
設定ファイルであれこれ設定する必要があるのですが,
できれば UNIX/Windows で共通に使えるように
したいと思っています.こういうときホームディレクトリ
直下に .myapplication ファイルでも用意して,
その中に ConfigFile 形式や JSON 形式で設定を
書くようにすればいいのでしょうが, Windows の
場合だったらプロファイル直下かなぁ,とか,
ポータブルにするための手間は惜しみたいとか考えてしまいます.
アプリケーションの個人用の設定ファイルの扱い方,
特にその配置場所について,Python 流のお決まりの
やり方というのはあるのでしょうか?
0428デフォルトの名無しさん
2008/12/05(金) 19:14:45移行してもいいんだがな
0429デフォルトの名無しさん
2008/12/05(金) 19:58:03os.path.expanduser()
0430デフォルトの名無しさん
2008/12/05(金) 20:23:29自分で入れればいい
0431デフォルトの名無しさん
2008/12/05(金) 20:32:070432デフォルトの名無しさん
2008/12/05(金) 20:39:22Pitおすすめ
http://d.hatena.ne.jp/a2c/20081016/1224097042
0433デフォルトの名無しさん
2008/12/05(金) 23:56:09そういうものなんですかね?
def maker(a):
# return lambda(c): a + c
def f(c):
a = a + c
return a
return f
f = maker(3)
print f(4)
左辺値のaを別の変数にすれば動きます。
0434デフォルトの名無しさん
2008/12/06(土) 00:07:220435デフォルトの名無しさん
2008/12/06(土) 00:08:360436デフォルトの名無しさん
2008/12/06(土) 00:09:04http://docs.python.org/reference/executionmodel.html#naming-and-binding
If a name binding operation occurs anywhere within a code block,
all uses of the name within the block are treated as references to
the current block.
This can lead to errors when a name is used within a block before it is bound.
This rule is subtle. Python lacks declarations and
allows name binding operations to occur anywhere within a code block.
The local variables of a code block can be determined
by scanning the entire text of the block for name binding operations.
と書いてあるので、仕様だろう
結局のところletのような構文は無いのだし、それがPythonなのだと思うしかない
俺は最近はletだのvarだのmyだのが無いことの不便さのほうを感じることが
多いな
0437デフォルトの名無しさん
2008/12/06(土) 00:19:560438デフォルトの名無しさん
2008/12/06(土) 00:30:470439デフォルトの名無しさん
2008/12/06(土) 00:32:02パターンマッチもないよ
ifで頑張れ
0440436
2008/12/06(土) 01:38:31>>433は左辺も右辺も自由変数を参照したいわけだな?
ならPython3ではnonlocal文でいいはずだが、
それ以前のPythonでは、自由変数に代入することはできない。
global変数にはglobal文を使うことで代入することはできるが
global変数を使うこと自体稀だろう。
Schemeなどのlet文では左辺がローカルな束縛で右辺が自由変数という
ケースも良く出てくるが、それもPythonではできない。
できない理由は>>436の引用に説明されている通り。
いずれも変数宣言を持たないことによる帰結だな。
0441デフォルトの名無しさん
2008/12/06(土) 01:41:19まあいいか
0442デフォルトの名無しさん
2008/12/06(土) 01:44:19viewってなんだよviewって・・・
0443デフォルトの名無しさん
2008/12/06(土) 01:54:06ありがとうございます!
エラーもはいてくれるし、ローカル変数を使うつもりが初期化を忘れて
勝手にネームバインディングされるよりはわかりやすくていいのかな。
0444デフォルトの名無しさん
2008/12/06(土) 01:56:51本当はletなどで明示したほうがいい、と俺は思うんだけどね
まあ、letの3文字をタイプする手間と、それを省くことによる仕様面での制限の
トレードオフを考えたときに、Pythonは手間を省く方を選んだということだ
0445デフォルトの名無しさん
2008/12/06(土) 02:33:08def maker(a):
# return lambda(c): a + c
def f(c, a=a):
a = a + c
return a
return f
とすればいいと思うよ。
0446デフォルトの名無しさん
2008/12/06(土) 02:45:500447デフォルトの名無しさん
2008/12/06(土) 04:45:34caseが全て定数なら、辞書を使うと高速。
パターンマッチが必要なら
ttp://code.activestate.com/recipes/410692/ みたいなのを拡張して使うといい。
制御構造の為に標準構文以外の独自拡張を取るのが、
可読性を損ねるという考えもあるので、無難なのは if/elif... かな
0448デフォルトの名無しさん
2008/12/06(土) 08:40:20きっと一年後ぐらいに出ます。
0449デフォルトの名無しさん
2008/12/06(土) 10:07:05キーワードのデフォルトはpassですねわかります
0450デフォルトの名無しさん
2008/12/06(土) 11:16:12...
debug("ほげ〜")
0451デフォルトの名無しさん
2008/12/06(土) 11:38:27そうそう。対象ファイル内ではpass/return/break/continueを強要するの。だめ?
0452デフォルトの名無しさん
2008/12/06(土) 14:37:18@hoge
ってどういう意味なの
@の使い方がわからない
0453デフォルトの名無しさん
2008/12/06(土) 14:43:170454デフォルトの名無しさん
2008/12/06(土) 15:12:22素直に、インデントによるブロックを折畳表示してくれるエディタの支援を使おう。
0455デフォルトの名無しさん
2008/12/06(土) 15:45:10wwwww wwwww
wwwww wwwww
wwwww ww wwwww
wwwww www wwwww
wwwww wwwww wwwww
wwwww wwwwwww wwwww
wwwww wwwwwwww wwwww
wwwww wwww wwww wwwww
wwwww wwww wwww wwwww
wwwwwwww wwwwwwww
wwwwww wwwwww
wwww wwww
ww ww
0456デフォルトの名無しさん
2008/12/06(土) 18:07:31b=[5,4,3,2,1]
for c,d in a,b:
print c,d
これできないのって仕様?
0457デフォルトの名無しさん
2008/12/06(土) 18:21:29for c,d in zip(a,b):
print c,d
0458デフォルトの名無しさん
2008/12/06(土) 18:22:46存在忘れてたw
ありがとう。
0459デフォルトの名無しさん
2008/12/06(土) 18:43:161. 2to3 BeautifulSoup.py | patch BeautifulSoup.py
2. 3k に sgmllib がない。2.6から持ってくる。
3. sgmllib内 warnings.warnpy3k 辺りはいらないので削除。
4. 2to3 sgmllib.py | patch sgmllib.py
5. 3.0 で import BeautifulSoup が通る。
6. re.match, re.search 等に bytes オブジェクトが渡っている所を str() で wrap
数箇所修正。(実行してエラーが出た箇所を潰していく)
7. BeautifulSoup(text).prettify() がエラーなしに動く。
8. 文字列が全て <b'font' b'size'="b'-1'"> の様になっているのに気付く。
str(b"foo") が "b'foo'" という文字列を返す為。.decode()で文字列に変換する必要がある。
9. PageElement.toEncoding, NavigableString.__str__ が bytes を返すのを .decode(encoding) で str に。
※ 他にも bytes を返すメソッドがあるかも知れない。
※ 2.x 互換の方法が解らなかった為、ここは 3.0 のコードを変更した。
10. ここまでで .prettify() 通った。diff取るの忘れたけど手作業で変更したのは5,6箇所程。
※ 2.x では decode/encode して端末へ表示してたのが、3.0では不要になった。
.prettify()の返す文字の文字コードが異なる?修正が影響したのかどうかは追ってない。
0460デフォルトの名無しさん
2008/12/06(土) 19:46:13あざす
0462デフォルトの名無しさん
2008/12/07(日) 14:27:35以下の正規表現だとre.compile()時にnothing to repeat.と怒られてしまいます。
何が不味いのでしょうか。
'(?P<REP>'
'\('
'([^()]+|(?P=REP))*'
'\)'
')'
(?P<>)の入れ子自体は問題ないようなのですが・・・
0463デフォルトの名無しさん
2008/12/07(日) 14:39:22import re
r = re.compile('(?P<REP>\(([^()]+|(?P=REP))*\))')
s = 'abc((de(f))gh((ijk)lmn))opq'
print r.search(s).group()
0464デフォルトの名無しさん
2008/12/07(日) 16:33:060465デフォルトの名無しさん
2008/12/07(日) 19:18:49BeautifulSoupはpure pythonという以外に何かメリットデメリットあったら教えて下さい。
HTML/XMLの操作ってあんまりやったことないので常道ってのも分からないので判断しかねて・・・
0466デフォルトの名無しさん
2008/12/07(日) 20:19:23そういう「再帰的な定義」を許していないんじゃないか?
そういう記述ができるものがあるのは知っているけど、
エラーメッセージから想像力を働かせるとPythonでは許していないような気がする。
0467デフォルトの名無しさん
2008/12/07(日) 20:20:00問題あるだろう。こうだろう
r = re.compile('(?P<REP>(\([^()]+|(?P=REP))*\))')
0468デフォルトの名無しさん
2008/12/07(日) 21:04:33やっぱりそうなんですかね。
(?P<>)の入れ子はcompileは通るのですがどうも効いていないっぽいです。
>>467
ありがとうございます。
でもバランスしません(>_<)
0469デフォルトの名無しさん
2008/12/07(日) 21:16:56入れ子の記述を仮に許しても、方針として全然ダメじゃねえの?
要は「マッチしたもの」にマッチするんだから
一般的な入れ子のカッコを処理できるわけないじゃん
0470デフォルトの名無しさん
2008/12/07(日) 22:02:13という文字をunquoteっしたいんですけども
どうすればいいですか?
0471デフォルトの名無しさん
2008/12/07(日) 22:10:22期待通りに動く処理系もあるんですよ・・・
0472デフォルトの名無しさん
2008/12/07(日) 22:33:200473デフォルトの名無しさん
2008/12/07(日) 22:45:550474デフォルトの名無しさん
2008/12/07(日) 22:48:250475デフォルトの名無しさん
2008/12/08(月) 02:13:530476デフォルトの名無しさん
2008/12/08(月) 02:15:45バックリファレンスですら
そういう意味ではPythonのは既に足は踏み外してるけど
再帰を許すほどではないな
0477デフォルトの名無しさん
2008/12/08(月) 08:46:230478デフォルトの名無しさん
2008/12/08(月) 11:40:41リファレンスみたいな豪快な拡張にポータビリティを期待するほうがダメかと。
Pythonの正規表現の仕様から、これが処理できないのはおかしいとはっきり
導出できるなら、そのようにバグとして報告すればいい話。
>>470 >>473
import urllib
urllib.unquote
0479デフォルトの名無しさん
2008/12/08(月) 12:52:22cgiをpythonで作っています。
#!/usr/local/bin/python
import cgitb,time
print "Content-Type: text/html\n\n";
t = time.strftime('%H:%M:%S')
print '<p>time is'+ t +'</p>'
この状態なら動くのですが、print関数の文字列に日本語が含まれているとcgiが動かなくなります。
これは何故でしょうか・・・?
ちなみに保存文字コードはshift-jisです。
0480デフォルトの名無しさん
2008/12/08(月) 13:05:16文字コードをUTF-8(BOM無)で保存すればいい
0481デフォルトの名無しさん
2008/12/08(月) 13:26:31http://www.python.jp/doc/release/tut/node4.html#SECTION004230000000000000000
0482479
2008/12/08(月) 13:29:380483デフォルトの名無しさん
2008/12/08(月) 13:31:30>>>douon("変態")
["変態", "編隊", "変体", "へんたい", "ヘンタイ", "hentai"]
みたいな関数を標準モジュールだけで書いていただけませんでしょうか
0484デフォルトの名無しさん
2008/12/08(月) 13:32:58ん?sjisでも「全く動作しない」はずだが……
CGIなんだから、直接pythonインタプリタで実行してみろよ
たとえコメントの中だろうが、エンコーディングを指定せずに
非ASCII文字が書かれている時点で
Pythonインタプリタにはねられるから
0485デフォルトの名無しさん
2008/12/08(月) 13:36:390486デフォルトの名無しさん
2008/12/08(月) 13:37:17migemoあたりの辞書を使うといいんじゃねえか
migemoで普通やるのの逆変換になるが
0487479
2008/12/08(月) 13:39:18参考URL有難うございます。
# -*- coding: utf-8 -*-
import time
print "Content-Type: text/html\n\n";
t = time.strftime('%H:%M:%S')
print u'<p>時間は'+ t +'</p>'
のようにエンコードを指定してもインタプリタでは動くのですが、cgiファイルとしてサーバーにアップ後は動かなくなります。
パーミッション等は合ってます。
0488デフォルトの名無しさん
2008/12/08(月) 13:42:27unicode文字列をprintに渡してるんなら、また別の問題がある。
printはunicodeを受け取ると、sys.stdout.encodingに従ってそれを
変換しようと試みるが、sys.stdout.encodingは環境次第だ。
多分asciiか何かになってんだろう
もともとpythonのstdin/stdoutのencodingはリダイレクトに弱い。
自分でエンコーディングを指定してバイト列に変換してからprintに渡せ。
0489デフォルトの名無しさん
2008/12/08(月) 13:44:22>>486
ありがとうございます
やっぱいきなりでは無理ですよね
0490489
2008/12/08(月) 13:45:480491488
2008/12/08(月) 13:46:17sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
0492デフォルトの名無しさん
2008/12/08(月) 13:50:27Python CGI
http://pc11.2ch.net/test/read.cgi/php/1163513344/
0493479
2008/12/08(月) 14:12:15ありがとうございます。
pythonライブラリのsite.setencodingの中のencoding = "ascii"という部分を"utf-8"に書き換えてみました。
が、まだ動きません・・・
>>492
すみません、検索不足でした。
気をつけます。
0494479
2008/12/08(月) 14:19:34連レスすみません。
printにバイト列としてエンコーディングを指定してから渡す、という方法で上手く表示することが出来ました。
お付き合い頂いてありがとうございました。とても助かりました。
0495デフォルトの名無しさん
2008/12/08(月) 14:39:15括弧の対応が取れたパターン(言語)というのは、
文脈自由文法(二型文法)に属します。
正規表現の扱えるのは正則文法(三型文法)なので、
それより範囲が少し狭いです。
# 範囲を越える文法を扱えるマッチャーが多いですが。
チョムスキーの定義で考えると、
どんな入れ子でも受理可能にするには、
無限の規則が必要になることがわかると思います。
(正規表現の再帰的な定義がちゃんと出来ることとほぼ同義)
http://ja.wikipedia.org/wiki/形式文法
0496デフォルトの名無しさん
2008/12/08(月) 14:42:32依頼を受けたデータ入力会社の雇われたキーパンチャーがね
0497デフォルトの名無しさん
2008/12/08(月) 19:10:220498デフォルトの名無しさん
2008/12/08(月) 20:22:40参考になった、ありがとう
思ったより手間すくないのね
0499デフォルトの名無しさん
2008/12/08(月) 20:49:32オライリーの詳説 正規表現にはPerlでバランス取れた括弧のキャプチャの例が載っていましたよ
http://www.oreilly.co.jp/books/9784873113593/
>5.2.4 括弧類の対へのマッチ
今手元に本が無いからうろ覚えですけど、Perlの独自拡張で無限の?入れ子まで対応しているとか
>>471の期待通り動く処理系ってPerlのそこそこ新しい奴じゃないですか?
他の正規表現処理系でのやり方も書いてあったような気がするので
もし詳説 正規表現が立ち読みできたり図書館で借りられる環境ならぜひ読んでみて
>>495さんの言う通り正規表現で無限の入れ子なんて普通は受理できないのですが
Perlの正規表現処理系は拡張が物凄いので正規文法の限界を思いっきり超えてます
このオライリーの本はこんな形式文法の話や正規表現処理系のNFAとDFAの違いなど
細かいけど(好きな人には)面白い話が載ってます
0500デフォルトの名無しさん
2008/12/08(月) 21:10:550501デフォルトの名無しさん
2008/12/08(月) 21:42:03ところで”オライリーの本”ってどう略すの
0502デフォルトの名無しさん
2008/12/08(月) 21:55:49表紙の動物じゃないか?
ラクダ本とか、バッタ本とかあるけど
となると正規表現はフクロウ本?
0503デフォルトの名無しさん
2008/12/08(月) 22:40:160504デフォルトの名無しさん
2008/12/09(火) 10:14:32スニペッツを使ってみようかと思ったら、標準だと何も登録されていないようですね。
geanyをお使いの方は、スニペッツはどうしていますか? 手書きでしょうか。
どこかのサイトにあればいいのですが・・・
0505デフォルトの名無しさん
2008/12/09(火) 10:26:150506デフォルトの名無しさん
2008/12/09(火) 10:51:050507デフォルトの名無しさん
2008/12/09(火) 12:31:16tupleを作りなおすしかないのでしょうか?
v=(1,2,3)
vv=(v[0],v[1]+2,v[2])
0508デフォルトの名無しさん
2008/12/09(火) 12:34:570509デフォルトの名無しさん
2008/12/09(火) 12:42:44vl=list(v)
vl[i]+=2
vv=tuple(vl)
でも更新したくなったならlistのままの方が良いんじゃないかという気はする。
0510デフォルトの名無しさん
2008/12/09(火) 14:33:52まだ不安定だよgeany
0511デフォルトの名無しさん
2008/12/09(火) 22:52:44みなさん、レスありがとうございました。
かなり勉強になりました^-^
正規表現で実現できるならプログラムの一貫性がとれてよかったのですが、
そもそも括弧を同じ数だけカウントするなんてたいしたことない処理なので
今回は正規表現を使わず対応したいと思います。
0512デフォルトの名無しさん
2008/12/09(火) 22:52:55http://www.python.org/download/releases/2.6.1/
バグフィックスなので2.6つかっている人はどうぞ〜
0513デフォルトの名無しさん
2008/12/09(火) 23:25:33そうですか。いいところかなと思っていたのですがね。
MacでPythonをサポートしたIDEは何がいいか悩みます。
0514デフォルトの名無しさん
2008/12/11(木) 00:30:34なんなのこれ
0515デフォルトの名無しさん
2008/12/11(木) 08:26:38PyScripter --python26だとimport socketでエラーが出る。
PyScripter --python25だとエラーは出ない。
また、コマンドラインからpythonを起動したときはエラーは出ない。
Python 2.5.2, 2.6.1, 3.0で確認
0516デフォルトの名無しさん
2008/12/11(木) 09:10:31IDLEの代わりってなんかある?
0517デフォルトの名無しさん
2008/12/11(木) 09:15:09例えば、どういうところが気に入らないのか教えてもらってもいい?
0518デフォルトの名無しさん
2008/12/11(木) 09:53:30で
おっぱい
と
0519デフォルトの名無しさん
2008/12/11(木) 10:13:22久しぶりに起動しようとすると、起動すらしなくなっていた。
Windows vista + PyScripter 1.9.9.2 + Python 2.6.1 (環境には 2.5.2, 3.0もインストール済)
+ RPyC 2.60 (pyscripter googlecode の downloadより)
--python25 だとエラーが出て一応起動するけど、何かするたびにエラー。終了も出来ない状態。
official の 1.7.2 に戻してみても上の現象が発生。
0520デフォルトの名無しさん
2008/12/11(木) 11:06:46pythonを組込で使うとエラーがでるみたいだな。
0521デフォルトの名無しさん
2008/12/11(木) 11:15:53http://bugs.python.org/issue4566
0522デフォルトの名無しさん
2008/12/11(木) 14:07:09>154 :デフォルトの名無しさん:2008/10/15(水) 22:41:10
> >>144
> 以下の内容を「Pyscripter.exe.manifest」としてPyscripter.exeのフォルダに置いておけばimportできるかも
>
> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
> <security>
> <requestedPrivileges>
> <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
> </requestedPrivileges>
> </security>
> </trustInfo>
> <dependency>
> <dependentAssembly>
> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></>assemblyIdentity>
> </dependentAssembly>
> </dependency>
> </assembly>
0523デフォルトの名無しさん
2008/12/11(木) 15:54:48もうコンパイラのバージョンどんどん上げるのやめてくれよ。
0524デフォルトの名無しさん
2008/12/11(木) 20:40:00VS2008使うようになってた。ちょっとショックだ。
……たぶんMinGWでもコンパイルできるのだろうけどさ。
0525デフォルトの名無しさん
2008/12/11(木) 20:45:31それはご愁傷様だが、べつにただで落とせる2008のexpressで問題はない
VC8以降のmsvcrtはSxSに格納されてmanifestを使うから、mingwは微妙かもなあ
試してみないとわからんが
0526デフォルトの名無しさん
2008/12/11(木) 23:24:31スクリプト実行時に取得するには、どうすればよいでしょうか。
0527デフォルトの名無しさん
2008/12/11(木) 23:39:33coding[:=]\s*([-\w.]+)
0528デフォルトの名無しさん
2008/12/12(金) 00:44:440529デフォルトの名無しさん
2008/12/12(金) 00:46:520530デフォルトの名無しさん
2008/12/12(金) 00:50:23さてはおまいらPEP読んだことないな。
0531デフォルトの名無しさん
2008/12/12(金) 01:12:35正規表現はキモイから使うなって書いてあったよ。
0532デフォルトの名無しさん
2008/12/12(金) 01:14:49ワンダーはモモーイから聞けって書いてあったよ。
0533デフォルトの名無しさん
2008/12/12(金) 01:26:480534デフォルトの名無しさん
2008/12/12(金) 01:40:350535デフォルトの名無しさん
2008/12/12(金) 01:41:520536デフォルトの名無しさん
2008/12/12(金) 01:45:420537デフォルトの名無しさん
2008/12/12(金) 09:21:16正規表現の次はifかよ(w
おっさんはこれだから困るよなー。
0538デフォルトの名無しさん
2008/12/12(金) 10:00:01上司にいじめられたか?
0539デフォルトの名無しさん
2008/12/12(金) 11:21:42> if文でがんばる
比較の度に文字列のスライスを生成する効率の悪いコードしか思い浮かばないけど...。
正規表現等の組込のドメイン固有言語は、利点・問題点があるので利用は適材適所。
使い所と用法を誤らなければ、便利なツールとして活用できるよ。
例えば、>>526なら、>>527の通り ワンライナーの正規表現で十分事足りる。
PEP 0263 より
> More precisely, the first or second line must match the regular
> expression "coding[:=]\s*([-\w.]+)".
re.VERBOSEオプション付きでコメント付けたり、
(?P<encoding>[-\w.]+) の様に名前を付けると、可読性の面でより親切。
>>511の用途なら、
字句解析とステートマシンを使い、扱いやすいデータ形式に変換してから処理する。
簡単なサンプル: S式のリスト表示。ttp://paste.org/index.php?id=4477
# 文字列内の()や引用符のエスケープシーケンス等も考慮したい場合は、
shlex, tokenize等のモジュールも見てみるといい。
0540デフォルトの名無しさん
2008/12/12(金) 12:50:08http://bugs.python.org/file12249/testpy.c
#include <Python.h>
int main(int argc, char **argv)
{
Py_Main(argc, argv);
}
これだけでembedできるんだ
知らなかった
というかargc arcvには何いれたらいいんだ
0541デフォルトの名無しさん
2008/12/12(金) 12:52:15Makefile
いらないんじゃないかと思うこともあるけど
やっぱりmakeは使ってしまう
0542デフォルトの名無しさん
2008/12/12(金) 13:39:180543デフォルトの名無しさん
2008/12/12(金) 14:11:350544デフォルトの名無しさん
2008/12/12(金) 17:09:180545デフォルトの名無しさん
2008/12/12(金) 19:20:09urlsafe_b64encode
(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_)
で表記すると
BJlgLS
であってますか?
0546デフォルトの名無しさん
2008/12/12(金) 19:26:25MTIzNDU2Nzg5MA==
0547デフォルトの名無しさん
2008/12/12(金) 19:31:53499602d2
0100 1001 1001 0110 0000 0010 1101 0010 (499602d2)
01 001001 100101 100000 001011 010010 (BJlgLS)
後ろから詰めるとそうなるけど
base64って先頭から6bitづつ区切るだろ
010010 011001 011000 000010 110100 10
じゃないのかな
っつーかそもそも1234567890を何bitでとるのかによって変わるんじゃね?
0548デフォルトの名無しさん
2008/12/12(金) 19:35:17print format(1234567890, 64)
0549デフォルトの名無しさん
2008/12/14(日) 03:08:26Python2.6のbuiltinsのformat?
数値のspecは文字列で指定するみたいだけど。PEP3101
組み込み関数では、int(str,base)でもn進数変換できるけど、
_PyInt_Formatは2..36進数までしかサポートしてない。
0550デフォルトの名無しさん
2008/12/14(日) 03:42:03戻り値が渡ってないので。return Py_Main(argc, argv);
引数は python -h 参照。
0551デフォルトの名無しさん
2008/12/14(日) 03:52:24逆じゃない?
0552550
2008/12/14(日) 07:03:50int(str,base) は C/APIでは PyInt_FromStringだった、これもbaseの範囲は2..36
n進数変換。CAPIには PyNumber_ToBase があったけど、
pythonから使えるのはbase=2,8,16 (bin,oct,hex) のみ。
from ctypes import py_int, py_object, pythonapi
num_to_base = pythonapi.PyNumber_ToBase
num_to_base.argtypes = [py_object, c_int]
num_to_base.restype = py_object
print(num_to_base(7, 10)) # "7#13"
print(num_to_base(128,64)) # "64#20"
値によっては変換後の文字を端末に表示する際にUnicodeEncodeErrorになることも。(python 3.0)
0553デフォルトの名無しさん
2008/12/16(火) 06:25:41base = len(b64c)
digs = 11 #(nにあわせて変えてね)
''.join([b64c[int(n / base ** (digs - 1 - x)) % base] for x in xrange(digs)])
0554デフォルトの名無しさん
2008/12/17(水) 02:09:540555デフォルトの名無しさん
2008/12/17(水) 04:04:200556デフォルトの名無しさん
2008/12/17(水) 06:40:253.0は変数名に漢字が使えるんですね。
0557デフォルトの名無しさん
2008/12/17(水) 13:06:52>>> class 動物:
>>> 鳴き声 = '・・・'
>>> def 鳴く(自分):
>>> print('%s:%s' % (自分.__class__.__name__, 自分.鳴き声))
>>>
>>> class 猫(動物):
>>> 鳴き声 = 'にゃー'
>>>
>>> class 熊(動物):
>>> 鳴き声 = 'クマー'
>>>
>>> 君のペット = 猫()
>>> 君のペット.鳴く()
猫:にゃー
>>> 僕のペット = 熊()
>>> 僕のペット.鳴く()
熊:クマー
0558デフォルトの名無しさん
2008/12/17(水) 13:44:08おもしれぇww
0559デフォルトの名無しさん
2008/12/17(水) 15:06:33ということなので真に受けんように
0560デフォルトの名無しさん
2008/12/17(水) 16:09:11自分用に分かり易いコード書く程度だったら問題はない。
0561デフォルトの名無しさん
2008/12/17(水) 16:51:360562デフォルトの名無しさん
2008/12/17(水) 17:20:020563デフォルトの名無しさん
2008/12/17(水) 17:22:120564デフォルトの名無しさん
2008/12/17(水) 18:36:520565デフォルトの名無しさん
2008/12/17(水) 21:23:230566デフォルトの名無しさん
2008/12/18(木) 00:36:37インデックスで走査すると遅くて使い物になりませんでした。
そこでイテレータの使用を検討したのですが
進むことはできても戻ることができません。
Cのポインタ走査のように何か高速に走査する方法はないでしょうか。
0567デフォルトの名無しさん
2008/12/18(木) 00:42:06インデクスアクセスはランダムアクセスで、オーダー的にはO(1)だ
それが遅すぎるというのであれば、Pythonでやるのが間違いであるような
仕事をさせてるんだろう
素直にC/C++使っとけ
0568デフォルトの名無しさん
2008/12/18(木) 00:42:560569デフォルトの名無しさん
2008/12/18(木) 00:52:38そだったんですか・・・
てっきりリンクリストとばっかり思ってました。
ありがとうございました!
0570デフォルトの名無しさん
2008/12/18(木) 01:38:590571デフォルトの名無しさん
2008/12/18(木) 01:40:540572デフォルトの名無しさん
2008/12/18(木) 02:21:13丁寧に説明してくれたな。次も行きたいと思う
0573デフォルトの名無しさん
2008/12/18(木) 02:21:29emacsで書いてるんですけど、visual studioのインテリセンスのようななのがほしいです。
eclipseのPydevってのしかないのかなー、できるならemacsでがんばりたいんだけど。
0574デフォルトの名無しさん
2008/12/18(木) 05:42:520575デフォルトの名無しさん
2008/12/18(木) 08:28:320576デフォルトの名無しさん
2008/12/18(木) 13:04:40pysmell
0577デフォルトの名無しさん
2008/12/18(木) 13:09:28emacsだとpycompleteぐらいしか選択肢がないと思ってたのだが,
今はpysmellというのがあるんだ.横槍だが参考になった.
0578デフォルトの名無しさん
2008/12/18(木) 14:41:380579デフォルトの名無しさん
2008/12/18(木) 14:44:30便利そうだね
http://www.emacswiki.org/AutoCompleteSources
0580デフォルトの名無しさん
2008/12/18(木) 15:01:56今書いてるからもうちょっとしたら公開するよ。
0581デフォルトの名無しさん
2008/12/18(木) 15:20:05相性がイマイチだね。
0582デフォルトの名無しさん
2008/12/18(木) 15:23:270583デフォルトの名無しさん
2008/12/18(木) 15:25:11def foo(x):
x.
までタイプしたところで補完するのは無理だわな
少なくともスコープ内で型が確定してるようなケースでないと
0584デフォルトの名無しさん
2008/12/18(木) 15:42:340585デフォルトの名無しさん
2008/12/18(木) 19:32:38型情報に限らずどんな式でも書けるようになってる。
変数の型を保障する仕組みではなく、ライブラリ等でチェックする際のヒントとして使えるだけ。
エディタ/IDEが皆に「function annotations には型を書く」と強制は出来ないので、
補完への利用は出来ないことはないけど、難しいんじゃないかな。
0586デフォルトの名無しさん
2008/12/18(木) 20:14:25最初はコマンドプロンプトで命令を表示させているだけですが、
pythonで作ったプログラムはこういったCUIの中で行われるものですか?
***.exeで立ち上げるようなプログラムを作るのは無理ですか?
Cやっとけってことでしょうか?
0587デフォルトの名無しさん
2008/12/18(木) 20:15:570588デフォルトの名無しさん
2008/12/18(木) 20:24:55GUIがやりたいってことなら該当するライブラリをあさってみるといいよ
TkinterとかwxWidgetsとか
0589デフォルトの名無しさん
2008/12/18(木) 22:16:000590デフォルトの名無しさん
2008/12/18(木) 23:06:32コマンドラインからでもウィンドウを表示できることは理解されているでしょうか?
$ python
Type "help", "copyright", "credits" or "license" for more information.
>>> import wx
>>> class MyApp(wx.App):
... def OnInit(self):
... frame = wx.Frame(None, 0, "Title")
... frame.Show(True)
... self.SetTopWindow(frame)
... return True
...
>>> app = MyApp(0)
>>> app.MainLoop() # ←ここで中身が何もないウィンドウが出る。
>>>
0591デフォルトの名無しさん
2008/12/18(木) 23:14:03ループに入るって事は中でずーっと処理が繰り返されてるんだよね。
なのに放置してたらCPU使用率は0付近をさまよう。これって不思議。
自分でforループとかwhileループ走らせれば面白いほどCPU使用率は上がるのに。
0592デフォルトの名無しさん
2008/12/18(木) 23:25:39まともにパソコン使えないだろ!
0593デフォルトの名無しさん
2008/12/18(木) 23:26:43普通はこんな感じ
while True:
次のイベントを取得する(イベントが来るまでブロック)
イベントを処理する
ビジーループではないからCPU使用率は跳ね上がらない
イベントが来なければずっと寝ているだけだ
0594デフォルトの名無しさん
2008/12/18(木) 23:31:45対話的にGUIを試したい場合、使用するツールキットによっては細工がいる
>>590の例だと、最後のMainLoop()を呼ぶまで窓は表示されず、
呼んでしまうと今度はそこでブロックしてしまい、対話環境が使えなくなるはずだ
それではせっかく対話環境からGUIを試す面白みも無いだろう
Tkの場合は、環境によるが、mainloop()関数をよばずとも
root = Tkinter.Tk()
だけでいきなり窓が出て、対話環境で引き続き色々コマンドを打ち込むことが
可能なようだ
試したところWindowsとLinuxでは大丈夫なようだが、cygwinではmainloopが
必要で、このような使い方はできないようだ
0595デフォルトの名無しさん
2008/12/18(木) 23:37:42なるほど…。となるとイベント取得ってのは、OSから呼び出す形で実現してるのか。
0596デフォルトの名無しさん
2008/12/18(木) 23:42:53ん?いや、送ってくるのはOSなりウィンドウシステムなりだが、
あくまでアプリが能動的に読み取る
pythonでraw_input()関数を呼ぶと入力待ちになって
キーボードから何か打ち込んでやると制御が戻って入力が得られるだろう
それと基本的には同じだ
0597デフォルトの名無しさん
2008/12/18(木) 23:55:31アプリ「何かキーが押されるまで待つか」
アプリ「zzZ」
OS「おい起きろ。お前宛に”A”キーが押されたぞ」
アプリ「ああ、おk。これで次の処理に進めるね」
ってイメージだけど、あってる?
0598デフォルトの名無しさん
2008/12/18(木) 23:59:16うん、そんな感じであってる
0599デフォルトの名無しさん
2008/12/18(木) 23:59:53loop「何かイベントあった?」
os「Aキー押されてるよ」
loop「おいevent起きろ」
event「イベント実行、っと」
0600デフォルトの名無しさん
2008/12/19(金) 00:00:200601デフォルトの名無しさん
2008/12/19(金) 00:03:53> loop「何かイベントあった?」
こういうポーリングはないと思ってくださって結構です。
0602デフォルトの名無しさん
2008/12/19(金) 00:06:29次の仕事を待ちかまえてない時(別の仕事をしてる時)に
別の作業が舞い込んでくることは普通にあるから、
とりあえず仕事依頼はイベントキューという名前のポストに溜め込まれる
でもまあ最初の理解としては>>597でいいと思う
0603デフォルトの名無しさん
2008/12/19(金) 00:06:41こりゃ低レベルなGUIに関する知識が必要さね。
「プログラムはなぜ動くのか」って書籍は読んだけど次は「Windowsはなぜ動くのか」辺りを読もうかね。
0604デフォルトの名無しさん
2008/12/19(金) 00:12:24もうちょっと真面目に書けば、
ウィンドウを終了した時に、
app.MainLoop()から返ってくるので、
そこでまた対話環境を利用することも可能です。
0605デフォルトの名無しさん
2008/12/19(金) 00:15:36うん、まあそうなんだけど、普通は窓を作って対話的に
ボタンをつけたり線を引いたり窓を動かしてみたりしたいわけでしょう
対話環境なんだから
ウィンドウシステムでは、窓を表示してUIを操作するには、結局誰かが
>>593のような仕事をしてやる必要がある
Tkinterの場合は、WindowsやLinuxでは自動的にバックグラウンドスレッドを
作って、そういうイベントループを回してくれるわけだ
そうでなければ、そのようなヘルパー的機構を陽で造りこむ必要があるな
0606デフォルトの名無しさん
2008/12/19(金) 00:31:35動的言語のTCL上で最初に実装された。
だからその言語の影響を受けて、組み込みのTkオブジェクトを、
コマンドで操作していく動的なAPIになった。
だからどの言語上でも対話的なGUIコンポーネント作成が得意だね。
0607デフォルトの名無しさん
2008/12/19(金) 00:36:21古臭いと言われがちだが、対話環境で遊ぶ&学習用には今なお優れた環境だと思う
IronPython出たとき対話的・動的にGUIを作成していくデモが話題になってたけど
あれぐらいはTkなら昔から出来たことだ
0608デフォルトの名無しさん
2008/12/19(金) 00:51:25会社でPython使い(私事だけ)が増えているんだよな。
言語コミュニティも穏やかでそれがいいんだろうけど。
0609デフォルトの名無しさん
2008/12/19(金) 01:17:26関数作った後、関数内に文を付け足したり編集したくなったときに、
また初めから関数を定義しなくちゃいけないから面倒なんだけど、
それに対する上手い方法ってある?
0610デフォルトの名無しさん
2008/12/19(金) 01:38:04ipython の ed コマンド
0611デフォルトの名無しさん
2008/12/19(金) 01:43:40今日の忘年会に出て切実に感じた。
0612デフォルトの名無しさん
2008/12/19(金) 01:49:050613デフォルトの名無しさん
2008/12/19(金) 01:52:17俺はEmacs使いだから、
Common Lisp用のSLIMEみたいなマイナーモードが欲しいなあ。
http://common-lisp.net/project/slime/
0614デフォルトの名無しさん
2008/12/19(金) 02:39:380615デフォルトの名無しさん
2008/12/19(金) 03:31:06今日の忘年会に出た面子だけだろ
0616デフォルトの名無しさん
2008/12/19(金) 03:43:19今日の忘年会に出て切実に感じた。
0617デフォルトの名無しさん
2008/12/19(金) 03:51:060618デフォルトの名無しさん
2008/12/19(金) 09:52:45一人忘年会を開いたんですね
0619デフォルトの名無しさん
2008/12/19(金) 10:19:580620デフォルトの名無しさん
2008/12/19(金) 10:21:170621デフォルトの名無しさん
2008/12/19(金) 10:40:500622デフォルトの名無しさん
2008/12/19(金) 10:50:22くぎゅが好きなんだ!!!
0623デフォルトの名無しさん
2008/12/19(金) 10:56:25顔なんかどうでもいい
くぎゅが好きなんだ!!!
0624デフォルトの名無しさん
2008/12/19(金) 11:55:300625デフォルトの名無しさん
2008/12/19(金) 13:06:090626デフォルトの名無しさん
2008/12/19(金) 13:52:47なんか顔を想像すると必ず柴田理恵が出てくるわ
0627デフォルトの名無しさん
2008/12/19(金) 14:22:45顔かよ。くだらん。
0628デフォルトの名無しさん
2008/12/19(金) 15:38:180629デフォルトの名無しさん
2008/12/19(金) 16:27:46釘宮 理恵(くぎのみや りえ、1979年5月30日 - )は日本を代表するツンデレ声優。また、声優界で唯一の皇族でもある。
0630デフォルトの名無しさん
2008/12/19(金) 19:53:390631デフォルトの名無しさん
2008/12/19(金) 20:08:26ものすごく長いエラーメッセージの末尾に maximum recursion depth exceeded in cmp
と出ました。
これはおそらくスタックオーバーフローのようなものだと思うのですが、python の設定か何かでもっと深い階層まで使えるようにすることはできますか?
できなければプログラムの方を変更して再帰しないようにしますが。
0632デフォルトの名無しさん
2008/12/19(金) 20:12:25再帰は、プログラム練習には使えても実用コードにはならないから。
再帰を展開する技術は身につけておいて損はない。
0633デフォルトの名無しさん
2008/12/19(金) 20:14:36Pythonの関数呼び出し階層の深さ上限はデフォで1000となっている
その値は変更できるが、あまり薦められんな
それと、Pythonは末尾再帰を最適化しない
0634デフォルトの名無しさん
2008/12/19(金) 20:20:55http://docs.python.org/library/sys.html?highlight=setrecursionlimit#sys.setrecursionlimit
0635デフォルトの名無しさん
2008/12/19(金) 21:11:160636631
2008/12/19(金) 21:28:3712分で3レスもつくなんて感激です。ありがとうございます!
互助法は再帰じゃない方も書いたことがあるので (VBでですが)、大丈夫だと思います。それでは。
0637デフォルトの名無しさん
2008/12/19(金) 22:21:030638デフォルトの名無しさん
2008/12/19(金) 22:31:220639デフォルトの名無しさん
2008/12/20(土) 00:08:15Schmeみたいにすっきりしゃっきりしたセマンティクスがある言語でないと無理。
Common Lispですら仕様では要求してないし。
0640デフォルトの名無しさん
2008/12/20(土) 02:33:460641デフォルトの名無しさん
2008/12/20(土) 04:04:51psycoを使っても末尾再帰になる。
0642デフォルトの名無しさん
2008/12/20(土) 04:15:39再帰を無理に末尾再帰にしても読みづらいことも多い。
>>639
むしろCommon Lispはループで回すのがデフォだよね。
0643デフォルトの名無しさん
2008/12/20(土) 11:38:12インターフェイスはブラウザでいいかなとか思って
import web してみた。
・・・なんて簡単にウェブアプリが書けちゃうんだ。
0644デフォルトの名無しさん
2008/12/20(土) 14:15:150645デフォルトの名無しさん
2008/12/20(土) 15:29:02来年の給料払えないや。
0646デフォルトの名無しさん
2008/12/20(土) 15:37:23とりあえず再帰をループに展開できるね。
0647デフォルトの名無しさん
2008/12/20(土) 16:09:12人件費がこんなに重たいものだなんて。
勉強会が突然中止になったりしたら、そういうことだからね>みなさん
0648デフォルトの名無しさん
2008/12/20(土) 16:14:57アクセスしたいんですが、どのパッケージが定番なんでしょうか?
adodbapi というものと adodb というものがあるみたい。
http://adodbapi.sourceforge.net/
最新版は 2.2.4 December 17, 2008
http://adodb.sourceforge.net/
最新盤は adodb-py-210 July 30, 2008
0649デフォルトの名無しさん
2008/12/20(土) 17:41:06本当にありがとうございました
0650デフォルトの名無しさん
2008/12/20(土) 19:19:490651デフォルトの名無しさん
2008/12/20(土) 20:33:59あまり詳しくないのですが
comtypesはディスパッチインタフェース、カスタムインタフェースの両方に
アクセスできて、ディスパッチイベントも捕まえられるので十分かと思います
カスタムインタフェースにアクセスできると、dir()でCOMのインタフェースを
閲覧できるので便利です
0652デフォルトの名無しさん
2008/12/21(日) 10:02:010653デフォルトの名無しさん
2008/12/21(日) 10:38:55ATL/WTLを知っているWindowsプログラマにとっては、Win32限定なら
理想的なGUI環境に見える。
ATL/WTLがWindows APIの軽量ラッパーであるのと全く同じで
vensterはctypesを使ったWindows APIの軽量ラッパーだ。
非常に軽くて小さい上に、ATL/WTLのプログラミングモデルそっくりなんだが、
ここ数年メンテされてなくて、comtypesではなく古いctypes.comを使ってるんで
そのままでは今のPythonでは使えねえ。
今日落してきて、簡単なサンプルなら動くように手を入れたが、
COMのコネクションポイント/ディスパッチインタフェース周りで嫌になって投げた。
誰かこれ引き継いでくれねえかなあ。
>今日落してきて、簡単なサンプルなら動くように手を入れたが、
>COMのコネクションポイント/ディスパッチインタフェース周りで嫌になって投げた。
>誰かこれ引き継いでくれねえかなあ。
うp器盆
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/7446.zip
venster 0.72へのパッチ
vensterのサイトからソースとってきてpatch -p0で当ててくれ
つうかcomtypesドキュメント少なすぎだろ常考
testの中のスクリプトのなかには、そっちも直さんと動かんのもあるが、さすがに
放置
0654デフォルトの名無しさん
2008/12/21(日) 10:39:22vensterのモジュール自体は大体直したつもり。
test用スクリプトのtest_browser.pyって奴は直さないと動かないし、直していない。
IEエンジンを使ったカスタムブラウザのサンプルだが、
Python側でIOleClientSiteやらIDocHostUIHandlerやらをオンザフライで
実装していて、そこをどうにかせんと動かない。
そこまでやってないIEエンジン埋め込みスクリプトがほかにもあるが、それらは
動くようにはなった。ディスパッチイベントも捕捉できてる。
0655デフォルトの名無しさん
2008/12/21(日) 10:42:26IronPythonを使えば何の苦労もなく呼び出すことができますし、
Classic PythonからはPythonwinを使えば良いという事実はあまりにも有名です。
でも、以前紹介したように、Python 2.5にはctypesモジュールが最初から
用意されています。せっかく2.5使うんだから、ctypesでCOMを呼べないかと
思ってしまいますよね。残念ながら、ctypesは最近になって、COMを呼び出す機能を
comtypesに譲ったようで、追加でこれをインストールする必要があるようですが。
モノは試しなのでやってみます。やりたいことはこんな感じです。
var ssfNETHOOD = 19
var wshell = new ActiveXObject('WScript.Shell')
var shell = new ActiveXObject('Shell.Application')
var nethood = shell.nameSpace(ssfNETHOOD).self.path
//var nethood = wshell.specialFolders('NetHood')
var link = wshell.createShortcut(nethood + '\\TEST.lnk')
link.targetPath = 'ftp://localhost/'
link.save()
このJScriptは、ネットワークコンピュータの下に「TEST」という名前で、
「ftp://localhost/」を追加します。
comtypesでも同様にできるかと思ったら以外に落とし穴がありました。
0656デフォルトの名無しさん
2008/12/21(日) 10:42:57from ctypes import cast, POINTER
from comtypes.client import CreateObject
import os
wshell = CreateObject('WScript.Shell')
shell = CreateObject('Shell.Application')
from comtypes.gen.Shell32 import Folder2, ssfNETHOOD
from comtypes.gen.IWshRuntimeLibrary import IWshShortcut
nethood = cast(shell.NameSpace(ssfNETHOOD), POINTER(Folder2)).Self.Path
#nethood = wshell.SpecialFolders('NetHood')
link = cast(wshell.CreateShortcut('%s.lnk' % os.path.join(nethood, 'TEST')),
POINTER(IWshShortcut))
link.TargetPath = 'ftp://localhost/'
link.Save()
5, 6行目でCOMオブジェクトを作るとcomtypes.genパッケージの下にそれらしい名前で
.pyと.pycが作られるので、これらを8, 9行目でインポートしています。
注意しないといけないのは、11, 13行目でやっているように、オブジェクトを
適宜明示的にダウンキャストしてやる必要があるということです。
このあたりの詳しい説明は、ここにありました。
http://aspn.activestate.com/ASPN/Mail/Message/ctypes-users/3174466
Pythonwinではこのようなキャストは必要ないので少々面倒な気がしますが、
選択肢が多くあるのは良いことです。
0657デフォルトの名無しさん
2008/12/21(日) 12:04:17そのモジュールって標準?
0658161
2008/12/21(日) 12:13:01年末の直前あたりに、僕が作成した
フレームワークの完成形を披露したいと思います。
よろしくお願いします。
0659デフォルトの名無しさん
2008/12/21(日) 12:14:00web.py だろう
0660デフォルトの名無しさん
2008/12/21(日) 12:26:410661デフォルトの名無しさん
2008/12/21(日) 12:31:31http://d.hatena.ne.jp/tokuhirom/20060225/1140867631
0662デフォルトの名無しさん
2008/12/21(日) 12:34:330663デフォルトの名無しさん
2008/12/21(日) 12:48:240664デフォルトの名無しさん
2008/12/21(日) 12:59:420665デフォルトの名無しさん
2008/12/21(日) 17:03:55pythonで自分の設計したプログラムを作成することは可能でしょうか?
(設計する技術があるかは・・・ですが)学習すれば、プログラムを作ったり
できるといいのですが。。。
0666デフォルトの名無しさん
2008/12/21(日) 17:26:32サンプル少ないからな
初心者のうちはC/C++, .NETのほうが苦労は少ないと思うよ
0667デフォルトの名無しさん
2008/12/21(日) 17:30:52はっ? .exe作るってこと? できるよ。
>>666
はっ? 初心者?
0668デフォルトの名無しさん
2008/12/21(日) 17:32:09できる。
ゆくゆくは配布したいと考えるなら、Cで作ったプログラムみたいにはいかないかもしれないけど、
そういうのは実際にプログラムを組んでから考慮すればよろし。
0669デフォルトの名無しさん
2008/12/21(日) 17:32:59出来る
でも生産的ではないし、動作も遅い
0670デフォルトの名無しさん
2008/12/21(日) 17:39:14Cはバイナリ配布ならともかくソース晒すこと考えるとライブラリやらコンパイラやらプラットフォームやら依存性の解決がめんどくさすぎる
実行環境がそのままデバッグ環境になるのはかなり大きいと思うし
0671デフォルトの名無しさん
2008/12/21(日) 17:47:18Pythonは第三者の作ったライブラリを用いたアプリを配布する場合、
一緒くたにするならライセンスに気を配らなくちゃいけないし、
「別途ライブラリをインスコしてくれ」と、自分の書いたプログラムだけを配布する形だと、
導入する敷居が高くなって万人に使ってもらえなくなる。
0672デフォルトの名無しさん
2008/12/21(日) 17:51:26質問から言って、念頭においてるのはLinux系のオープンソースではなくて
Windowsの「フリーソフト」なんだろうから
別にM4マクロを駆使してautoconfだのautomakeだのを記述したり
山ほど#ifdefを記述したりといったことを考えなくてもいいんじゃないの
WindowsのGUIアプリを簡単にデッチ上げられるかどうかのほうが重要
0673デフォルトの名無しさん
2008/12/21(日) 17:55:240674デフォルトの名無しさん
2008/12/21(日) 17:59:47楽かどうかの話だろ
WindowsのAPIはC/C++の形で提供されているので、Windowsの機能にアクセスするには
出来合いのラッパーライブラリ(巨大か、一部分しかサポートしていない)を
使うか、ctypesを使うか(C/C++のようにヘッダの#includeはできないので、
自分でシステムの型や定数を定義する必要がある)か、
自分でC/C++拡張を書くかという話になる
0675デフォルトの名無しさん
2008/12/21(日) 18:26:520676デフォルトの名無しさん
2008/12/21(日) 18:36:480677デフォルトの名無しさん
2008/12/21(日) 19:16:370678デフォルトの名無しさん
2008/12/21(日) 19:24:470679デフォルトの名無しさん
2008/12/21(日) 19:41:43昔はHTMLからPythonを呼べたけど、今はどうか知らない。
0680デフォルトの名無しさん
2008/12/21(日) 20:53:480681デフォルトの名無しさん
2008/12/21(日) 20:59:080682デフォルトの名無しさん
2008/12/21(日) 21:40:51> ネットにあるようなフリーソフトはCなどで書かれてると思いますが
思うな。
そこから始めろ。
0683デフォルトの名無しさん
2008/12/21(日) 22:52:46exe化はPy2Exeが有名
Python製作って内骨格とか普通にあるじゃん
0684デフォルトの名無しさん
2008/12/21(日) 22:56:35import urllib
f = urllib.urlopen("http://www.google.co.jp/")
print(f.read())
これだけのコードが動きません
AttributeError: 'module' object has no attribute 'urlopen'
import の時点で失敗しているようです。なぜでしょうか? どのようにすれば解決できるでしょうか?
0685デフォルトの名無しさん
2008/12/21(日) 23:07:43urllib.pyってファイル名にしているから、
あるいはそういうファイルが他にあるから。
0686デフォルトの名無しさん
2008/12/21(日) 23:09:48import urllib
print urllib.__file__
0687687
2008/12/21(日) 23:22:20心当たりはないです
>>686
以下のエラーになります:
File "test.py", line 2
print urllib.__file__
SyntaxError: invalid syntax
0688687 (=684)
2008/12/21(日) 23:23:58print(urllib.__file__)
としたら
C:\python30\lib\urllib\__init__.py
が出力されました
0689デフォルトの名無しさん
2008/12/21(日) 23:30:32# Python 3.0
import urllib.request
f = urllib.request.urlopen("http://www.google.co.jp/")
print(f.read())
0690デフォルトの名無しさん
2008/12/22(月) 00:34:090691デフォルトの名無しさん
2008/12/22(月) 01:48:500692687 (=684)
2008/12/22(月) 08:11:05>>689 で成功しました。ありがとうございます。
0693687 (=684)
2008/12/22(月) 17:29:02複数のVerのPythonを共存させることはできますか? (普通にインストールすればおk?
0694デフォルトの名無しさん
2008/12/22(月) 17:44:49自分のPCに入れたいという話か?
俺は複数のバージョンを入れているよ
ただし、ActivePythonをインスコするとレジストリエントリが作られ、
サードのライブラリをインストーラパッケージで入れたりするときに
それが参照される
つまり、レジストリに設定されているPythonが正と見なされることになる
全部自分でsetup.pyでビルド&インストールでするんなら何も問題ないけどな
0695デフォルトの名無しさん
2008/12/22(月) 18:19:07レンタルサーバのPythonがVer2.5.1でした><
レンタルサーバのPythonがVer2.5.1でした><
0696デフォルトの名無しさん
2008/12/22(月) 18:20:190697デフォルトの名無しさん
2008/12/22(月) 18:43:13全部自分でsetup.pyでビルド&インストールでするんなら
何も問題ないとまでは言えないけど比較的安全
yumが動かなくなったのでアカウント事にpath変えてる
0698デフォルトの名無しさん
2008/12/22(月) 19:33:270699665
2008/12/22(月) 21:58:05色々と考え方はあると思いますが、exeが作成可能ということですね。
勉強してみます。本当にありがとうございました。
0700687 (=684)
2008/12/22(月) 22:06:19何か問題が起きそうになったらまた質問させていただきますね。
0701デフォルトの名無しさん
2008/12/23(火) 01:15:24悪いことは言わないから、 2.y 系を使いな。
まだ 3.y 系は一般人向けじゃない。
0702デフォルトの名無しさん
2008/12/23(火) 02:25:230703デフォルトの名無しさん
2008/12/23(火) 02:51:51global"s"って何よ
typoってこいつのせいで2日潰した
0704デフォルトの名無しさん
2008/12/23(火) 03:30:220705デフォルトの名無しさん
2008/12/23(火) 12:37:570706デフォルトの名無しさん
2008/12/23(火) 15:56:120707デフォルトの名無しさん
2008/12/23(火) 17:13:570708デフォルトの名無しさん
2008/12/23(火) 18:07:54もしいれば、具体的なモデルを教えてください
0709デフォルトの名無しさん
2008/12/23(火) 19:22:06洋書ですよ
0710デフォルトの名無しさん
2008/12/23(火) 19:25:57普段から洋書読んでれば洋書の話だってわかるだろうに。
0711デフォルトの名無しさん
2008/12/23(火) 19:58:030712デフォルトの名無しさん
2008/12/23(火) 21:01:570713デフォルトの名無しさん
2008/12/23(火) 21:06:200714デフォルトの名無しさん
2008/12/23(火) 22:37:07パイソンだったのね
0715デフォルトの名無しさん
2008/12/23(火) 22:44:550716デフォルトの名無しさん
2008/12/23(火) 22:46:300717デフォルトの名無しさん
2008/12/23(火) 22:52:35お前を楽しませる為に生命活動を行ってるわけじゃないし。
0718デフォルトの名無しさん
2008/12/23(火) 23:02:450719デフォルトの名無しさん
2008/12/23(火) 23:04:170720デフォルトの名無しさん
2008/12/23(火) 23:10:343000円ポッキリで出そうぜ
0721デフォルトの名無しさん
2008/12/23(火) 23:15:14どのバージョンがお勧めなんだい?
2.6.x?
0722デフォルトの名無しさん
2008/12/23(火) 23:25:260723デフォルトの名無しさん
2008/12/23(火) 23:32:482.6.xやって、3.xを予習くらいでいいんじゃない
0724デフォルトの名無しさん
2008/12/23(火) 23:36:190725デフォルトの名無しさん
2008/12/23(火) 23:40:47新し物好きなら迷わず3選べ!(ネットやら本のコードが2系統だからちょっと手間だが)
0726161
2008/12/23(火) 23:41:100727デフォルトの名無しさん
2008/12/23(火) 23:41:27ありがとん
あと、オススメの本てあるだろうか?
和書はあんまいいのないのかな?
洋書でもいいんだけど、和書の方がぱっと見でキーワードとか目に止まるからさ
翻訳本は嫌だけど。
0728デフォルトの名無しさん
2008/12/23(火) 23:43:160729デフォルトの名無しさん
2008/12/24(水) 00:23:40python.orgの翻訳ドキュメントがお勧め。python.jpにある。
ただのドキュメントがいいから、普及している割に本が少ない。
0730デフォルトの名無しさん
2008/12/24(水) 00:36:34そうなのか。公式のドキュメントがいいってのはいいね
バージョンは結局自分で触ってみないと善し悪しがわかりそうにないな
てきとーにいじってみてから考えるとしますわ
0731デフォルトの名無しさん
2008/12/24(水) 01:10:48jp独自ドキュメントじゃなくて、本家ドキュメント読んでねw
2.5は翻訳完了してるから。
0732デフォルトの名無しさん
2008/12/24(水) 01:11:520733デフォルトの名無しさん
2008/12/24(水) 01:12:12http://www.python.jp/Zope/links/python_documents/
0734デフォルトの名無しさん
2008/12/24(水) 01:12:270735デフォルトの名無しさん
2008/12/24(水) 01:14:01Twistedしかない?
0736デフォルトの名無しさん
2008/12/24(水) 01:21:54raw socketをそのまんま使う
0737デフォルトの名無しさん
2008/12/24(水) 01:29:14そこらへんのことを学ぶたべの書籍ってないでしょうか?
0738デフォルトの名無しさん
2008/12/24(水) 01:42:44http://www.amazon.co.jp/dp/4894712059/
WinSock2プログラミング−Windows Sockets APIによるネットワークプログラミングのすべて
http://www.amazon.co.jp/dp/4797330449/
C言語だけど、この辺知らないでプログラム書くのは無謀。
詳解TCP/IP〈Vol.1〉プロトコル
http://www.amazon.co.jp/dp/4894713209/
0739デフォルトの名無しさん
2008/12/24(水) 02:41:252.5.3 短命杉w
0740デフォルトの名無しさん
2008/12/24(水) 03:07:03Python 2.5.4 released.
2.5.3 短命杉w
0741デフォルトの名無しさん
2008/12/24(水) 03:59:11739 :デフォルトの名無しさん [↓] :2008/12/24(水) 02:41:25
Python 2.5.4 released.
2.5.3 短命杉w
0742デフォルトの名無しさん
2008/12/24(水) 04:42:19class foo(object):
__slots__ = ['hoge', 'fuga']
def __init__(self):
self.hoge = 1
self.fuga = 2
ここに新たに'piyo'というメンバを追加したくなったときに、__slots__と__init__の2箇所を書き直さなければならないのは少し面倒な気もします。
もっと簡単に書けませんかね?
そもそもこういうことをpythonに求めてはいけないとか?
0743デフォルトの名無しさん
2008/12/24(水) 06:23:03Library reference読んで再認識したよ。
0744デフォルトの名無しさん
2008/12/24(水) 10:07:22>そもそもこういうことをpythonに求めてはいけないとか?
メタクラスでも使って自己解決しろ。
0745デフォルトの名無しさん
2008/12/24(水) 11:04:00http://gihyo.jp/dev/clip/01/orangenews/vol48/0001
>一般的に,並行処理を行うにはスレッドを用いますが,Pythonは
>GIL(Global Interpreter Lock)という1プロセスごとにロックを持
>つ機構を採用しているため同時に1つしかスレッドを実行できません。
0746デフォルトの名無しさん
2008/12/24(水) 11:17:14よい子は惑わされちゃダメだよ。
0747デフォルトの名無しさん
2008/12/24(水) 11:19:33SMP で並列処理してパフォーマンスを書くという話の
マルチスレッドとを用語上きちんと分けろってこと?
一般用語はどうなってるの?
0748デフォルトの名無しさん
2008/12/24(水) 11:29:21PythonにはGILがあるからマルチスレッドでは並列計算が出来なかった
(I/Oとかは外出し出来たけど)
→multiprocessingならそんな問題が無くてウマー
という提灯記事じゃないのか?
0749デフォルトの名無しさん
2008/12/24(水) 11:32:51Pythonと並列に実行できるけどな。
0750デフォルトの名無しさん
2008/12/24(水) 11:34:23触らないんなら
そら何でもありだわな
0751デフォルトの名無しさん
2008/12/24(水) 11:44:510752デフォルトの名無しさん
2008/12/24(水) 15:05:56クックブックは、今から買ってこようと思うんだけど
初めてのPythonとクックブックがあれば、
本家サイトの英語版でお茶を濁せるもんですか?
正規表現関連とメール関連がやりたいです
0753デフォルトの名無しさん
2008/12/24(水) 16:06:430754デフォルトの名無しさん
2008/12/24(水) 16:23:31翻訳本はどれもクソだよ。
0755デフォルトの名無しさん
2008/12/24(水) 16:35:103月前に出版されたbashのクックブックも買ってきてしまった
Pythonクィックリファレンスもチェックしてきたけど
プリントアウトを代行しましたみたいな本だね
もっと詳しいことが載っているのかと思っていた
くわしく使い方を知りたかったら、ソースを読めって話なのか
>>754
英語を楽しんでいる時間は、ないんよ
3.xに完全移行したら、そのときは原書を読もうかな
0756デフォルトの名無しさん
2008/12/24(水) 16:55:310757デフォルトの名無しさん
2008/12/24(水) 17:01:20>プリントアウトを代行しましたみたいな本
おまえそれは翻訳者に失礼だわ。
離婚書けてまで翻訳したらしいぞ(ww
0758デフォルトの名無しさん
2008/12/24(水) 17:40:180759デフォルトの名無しさん
2008/12/24(水) 17:45:170760デフォルトの名無しさん
2008/12/24(水) 23:52:33そこら辺は知ってるけど
Pythonで簡単にやる方法を探してる
0761デフォルトの名無しさん
2008/12/25(木) 00:03:280762デフォルトの名無しさん
2008/12/25(木) 00:06:28知ってるのなら>>759より簡単な計測方法って
具体的にどんなものをイメージしているのか教えてくれ。
timeとか?w
0763デフォルトの名無しさん
2008/12/25(木) 00:07:28Cでならできるけど
Pythonでのサンプルを見たい
0764デフォルトの名無しさん
2008/12/25(木) 00:08:17Pythonでのサンプルなんていらないだろ
0765デフォルトの名無しさん
2008/12/25(木) 00:08:53多分勘違い
計測方法を聞いてるのは俺じゃない
俺は生パケットのPythonでの扱いを聞いた方
0766デフォルトの名無しさん
2008/12/25(木) 00:09:36スクリプト言語でやることが必須
0767デフォルトの名無しさん
2008/12/25(木) 00:09:55正直心の底からすまんかった
0768デフォルトの名無しさん
2008/12/25(木) 00:13:33BeutifulSoupにxmlをパースさせる処理が約11秒から約9.5秒になった。
0769デフォルトの名無しさん
2008/12/25(木) 00:17:41落とすだけ落としたけどインスコしないで正解だったわ
0770デフォルトの名無しさん
2008/12/25(木) 00:18:14まずこれ。http://www.python.jp/doc/nightly/lib/socket-example.html
あとは httplib.py とか SocketServer.py とかそのあたりの標準ライブラリの
コードを読むのがオヌヌメ。
0771デフォルトの名無しさん
2008/12/25(木) 00:22:45チュートリアルぐらい読め
0772デフォルトの名無しさん
2008/12/25(木) 00:23:50raw socketの話をしてんじゃないのか?
なんか全然勘違いしてると思うぞ質問者の意図を
0773デフォルトの名無しさん
2008/12/25(木) 00:30:04TCPより下の部分はOSの領分だから、普通は raw socket といえばTCP/UDB/Unix Domain
なんだよ。
ていうか、IP層には socket の概念ないし。 raw packet なら IP Packet か Ether Packet かも
しんないけどさ。
0774デフォルトの名無しさん
2008/12/25(木) 00:37:27いやフツーraw socketつったらSOCK_RAWのことだと俺は思っていたが……
まあraw socketって言葉遣いが悪かったんならそれは謝る、質問者は
>>735でraw packetと言っていたからね
0775デフォルトの名無しさん
2008/12/25(木) 00:53:45ありがとう
ただ、そこのサイトの例はちょっと上位レベルな感じだな
TCPヘッダのSEQナンバー、ACKナンバーとか制御フラグとか
いじるのが一番の目的なので
SocketServer.pyとかはそんな感じなのかな?
0776デフォルトの名無しさん
2008/12/25(木) 01:08:10> SocketServer.pyとかはそんな感じなのかな?
いや全然そんなことは無いので安心汁
0777773
2008/12/25(木) 01:24:36いや、生パケットとか生ソケットって言葉から、 SOCK_RAW 連想できんかった。すまん。
一般用語としては、「生」っていう用語はあるレイヤに着目したひとつ下のレイヤの事で、
IPの下にはEther当のネットワーク層があるから、生パケットって言われても
TCP Packet, UDP Packet, IP Packet, Ether Packet のどれか判らんかった。
0778デフォルトの名無しさん
2008/12/25(木) 01:28:34いや、TCPの上に乗っかるアプリケーションにはTCPを流れるデータは
バイトストリームにみえるわけで、
「パケット」は意識しないし、できないでしょ
「パケット」と言われて>>770の例を出すのは発想として明らかにおかしいと思うよ
まあ結論はもう出てるからどうでもいいけどね
0779デフォルトの名無しさん
2008/12/25(木) 08:45:140780デフォルトの名無しさん
2008/12/25(木) 09:19:03サーバはカーネル組み込みのOSが多いから置き換え不能だけど。
0781デフォルトの名無しさん
2008/12/25(木) 10:06:120782デフォルトの名無しさん
2008/12/25(木) 18:19:11何か OS 依存のライブラリとか使わないとできませんか?
0783デフォルトの名無しさん
2008/12/25(木) 18:40:58できる。
ttp://mail.python.org/pipermail/python-list/2002-November/172963.html
ttp://sourceforge.net/projects/pylibnet
0784デフォルトの名無しさん
2008/12/25(木) 19:45:38ありがとうございます!!
0785デフォルトの名無しさん
2008/12/26(金) 03:45:54あんまり関数ぽくない感じするのは気のせいなのか
副作用つかいまくってる
0786デフォルトの名無しさん
2008/12/26(金) 03:54:290787デフォルトの名無しさん
2008/12/26(金) 04:02:16> pythonが関数型言語というわりに
そんなこと誰が言ってるんだw
関数型言語から色々便利な道具は拝借してるが、単にそれだけだ。
式と文を区別してるし、参照透明性なんぞ最初から眼中にないし、
lambdaは中途半端な糞だし、関数型的なリストは持たないし、
カリー化もパターンマッチも代数データ型もないし、
末尾再帰は最適化しないし、畳み込みは3.0からは格下げだ。
ある意味Guidoの好みは時代に逆行してるな。関数型を嫌ってるんだから。
0788デフォルトの名無しさん
2008/12/26(金) 06:12:360789デフォルトの名無しさん
2008/12/26(金) 06:54:27Guidoの考えとは相性良くないんだろう
書きにくくはないけど読みやすくはない
0790デフォルトの名無しさん
2008/12/26(金) 14:27:48EnumWindows は引数に callback 関数を指定しないといけないので
python 側の関数を callback してもらいたいと思います
具体的な書き方が分からないのでどなたか教えてください
0791デフォルトの名無しさん
2008/12/26(金) 15:09:33from ctypes import *
from ctypes.wintypes import *
EnumWindows = windll.user32.EnumWindows
EnumWindows.argtypes = [c_void_p, c_int]
EnumWindows.restypes = c_int
EnumWindowsCallback = CFUNCTYPE(c_int, c_int, c_int)
GetWindowText = windll.user32.GetWindowTextA
GetWindowText.argtypes = [c_int, c_char_p, c_int]
GetWindowText.restypes = c_int
def pyEnumWindowsCallback(hwnd, lp):
buf = create_string_buffer('\000' * 1024)
GetWindowText(hwnd, buf, 1024)
if len(buf) > 0:
if buf.value != '':
print buf.value
return True
EnumWindows(EnumWindowsCallback(pyEnumWindowsCallback), 0)
0792デフォルトの名無しさん
2008/12/26(金) 15:16:260793デフォルトの名無しさん
2008/12/26(金) 15:18:51まー関数型が好きな人は「パターンマッチとカリー化使ってプログラムできる俺かっけえw」
とかニヤニヤしてればいいんじゃね。
高度に関数型の言語は、手続き型と比べてアルゴリズムの記述とかパフォーマンスチューニ
ングのノウハウの蓄積と普及がまだまだという印象を受ける。みんながもっと関数型を使う
ようになればそういう動きが活発になるんだろうけど。
それと、SmallTalkとかHaskellみたいに一つのプログラミングパラダイムのみをサポートす
る言語は、特定の用途にはとても強いが、逆に苦手なプログラミングのタイプにはさっぱり、
ってのが多い気がしないか。
その点、いろんなとこから良いとこ取りしてるPythonは柔軟な対応ができて良いと思うのだけれど。
0794デフォルトの名無しさん
2008/12/26(金) 15:19:05先を越されてしまったようだが……
コールバックとしては、↓のようにクラスのメソッドも普通に使えるよ。
import ctypes
BOOL = ctypes.c_int
HWND = ctypes.c_ulong
LPARAM = ctypes.c_ulong
EnumWindowsProc = ctypes.WINFUNCTYPE(BOOL, HWND, LPARAM)
user32 = ctypes.windll.user32
class Foo(object):
def __init__(self):
self.windows = []
def MyEnumWindowsProc(self, hwnd, lparam):
self.windows.append(hwnd)
return 1
def __call__(self):
user32.EnumWindows(EnumWindowsProc(self.MyEnumWindowsProc), 0)
return self.windows
for hwnd in Foo()(): print "%08X" % hwnd
0795デフォルトの名無しさん
2008/12/26(金) 15:33:10Pythonは関数型言語じゃありませんよということを説明しただけだよ
Pythonに関数型言語になって欲しいとは一言も言ってない
マルチパラダイム言語の中で考えれば、Scalaあたりに比べれば
言語の記述力自体は別に平凡な部類でしょ、Pythonは
0796デフォルトの名無しさん
2008/12/26(金) 15:45:25http://www.shido.info/py/
ython と Ruby は実はほとんど同じで、むきになるほどの差はないと思います。 (ただ、Python は Haskell などの最近の関数型言語の影響が強く見られ、 一方、Ruby は Smalltalk や Eiffel などのオブジェクト指向言語と Lisp の影響が見られます。)
0797デフォルトの名無しさん
2008/12/26(金) 15:49:34ttp://d.hatena.ne.jp/odz/20061119/1163971267
で叩かれてたサイトだな
0798デフォルトの名無しさん
2008/12/26(金) 15:54:24せっかく有用な比較してるのに妙な叩きするなよ
zopeとダンジョの比較情報探すのもかなり苦労したんだから
0799デフォルトの名無しさん
2008/12/26(金) 15:59:59Pythonでシークエンス型は参照渡しで他は値渡しって記述は俺も
ひどいと思ったけど
大嘘じゃん
0800デフォルトの名無しさん
2008/12/26(金) 16:05:050801デフォルトの名無しさん
2008/12/26(金) 17:18:57お前相当アホだろ?
0802デフォルトの名無しさん
2008/12/26(金) 17:22:40ジェネレータを通常のリストに変換する簡潔な方法は無いでしょうか?
ジェネレータが逐次返してくる値を全部まとめたリストを得たいのです。
0803デフォルトの名無しさん
2008/12/26(金) 17:40:37[ e for e in G ]
0804デフォルトの名無しさん
2008/12/26(金) 17:40:420805デフォルトの名無しさん
2008/12/26(金) 17:54:45おお、こんなクラスが。ありがとうございました。
> Help on class list in module __builtin__:
>
> class list(object)
> | list() -> new list
> | list(sequence) -> new list initialized from sequence's items
>>803
リスト内包表記もかなり簡潔ですね。
0806デフォルトの名無しさん
2008/12/26(金) 17:56:49早速ありがとうございます!!
でも実行すると最後にエラー出てました
EnumWindowsCallback = CFUNCTYPE(c_int, c_int, c_int)
↓
EnumWindowsCallback = WINFUNCTYPE(c_int, c_int, c_int)
でエラー出なくなりました
>>794
きれいなコードですね
ありがとうございました!!
0807デフォルトの名無しさん
2008/12/26(金) 18:21:56駄本の著者だな
0808デフォルトの名無しさん
2008/12/26(金) 18:54:210809デフォルトの名無しさん
2008/12/26(金) 19:05:47続編は内容的にガッカリらしい
0810デフォルトの名無しさん
2008/12/26(金) 21:15:320811デフォルトの名無しさん
2008/12/26(金) 21:27:53あのタイトルでも許せたんだけどな。
0812デフォルトの名無しさん
2008/12/27(土) 05:52:00次々返すようなジェネレータって標準モジュール内にないですかね?
itertools 内を見回しても見当たらないんですけど・・・
結構使う機能なので、使うたびにジェネレータ定義するの面倒だし、
この機能だけのためにモジュール定義するのとかも面倒だし、
標準モジュール内であると楽なんですが・・・
0813デフォルトの名無しさん
2008/12/27(土) 06:03:340814デフォルトの名無しさん
2008/12/27(土) 08:06:330815デフォルトの名無しさん
2008/12/27(土) 10:03:05def pair(iterable, count):
"""
>>> list(pair(range(10), 3))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9,)]
"""
iterable = iter(iterable)
stop = False
while not stop:
y = ()
try:
for i in range(count):
y += (iterable.next(), )
except StopIteration:
stop = True
if y: yield y
0816デフォルトの名無しさん
2008/12/27(土) 10:46:00> この機能だけのためにモジュール定義するのとかも面倒だし、
Pythonのモジュール作るのは別に面倒じゃないと思うんだが……
つーかPythonのスクリプトって特別な呪文を唱えずとも全部モジュールとして
使えるわけだし、せいぜい既存のモジュールとファイル名がかぶらないようにだけ
注意しとけばいい
PYTHONPATH, PYTHONSTARTUP, sitecustomize.pyなどの手段で
sys.pathに自分用スクリプトディレクトリを加えておくといいぞ
Pythonみたいにモジュールが使いやすい言語でコードの再利用を考えないのは損だ
0817デフォルトの名無しさん
2008/12/27(土) 11:47:56分かりました。
myitertools.py みたいなのを作ってやってみようと思います。
0818デフォルトの名無しさん
2008/12/27(土) 11:57:00def pair(iterable, n):
return izip(*[iter(iterable)]*n)
0819デフォルトの名無しさん
2008/12/27(土) 11:58:45+= みたいなのはなしかと思い込んでた…
0820デフォルトの名無しさん
2008/12/27(土) 12:25:320821デフォルトの名無しさん
2008/12/27(土) 12:26:350822デフォルトの名無しさん
2008/12/27(土) 12:27:53__iadd__()がある場合は__iadd__()で処理される
無い場合は、__add()__を用いて処理される
immutableの場合は当然__iadd__()なんてものはないから
普通に__add()__を用いて新しいオブジェクトが作られる
0823822
2008/12/27(土) 12:28:50まあ意味分かるよね、ごめん
0824デフォルトの名無しさん
2008/12/27(土) 21:48:30[(0, 1, 2), (3, 4, 5), (6, 7, 8)]
>>> zip(*[iter(range(10))]*4)
[(0, 1, 2, 3), (4, 5, 6, 7)]
0825デフォルトの名無しさん
2008/12/27(土) 22:14:25この場合は末尾の扱いってどうすべきなのかな
0826デフォルトの名無しさん
2008/12/28(日) 00:07:52tupleで返す場合の戻り値は >>824 のように固定長にすべきじゃないかな。
また、>>815は、while ループ一巡辺り最大で
tuple += tuple で count - 1個, (iterable.next(), ) で count 個の不要な一時tupleオブジェクトが作成される。
この場合の作業変数はlistを使う方がベター。
0827デフォルトの名無しさん
2008/12/28(日) 05:15:16def padpairs(iterable, n, default=None):
x = chain(iter(iterable), repeat(default, n-1))
return pair(x, n)
# pair は >>818 の奴
>>> list(padpairs(range(10),3))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9, None, None)]
>>> list(padpairs(range(10),4))
[(0, 1, 2, 3), (4, 5, 6, 7), (8, 9, None, None)]
0828デフォルトの名無しさん
2008/12/28(日) 10:12:170829デフォルトの名無しさん
2008/12/28(日) 10:32:42GJ
0830デフォルトの名無しさん
2008/12/28(日) 15:09:272.5でもmap使えばいいだろ
0831デフォルトの名無しさん
2008/12/28(日) 15:35:12import itertools
def pair(iterable, count):
it = iter(iterable)
while 1:
a = tuple(itertools.islice(it, count))
if not a:
break
yield a
print list(pair(range(10), 3))
0832デフォルトの名無しさん
2008/12/28(日) 16:46:42>>> import itertools
>>> make_taker = lambda xs, n: lambda: tuple(itertools.islice(xs, n))
>>> iter_take = lambda xs, n: iter(make_taker(iter(xs), n), ())
>>> list(iter_take(range(10), 3))
[(0, 1, 2), (3, 4, 5), (6, 7, 8), (9,)]
0833デフォルトの名無しさん
2008/12/28(日) 19:14:360834デフォルトの名無しさん
2008/12/29(月) 00:37:20mapだとイテレータや巨大なリスト等を扱うとき困る。itertools.imapだと末尾の扱いが若干異なる。
3.0 のbuiltinのmap はitertools.imap相当なので、mapで長さの異なるリストを扱っている場合は3.0への移植の際に注意が必要。
例えば、下のコードは 2.x と 3.0 で結果が異なる。
>>> list(map(lambda *xs:xs, *[iter(range(10))]*3))
0835デフォルトの名無しさん
2008/12/29(月) 01:42:21nが大きな数になる時を考慮するなら、こっち(islice)の方が効率良さそう。
元質問からは少し外れるけど、file-likeオブジェクトや文字列の場合。
try:
from io import StringIO
except ImportError:
from StringIO import StringIO
def split_nbyte(stream, n):
return iter(lambda :stream.read(n),"")
def split_nbyte_str(s, n):
return group_nbyte(StringIO(s), n)
0836デフォルトの名無しさん
2008/12/29(月) 08:17:15ie = win32com.client.Dispatch('InternetExplorer.Application')
ie.Navigate('http://www.google.co.jp/')
ie.Visible = True
while ie.busy:
time.sleep(1)
q = ie.document.all('q')
q.Value = 'python'
btnG = ie.document.all('btnG')
btnG.click()
これでGoogleの検索が出来ることが分かったのですが
検索結果を取り出す方法が良く分かりません
どうすれば出来ますか
0837デフォルトの名無しさん
2008/12/29(月) 08:32:370838デフォルトの名無しさん
2008/12/29(月) 08:53:40urllib2 じゃいかんのか
なにがしたいのかによるが
0839デフォルトの名無しさん
2008/12/29(月) 09:06:230840デフォルトの名無しさん
2008/12/29(月) 11:12:01あきらかに日本語ドキュメントがおかしいです。存在しません。
0841デフォルトの名無しさん
2008/12/29(月) 11:14:54py3k の使用はもうちょっと待ったほうがいいって。
0842デフォルトの名無しさん
2008/12/29(月) 11:18:500843デフォルトの名無しさん
2008/12/29(月) 11:24:020844デフォルトの名無しさん
2008/12/29(月) 12:00:250845デフォルトの名無しさん
2008/12/29(月) 12:16:300846デフォルトの名無しさん
2008/12/29(月) 12:42:200847デフォルトの名無しさん
2008/12/29(月) 12:43:500848デフォルトの名無しさん
2008/12/29(月) 12:57:35メーカー製品みたいに、ドキュメントからサポート体制からリリースに合わせて
全力で整えてるわけじゃないんだから。
0849デフォルトの名無しさん
2008/12/29(月) 12:59:05英語ドキュメント読まないと。
0850デフォルトの名無しさん
2008/12/29(月) 18:34:580851デフォルトの名無しさん
2008/12/29(月) 19:15:45こんなだから日本のPythonユーザの数は少ないんじゃないでしょうか。
明らかにおかしい。
0852デフォルトの名無しさん
2008/12/29(月) 19:27:262.5.2がふさわしい。むしろ2.5.2のThe King。
0853デフォルトの名無しさん
2008/12/29(月) 19:32:18出たばかりだから枯れてないし、情報も出回ってないから、
古いの使っとけ、というアドバイスをそこまで曲解するほうがおかしい。
0854デフォルトの名無しさん
2008/12/29(月) 19:38:22でも>>851の親がイカれた奴なのは確かだ。
0855デフォルトの名無しさん
2008/12/29(月) 19:40:42相手するなよ
0856デフォルトの名無しさん
2008/12/29(月) 19:47:43からとwin32comを使い、3.0は止めとけばと言われれば僻み丸出しとか馬鹿なの?
0857デフォルトの名無しさん
2008/12/29(月) 20:31:39初心者ならドキュメントの類を隅々まで読んでいないのも
一番新しい正式リリース版をインストールするのも、別に不思議なことじゃない
>>851はいつもの釣りだろ
0858デフォルトの名無しさん
2008/12/29(月) 20:33:320859デフォルトの名無しさん
2008/12/29(月) 20:45:17っ2.5.4
0860デフォルトの名無しさん
2008/12/29(月) 22:27:450861デフォルトの名無しさん
2008/12/29(月) 22:47:04Ruby使うのやめてPythonにしたのは
各種ライブラリがそろってて
Rubyみたく自分で移植しなくてもよかったから
いまさらPy3kでライブラリ移植する必要が出てくるなら
Ruby使ってた方がまし
0862デフォルトの名無しさん
2008/12/29(月) 22:48:08そう目ゴジラ立てて怒らんとってくれ。
0863デフォルトの名無しさん
2008/12/29(月) 22:48:560864デフォルトの名無しさん
2008/12/29(月) 23:00:100865デフォルトの名無しさん
2008/12/29(月) 23:00:480866デフォルトの名無しさん
2008/12/29(月) 23:06:28ならRuby使ってればいいじゃない
誰も君に強制はせんよ
0867デフォルトの名無しさん
2008/12/29(月) 23:19:430868デフォルトの名無しさん
2008/12/29(月) 23:20:47もう3.0の仕様を隅々まで把握してんのか?
すげーな
0869デフォルトの名無しさん
2008/12/30(火) 00:12:19Pythonは、2.x の間は下位互換性を大事にバージョンアップしてきたし、
2.x -> 3.y は下位互換性失われるけど、 3.x -> 3.y はまた互換性をできるだけ
確保しながらバージョンアップしていく。
Rubyだと、1.8->1.9 でも、 1.9->2.0 でも、きっと互換性の問題出るよ。
0870デフォルトの名無しさん
2008/12/30(火) 00:28:41差分があるしね
0871デフォルトの名無しさん
2008/12/30(火) 00:34:38必要に応じてマニュアルを読む事とマニュアル全てを把握している事は別
0872デフォルトの名無しさん
2008/12/30(火) 01:06:391.8.6→1.8.7でも互換性の問題あるし、
1.8.6でも仕様を替えて互換性がなくなったこともあった。
0873デフォルトの名無しさん
2008/12/30(火) 01:35:53互換性の問題があるのかどうかすら分からないのだ。
こんな言語を仕事に使おうと思う奴は馬鹿かアホかキチガイだと思う。
0874デフォルトの名無しさん
2008/12/30(火) 01:39:47いいな
0875デフォルトの名無しさん
2008/12/30(火) 01:45:02ライブラリで移動したものも捕捉してくれる。>2to3
- from urllib2 import urlopen
+ from urllib.request import urlopen
ところで、googleでの検索なら API 使ったほうかいいんじゃないかな。
google 検索を urllib でやる場合、UserAgent 等を設定しないといけないので注意。
また、自前で検索結果をパースする場合 BeautifulSoup 使いたいなら 3.0 だとまだちょっと手間がかかる
(windowsユーザにとって)。先日のリリース で BeautifulSoup も 3.0 に対応したみたいだけど、
パッケージ内に diff や パッチを当てるto3.sh が含まれているだけなので、自分でパッチ当てないといけないみたいだし。
0876デフォルトの名無しさん
2008/12/30(火) 02:07:46Pythonとやらを試してみっか、と考えた大量の新規ユーザが
地雷にはまってるだろうことは想像に難くないが
0877デフォルトの名無しさん
2008/12/30(火) 03:03:52ライブラリが対応しているかどうかはプロジェクトのページを見れば書いて
あるし、まだほとんどのlinuxディストリビューションでは3.0は標準でイン
ストールされていない。その状況には同意しかねる。
それに公式のダウンロードページにもこう書いてある。
> Note that both Python 2.6 and 3.0 are considered stable production
> releases, but if you don't know which version to use, start with
> Python 2.6 since more existing third party software is compatible
> with Python 2 than Python 3 right now.
ここであえて3.0を選ぼうという初心者が大量にいるとは思えない。
0878デフォルトの名無しさん
2008/12/30(火) 03:11:250879デフォルトの名無しさん
2008/12/30(火) 03:28:55良く知らない言語をちょっと試すかってときに
わざわざ英文なんて読まないよな
0880デフォルトの名無しさん
2008/12/30(火) 03:34:320881デフォルトの名無しさん
2008/12/30(火) 04:10:14公式サイトの勧めているバージョンが、必ずしも全てのユーザに合ってるとは限らないってのが現状じゃない?
いくら互換性があるといっても、(2.x系)例えば windowsユーザだと、ライブラリのインストールで
ビルド済のインストーラが必要なユーザ層等もいるはずだし。
今は、若干 Python のリリースが先行してる時期だと思う。
早くどれかのバージョンに収束して欲しいという意味を込めても、
出来るだけ新しい安定版を勧めたいとこだけど...
その辺(これからどのバージョンを使うか)の認識って皆どうなんだろう?
0882デフォルトの名無しさん
2008/12/30(火) 04:16:00これからPythonを試してみる人
ライブラリ類が必要 -> 2.x
日本語ドキュメントも必要 -> 2.5
レンタルサーバで使いたい -> 2.4 が無難?
これから新規にライブラリを書く既存Pythonユーザ
2.xユーザを考慮するなら -> 2.6 ベースでコード書いて2to3
新規にアプリケーションを書く人
ライブラリが必要なら -> 2.x
過去の遺産なんていらない -> 3.0
こんなアドバイス必要ない
-> 複数バージョンをインストール済
0883デフォルトの名無しさん
2008/12/30(火) 04:39:04国語力ないですねw
0884デフォルトの名無しさん
2008/12/30(火) 05:32:48ライブラリ類が必要 -> 2.6.x
日本語ドキュメントも必要 -> 2.6.x
レンタルサーバで使いたい -> 2.6.x
これから新規にライブラリを書く既存Pythonユーザ -> 3.x
2.xユーザを考慮するなら -> 2.6.x ベースでコード書いて2to3
新規にアプリケーションを書く人 -> 3.x
ライブラリが必要なら -> 2.6.x
こんなアドバイス必要ない -> どうせ読んでないだろうから何も言いません
0885デフォルトの名無しさん
2008/12/30(火) 05:44:29ライブラリ便利だなぁ、、
0886デフォルトの名無しさん
2008/12/30(火) 06:06:170887デフォルトの名無しさん
2008/12/30(火) 07:17:39なら、本、買えよ
中央図書館で借りてこいや
0888デフォルトの名無しさん
2008/12/30(火) 07:29:43勘違いした香具師
0889デフォルトの名無しさん
2008/12/30(火) 07:39:06> 初心者なら(略)読まないよな
帰国子女初心者の僕に対する挑戦と受け取りますた
0890デフォルトの名無しさん
2008/12/30(火) 07:57:412.4/3.0 のハイブリッド版。新しい機能の追加等はなし。3つの後方非互換が在り。
1. str()や__str__の振舞が変わる。-> バイト文字を得るにはencode()/unicode文字を得るには decode() を使う。
2. SGMLParserベースからHTMLParserベースに変更。(sgmllibが標準からなくなるため)
此れにより、壊れた HTML文書 を扱えなくなる。
将来のバージョンでは、速度と壊れたHTML文書の扱いのトレードオフで、パーサを選択できるようにする予定。
3. (Python3で) 属性中のエンティティの扱いで、パース時にunicode文字に変換されることがある。
例: <a href="http://crummy.com?sacré&bleu"> -> Python 3 では é が "\xe9" に。
0891デフォルトの名無しさん
2008/12/30(火) 08:27:420892デフォルトの名無しさん
2008/12/30(火) 08:33:570893デフォルトの名無しさん
2008/12/30(火) 09:22:13Hello Python!レベル?
0894デフォルトの名無しさん
2008/12/30(火) 12:01:18帰国子士にすべき
0895デフォルトの名無しさん
2008/12/30(火) 13:11:550896デフォルトの名無しさん
2008/12/30(火) 17:20:593.0でUnicodeが云々で日本語の扱いがより簡単になった
(2系程複雑じゃない?)から3.0から始めたいなぁ、とか思ったよ。
0897デフォルトの名無しさん
2008/12/30(火) 17:29:390898デフォルトの名無しさん
2008/12/30(火) 17:37:04慣れれば原因想像つくんだけど
途方に暮れてる人も多いんじゃないかな
0899デフォルトの名無しさん
2008/12/30(火) 17:42:28Perlから来た人
COBOLから来た人
FORTRANから来た人
とかの「他言語の経験のあるPython初心者」とか
Linux?何それおいしいの?な「Linux初心者&Python初心者」とか
プログラミング言語?何それおいしいの?っていうかWindowsって何?とか
0900デフォルトの名無しさん
2008/12/30(火) 18:38:37>3.0でUnicodeが云々で日本語の扱いがより簡単になった
より簡単になった?
ご冗談はよしてください。
0901デフォルトの名無しさん
2008/12/30(火) 20:08:41でも両方にほぼ同じメソッドがあって(encode, decodeまで)
でも中身は別物なので使い分けないといけない
という状況が解消されたんだから
「より簡単になった」と言っていいと思うよ
0902デフォルトの名無しさん
2008/12/30(火) 20:47:360903デフォルトの名無しさん
2008/12/30(火) 20:59:330904デフォルトの名無しさん
2008/12/30(火) 21:08:13log: 文字列
regex: コンパイル済み正規表現
のとき
res = regex.search(log)
print res.group()
としたところ、最初にマッチしたもののみが返されるというところまではたどり着きました。
0905デフォルトの名無しさん
2008/12/30(火) 21:12:12いやー、簡単になって本当〜〜〜に良かったよね!!
0906デフォルトの名無しさん
2008/12/30(火) 21:13:59こんなエラーが出るんですけど原因はなんでしょう?
0907デフォルトの名無しさん
2008/12/30(火) 21:27:216.2. match() vs search()
match() 関数は、正規表現が先頭でマッチするかを調べるだけで、
search() は文字列の先へ進みながら、マッチする部分を探します。
この違いを覚えておくことは重要です。
match() は位置 0 でマッチした場合のみ報告してくれます。
もしマッチが位置 0 以外ならmatch() は報告しません。
>>> print re.match('super', 'superstition').span()
(0, 5)
>>> print re.match('super', 'insuperable')
None
反対に、search() は文字列を先へと探していき、最初に見付けたマッチを返します。
>>> print re.search('super', 'superstition').span()
(0, 5)
>>> print re.search('super', 'insuperable').span()
(2, 7)
ときどき、あなたは re.match() のみを使って、
正規表現の前に .* を付けておくという誘惑にかられるかも知れません。
この誘惑に打ち勝って、re.search() を使いましょう。
正規表現のコンパイラは、マッチ部分の探索を高速に行うために、
正規表現をそれなりに解析します。
そのような解析のひとつが、最初のマッチ文字が何であるか見付けることです。
たとえば Crow で始まるパターンは "C" で始まる文字列とマッチしなければいけません。
この解析により、マッチングエンジンは、文字列の中から最初の文字を素早く探索し、
見付かった場合だけ全体のマッチを試みるのです。
.* を付け加えると、この最適化ができないため、文字列の最後まで探索してから、
残りの正規表現のマッチ部分を探しに逆戻りすることが必要になるのです。
0909デフォルトの名無しさん
2008/12/30(火) 21:32:450910デフォルトの名無しさん
2008/12/30(火) 21:38:59>>> import re
>>> l = 'hagefugahogemogepiyo'
>>> r = re.compile('ge', re.I)
>>> [m for m in r.findall(l)]
['ge', 'ge', 'ge']
0911デフォルトの名無しさん
2008/12/30(火) 21:40:000912デフォルトの名無しさん
2008/12/30(火) 21:41:260913デフォルトの名無しさん
2008/12/30(火) 21:41:42findall
0914デフォルトの名無しさん
2008/12/30(火) 21:48:11>>> r = re.compile('(a)(g)', re.I)
>>> [m for m in r.findall(l)]
[('a', 'g')]
>>> [m.group(0) for m in r.finditer(l)]
['ag']
>>> [m.group(1) for m in r.finditer(l)]
['a']
>>> [m.group(2) for m in r.finditer(l)]
['g']
0915デフォルトの名無しさん
2008/12/30(火) 21:50:11[m for m in r.findall(l)]
やってることが意味不明なんだがwwwwww
0916デフォルトの名無しさん
2008/12/30(火) 21:51:42[o for o in [n for n in [m for m in r.findall(l)]]]
0917デフォルトの名無しさん
2008/12/30(火) 21:53:08>>> [m for m in r.findall(l)]
[]
>>> [m.group() for m in r.finditer(l)]
[]
>>> [m.group(0) for m in r.findall(l)]
[]
>>> [m.group(1) for m in r.finditer(l)]
[]
>>> [m.group(2) for m in r.finditer(l)]
[]
0918デフォルトの名無しさん
2008/12/30(火) 21:59:51おまえは黙ってろ
0919デフォルトの名無しさん
2008/12/30(火) 22:27:12>>> [m for m in r.findall(l)]
['ge', 'ge', 'ge']
>>> r.findall(l)
['ge', 'ge', 'ge']
0920904
2008/12/30(火) 22:38:51カッコ () がついたものだとダメなのでしょうか?
使用している正規表現は、単純化すると
r'(ho|ge){2} [hoge] (ho[ge]){4}'
のような形をしています。
0921904
2008/12/30(火) 22:45:540922904
2008/12/30(火) 22:47:420923デフォルトの名無しさん
2008/12/30(火) 23:00:38regexp = re.compile(r'(ho|ge){2} [hoge] (ho[ge]){4}')
[ m.group() for m in regexp.finditer('hoge h hoghoehoghoe') ]
でいいだろ
0924923
2008/12/30(火) 23:01:550926デフォルトの名無しさん
2008/12/31(水) 01:02:380927デフォルトの名無しさん
2008/12/31(水) 02:05:15できないらword pressと組み合わせたほうがいいかとも思いはじめてるんだが
0928デフォルトの名無しさん
2008/12/31(水) 02:13:260929デフォルトの名無しさん
2008/12/31(水) 02:56:04WSGI対応フレームワークでは、それは Middleware の役割。
どのWSGI対応フレームワークからでも、プラグインのように、
必要に応じて CacheMiddleware等 を追加してサーバを構成する事が可能。(例: Pylons + Beaker)
0930デフォルトの名無しさん
2008/12/31(水) 06:49:39Google App Engine はキャッシュ持ってますよ
有効期限も自分で設定出来る
0931デフォルトの名無しさん
2008/12/31(水) 09:52:29WSGIの世界になれると戻れない(www
0932デフォルトの名無しさん
2008/12/31(水) 10:14:12import urllib, urllib2, cookielib, time
req = urllib2.Request('http://pc11.2ch.net/test/bbs.cgi', urllib.urlencode({
'bbs' : 'tech', 'key' : '1226830195', 'time' : int(time.time()),
'submit' : u'書き込み'.encode('sjis'), 'FROM' : 'fushianasan', 'mail' : 'sage',
'MESSAGE' : u'おっぱい'.encode('sjis'), 'suka' : 'pontan'}),
{'Referer' : 'http://pc11.2ch.net/'})
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res1 = opener.open(req)
if '<!-- 2ch_X:cookie -->' in res1.read():
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
res2 = opener.open(req)
0933デフォルトの名無しさん
2008/12/31(水) 10:16:560934fushianasan
2008/12/31(水) 13:13:380935デフォルトの名無しさん
2008/12/31(水) 13:48:310936fushianasan
2008/12/31(水) 15:35:550939 【吉】
2009/01/01(木) 00:15:160942デフォルトの名無しさん
2009/01/01(木) 13:04:430943デフォルトの名無しさん
2009/01/01(木) 13:10:08例えば安藤さんのプロセッサ記事みたいなクオリティを期待しちゃいかん。
0944デフォルトの名無しさん
2009/01/01(木) 13:34:510947デフォルトの名無しさん
2009/01/01(木) 16:54:40●テキストからバイナリデータへの変換: str.encode() または str(b, encoding=...)
●バイナリデータからテキストへの変換: bytes.decode() または bytes(s, encoding=...)
これは「または」の部分が逆ですか?
0948デフォルトの名無しさん
2009/01/01(木) 17:00:170949デフォルトの名無しさん
2009/01/01(木) 17:03:32you must always explicitly convert between them.
Use str.encode() to go from str to bytes,
and bytes.decode() to go from bytes to str.
You can also use bytes(s, encoding=...)
and str(b, encoding=...), respectively.
0950デフォルトの名無しさん
2009/01/01(木) 17:05:070951デフォルトの名無しさん
2009/01/01(木) 18:09:370952デフォルトの名無しさん
2009/01/01(木) 20:09:25元日だけにおめでたいことだ。
0953デフォルトの名無しさん
2009/01/01(木) 20:28:00このページってリンク0000だけ?
何も出てこないんだけど
0954デフォルトの名無しさん
2009/01/01(木) 21:39:550955デフォルトの名無しさん
2009/01/01(木) 21:59:52剰余算なくなるってこと??
0956デフォルトの名無しさん
2009/01/01(木) 22:27:060957デフォルトの名無しさん
2009/01/01(木) 23:03:27print.format になるのか
0958デフォルトの名無しさん
2009/01/01(木) 23:38:33文字列の % が format メソッドにかわるだけで
数字の剰余はそのまま残る
0959デフォルトの名無しさん
2009/01/01(木) 23:42:27http://docs.python.org/3.0/library/stdtypes.html?highlight=obsolete#old-string-formatting-operations
0960デフォルトの名無しさん
2009/01/01(木) 23:45:34http://pc11.2ch.net/test/read.cgi/tech/1230821097/
0961デフォルトの名無しさん
2009/01/01(木) 23:46:03連載って書いてあるから、しばらくしたら追加されるんだろ
0962デフォルトの名無しさん
2009/01/02(金) 01:53:570963デフォルトの名無しさん
2009/01/02(金) 02:49:06サンキュー
0964デフォルトの名無しさん
2009/01/02(金) 03:47:28モジュール内グローバル変数で定義して import。>python流
Pythonを知らないユーザのカスタマイズを意識するなら ConfigParser, json, yaml 等
Pythonより各環境の標準に従ったほうがいいと思う。
0965デフォルトの名無しさん
2009/01/02(金) 05:15:32YAML
0966デフォルトの名無しさん
2009/01/02(金) 05:17:48[foo]
bar = baz
0967デフォルトの名無しさん
2009/01/02(金) 08:53:23>>966の方法が無難と思えるが。
ファイルにグローバルな変数(リファレンス、か)としてやると
別ディレクトリにある場合、
sys.pathに加えるとか、PYTHONPATHに設定するとか
そーいう作業が必要になる。
0968デフォルトの名無しさん
2009/01/02(金) 14:19:39おつ
0969デフォルトの名無しさん
2009/01/02(金) 18:38:380970デフォルトの名無しさん
2009/01/02(金) 19:57:590971デフォルトの名無しさん
2009/01/02(金) 20:04:060972デフォルトの名無しさん
2009/01/02(金) 22:01:130973デフォルトの名無しさん
2009/01/03(土) 01:23:310974デフォルトの名無しさん
2009/01/03(土) 09:07:300975デフォルトの名無しさん
2009/01/03(土) 12:31:590976デフォルトの名無しさん
2009/01/03(土) 22:57:54so
0977デフォルトの名無しさん
2009/01/03(土) 22:58:26chilly
0978デフォルトの名無しさん
2009/01/03(土) 23:19:140979デフォルトの名無しさん
2009/01/03(土) 23:38:270980デフォルトの名無しさん
2009/01/03(土) 23:40:11http://pc11.2ch.net/test/read.cgi/tech/1224696505/
0981デフォルトの名無しさん
2009/01/04(日) 02:52:21ご教授いただけると幸いです。
ttp://www.pythonweb.jp/tutorial/string/index5.html
の一番下のサンプルコードで(テーマはUnicode文字列(ユニコード文字列)です。)
#coding: UTF-8
print u"こんにちは\nお元気ですか?"
print u"Bananaの値段は1000円です"
とありますが、実行するとエラーになります。
SyntaxError: (unicode error) unexpected code byte
どこがおかしいでしょうか。。。。
環境はWindows XP SP3
Pytho26使用です。宜しくお願い致します。
0982デフォルトの名無しさん
2009/01/04(日) 02:53:440983デフォルトの名無しさん
2009/01/04(日) 02:54:310984981
2009/01/04(日) 03:00:440985デフォルトの名無しさん
2009/01/04(日) 03:02:230986981
2009/01/04(日) 03:04:19どのようにして変えることができますか?
0987デフォルトの名無しさん
2009/01/04(日) 03:04:54ファイルを名前をつけて保存する時に形式を指定できたはず。
0988981
2009/01/04(日) 03:06:52初歩的な質問で誠に申し訳ありませんでした。
ありがとうございました。
0989981
2009/01/04(日) 03:13:10プロンプトで色々表示させたりばかりって感じですがプログラムを作ったり(.exe)
もできるのでしょうか?(汗
0990デフォルトの名無しさん
2009/01/04(日) 03:16:44できる
とりあえず、こっちで質問しようか
それでもググカスと罵られるだろうが
くだすれPython(超初心者用) その2
ttp://pc11.2ch.net/test/read.cgi/tech/1218155094/
0991981
2009/01/04(日) 03:26:01ご親切にありがとうございます。
勉強してきます。またお願い致します。
0992デフォルトの名無しさん
2009/01/04(日) 03:26:10py2exeってのを調べて見れ
まぁその段階では使えないだろうが
0993デフォルトの名無しさん
2009/01/04(日) 03:27:360994デフォルトの名無しさん
2009/01/04(日) 03:28:170995デフォルトの名無しさん
2009/01/04(日) 03:28:58http://pc11.2ch.net/test/read.cgi/tech/1230821097/
0996デフォルトの名無しさん
2009/01/04(日) 03:29:00できるかどうかは自分の問題です(><)
0997デフォルトの名無しさん
2009/01/04(日) 03:30:570998デフォルトの名無しさん
2009/01/04(日) 03:34:290999デフォルトの名無しさん
2009/01/04(日) 03:36:13ttp://yergler.net/talks/desktopapps_uk/
1000デフォルトの名無しさん
2009/01/04(日) 03:37:23http://pc11.2ch.net/test/read.cgi/tech/1230821097/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。