Pythonのお勉強 Part36
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/01/31(日) 16:50:08http://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://pc12.2ch.net/test/read.cgi/tech/1253535109/
0002デフォルトの名無しさん
2010/01/31(日) 16:57:090003デフォルトの名無しさん
2010/01/31(日) 16:57:130004デフォルトの名無しさん
2010/01/31(日) 17:00:36>>3
SyntaxError: not a chance
0005デフォルトの名無しさん
2010/01/31(日) 17:40:21img = Image.new('RGB', (155, 70))
lines = [(10,10,35,35,10,60),(30,10,55,35,30,60),
(70,15,75,10,75,60),(95,10,135,10,105,40,95,50,105,60,145,60,145,55)]
draw = ImageDraw.Draw(img)
[draw.line(line) for line in lines]
img.show()
0006デフォルトの名無しさん
2010/01/31(日) 20:54:070007デフォルトの名無しさん
2010/02/04(木) 00:26:30func(name='myname')
と同じことを
key = 'name'
func(key='myname')
のような感じでやりたいのですが、可能でしょうか?
※keyとしてではなくnameとして渡したい
0008デフォルトの名無しさん
2010/02/04(木) 00:28:130009デフォルトの名無しさん
2010/02/04(木) 00:32:55print name
key = 'name'
func(**{key:'myname'})
0010デフォルトの名無しさん
2010/02/04(木) 00:34:340011デフォルトの名無しさん
2010/02/04(木) 11:22:570012デフォルトの名無しさん
2010/02/04(木) 11:29:55ttp://python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1
0013デフォルトの名無しさん
2010/02/04(木) 11:32:100014デフォルトの名無しさん
2010/02/04(木) 11:46:090015デフォルトの名無しさん
2010/02/04(木) 11:55:23馬鹿は具体例を見ないと納得出来ない
0016デフォルトの名無しさん
2010/02/04(木) 12:01:27ライブラリの作者が書いてるのがRubyクックブック ■ なんかよく分からない人が書いてる以下自粛
でもPythonレシピブックはあってもいいよね
0017デフォルトの名無しさん
2010/02/04(木) 12:02:04レス見る限り初めてのPythonがいいのかな
0018デフォルトの名無しさん
2010/02/04(木) 12:08:27おれまさに馬鹿だから、リファレンス見ても使い方がわからない。urllibとか。smtpとか。
ftpしたいときにはRETRとか書かなきゃいかんということを知って愕然としたとか。
0019デフォルトの名無しさん
2010/02/04(木) 12:10:44っhttp://code.activestate.com/recipes/langs/python/
0020デフォルトの名無しさん
2010/02/04(木) 12:14:170021デフォルトの名無しさん
2010/02/04(木) 12:32:470022デフォルトの名無しさん
2010/02/04(木) 12:35:350023デフォルトの名無しさん
2010/02/04(木) 19:50:27はじpyとか意味あるの?
マジレス、初心者にはみんpy以外は無駄な感じ。
0024デフォルトの名無しさん
2010/02/05(金) 00:40:42「とにかく大きな本を買っておかないと満足できません」というなら別にそれで構わないけど。
0025デフォルトの名無しさん
2010/02/05(金) 01:12:08プログラミング初心者向けじゃないもの
それだけのこと
0026デフォルトの名無しさん
2010/02/05(金) 01:35:10これはなんでSTORがダブってるんだということで直感的じゃないよなー。
0027デフォルトの名無しさん
2010/02/05(金) 09:17:150028デフォルトの名無しさん
2010/02/05(金) 11:08:050029デフォルトの名無しさん
2010/02/05(金) 17:00:13おすすめのエディタある?
0030デフォルトの名無しさん
2010/02/05(金) 17:02:272.6のほうがいい。
理由はライブラリの互換性。
0031デフォルトの名無しさん
2010/02/05(金) 17:04:13左のほうがお勧め度高い
0032デフォルトの名無しさん
2010/02/05(金) 17:05:48いや、風呂敷広げすぎると何も作れなくなるのがプログラミング。
趣味グラマならひとつの言語・ひとつのパラダイムで突き進むのが一番幸せ。
0033デフォルトの名無しさん
2010/02/05(金) 19:06:560034デフォルトの名無しさん
2010/02/05(金) 19:19:410035デフォルトの名無しさん
2010/02/05(金) 19:22:09滓ばっかり残った感じがする
0036デフォルトの名無しさん
2010/02/05(金) 19:26:120037デフォルトの名無しさん
2010/02/05(金) 19:38:13さり気なくVim厨に喧嘩売ってんじゃねーぞ
0038デフォルトの名無しさん
2010/02/05(金) 21:11:24Eclipse+PyDevがいいと思う
0039デフォルトの名無しさん
2010/02/05(金) 21:12:49「こっちのほうが絶対いいよ!!」みたいに偏執的なことを言う人が多い気がする。
0040デフォルトの名無しさん
2010/02/05(金) 21:13:480041デフォルトの名無しさん
2010/02/05(金) 21:37:300042デフォルトの名無しさん
2010/02/05(金) 21:42:33ttp://hie.s64.xrea.com/xyzzy/note/hoge-mode.html#completion
このあたりでできることが限界かなー
0043デフォルトの名無しさん
2010/02/05(金) 21:56:240044デフォルトの名無しさん
2010/02/05(金) 22:00:54pdb.set_trace()
0045デフォルトの名無しさん
2010/02/05(金) 23:39:07プロの方ですか? 流石ですね。
0046デフォルトの名無しさん
2010/02/06(土) 01:06:54なら、おれはデパガで。
0047デフォルトの名無しさん
2010/02/06(土) 06:39:14Python で print デバッグすると Codec 周りで例外出て何のデバッグしてるのか分からなくなるw
0048デフォルトの名無しさん
2010/02/06(土) 17:03:220049デフォルトの名無しさん
2010/02/06(土) 20:01:430050デフォルトの名無しさん
2010/02/06(土) 23:18:34俺ってやばいのかな
0051デフォルトの名無しさん
2010/02/07(日) 00:24:540052デフォルトの名無しさん
2010/02/07(日) 00:25:250053デフォルトの名無しさん
2010/02/07(日) 03:09:410054デフォルトの名無しさん
2010/02/07(日) 03:11:090055デフォルトの名無しさん
2010/02/07(日) 12:02:32半分できてるんだけど。
0056デフォルトの名無しさん
2010/02/07(日) 12:11:31Pythonの仕様っていうのも??? そもそも、未踏じゃないし。
98%だけど、〜が新しいって方がいいだろ。100%にする作業は成果にもできる。
0057デフォルトの名無しさん
2010/02/07(日) 12:26:22でもPythonコンパイラなんて誰も作ってないじゃん。
0058デフォルトの名無しさん
2010/02/07(日) 12:27:33未実装な機能があるだけで。
これを完全に仕上げるには協力が必要だ。
0059デフォルトの名無しさん
2010/02/07(日) 12:37:250060デフォルトの名無しさん
2010/02/07(日) 12:52:100061デフォルトの名無しさん
2010/02/07(日) 12:55:060062デフォルトの名無しさん
2010/02/07(日) 13:04:410063デフォルトの名無しさん
2010/02/07(日) 13:17:400064デフォルトの名無しさん
2010/02/07(日) 13:19:110065デフォルトの名無しさん
2010/02/07(日) 13:26:450066デフォルトの名無しさん
2010/02/07(日) 13:41:020067デフォルトの名無しさん
2010/02/07(日) 14:10:320068デフォルトの名無しさん
2010/02/07(日) 14:27:140069デフォルトの名無しさん
2010/02/07(日) 14:35:160070デフォルトの名無しさん
2010/02/07(日) 18:00:05exerbですら未踏通ってるからなぁw
0071デフォルトの名無しさん
2010/02/07(日) 18:04:47未踏ソフトは事業化も考慮して選ばれるんだろ。
0072デフォルトの名無しさん
2010/02/07(日) 18:12:130073デフォルトの名無しさん
2010/02/07(日) 18:18:300074デフォルトの名無しさん
2010/02/07(日) 20:44:440075デフォルトの名無しさん
2010/02/07(日) 22:07:44だな。そうでないなら別にイラネ
0076デフォルトの名無しさん
2010/02/08(月) 00:59:12コンパイルするのかねぇ
俺はPyrexで十分、っつーか
手軽にコード自体を最速にするなら
これが一番だわ
0077デフォルトの名無しさん
2010/02/08(月) 01:18:55execできるくらいだし、動的リンクもできんじゃね?
0078デフォルトの名無しさん
2010/02/08(月) 12:08:08pythonもセマンティックは解析してくれるんだろうか
今のemacsはタグジャンプ設定めいんどい
0079デフォルトの名無しさん
2010/02/08(月) 12:09:530080デフォルトの名無しさん
2010/02/08(月) 12:16:360081デフォルトの名無しさん
2010/02/08(月) 12:21:45eclipseのいいところはemacsキーバインドに簡単に設定できることだね。
0082デフォルトの名無しさん
2010/02/08(月) 16:56:34さり気なくVim厨に喧嘩売ってんじゃねーぞ
0083デフォルトの名無しさん
2010/02/08(月) 20:05:560084デフォルトの名無しさん
2010/02/09(火) 10:20:420085デフォルトの名無しさん
2010/02/09(火) 13:36:14>>39みたいな人が多い気がするから。
0086デフォルトの名無しさん
2010/02/09(火) 19:58:26サーバにアクセスしてemacsどこー?とかどうなのよ
0087デフォルトの名無しさん
2010/02/09(火) 20:00:420088デフォルトの名無しさん
2010/02/09(火) 20:11:150089デフォルトの名無しさん
2010/02/09(火) 20:12:19それはLinuxの習熟度の問題でしょ。
プログラミングとはあんまり関係ないし、
その程度のことなら1日で覚えてくれるでしょ。
0090デフォルトの名無しさん
2010/02/09(火) 20:53:34レンタルサーバにemacs入れたのは俺です。
rootつきのサーバだったんで、つい出来心で……。
0091デフォルトの名無しさん
2010/02/09(火) 22:31:26サーバーにemacsない会社なんかこちらからお断りだ。
おれは組み込み屋だが、このまえやった200Mhz, ARMの
OpenEmbeddedで組んだシステムにもこっそりemacs
組み込んどいたよ。
0092デフォルトの名無しさん
2010/02/09(火) 22:59:140093デフォルトの名無しさん
2010/02/10(水) 00:01:560094デフォルトの名無しさん
2010/02/10(水) 00:48:480095デフォルトの名無しさん
2010/02/10(水) 01:14:24アリンコの背比べ
0096デフォルトの名無しさん
2010/02/10(水) 01:16:230097デフォルトの名無しさん
2010/02/10(水) 01:21:53vi厨から見るとvimは迷惑な親戚
0098デフォルトの名無しさん
2010/02/10(水) 01:34:430099デフォルトの名無しさん
2010/02/10(水) 02:05:210100デフォルトの名無しさん
2010/02/10(水) 02:07:300101デフォルトの名無しさん
2010/02/10(水) 02:10:09def foo() {
...
}
def foo () do
...
end
さあ選べ
0102デフォルトの名無しさん
2010/02/10(水) 02:24:010103デフォルトの名無しさん
2010/02/10(水) 02:57:090104デフォルトの名無しさん
2010/02/10(水) 03:10:510105デフォルトの名無しさん
2010/02/10(水) 04:08:33ていうか、もうpassでいいじゃん。
Pythonはインデントが構文になってしまってる故、
自動で正しいインデントを決定できない場合があるのがめんどくさいのね。
0106デフォルトの名無しさん
2010/02/10(水) 04:47:55http://pc12.2ch.net/test/read.cgi/tech/1169473442/
0107つられたかな
2010/02/10(水) 04:54:50python のインデントが面倒とか言ってるやつは
実際には python のプログラムをまともに
書いたことが無いとしか思えない
普通に使っててそんなケースに出くわすことはまずないよ
2ch のレスでスペースが見えなくなって困るくらいだけ
貼られたオリジナルのインデントは HTML ソース見れば復元可能
0108デフォルトの名無しさん
2010/02/10(水) 10:19:09そういうヤツはそもそも python の存在に気づいても
3分後には他所にいってるはずだから…
100% 釣りだろ
0109デフォルトの名無しさん
2010/02/10(水) 10:22:48色々なソースを弄るときに都度エディタの設定を弄る必要が
無くなった。
他の言語もインデントのスタイルを強制すれば良いのに。
0110デフォルトの名無しさん
2010/02/10(水) 11:14:30if cond:
expr1
expr2
expr3
文脈見りゃ分かることが多いけど、スペースつぶれたのをコピペしたときそのあたり自分で直さないといけないって話。
その点以外では特に嫌なことないから、Pythonも中括弧導入すべきなんていうつもりはない。
0111デフォルトの名無しさん
2010/02/10(水) 11:24:45それと同じでPythonも
0112デフォルトの名無しさん
2010/02/10(水) 11:48:59コピペ失敗することあるしw
0113デフォルトの名無しさん
2010/02/10(水) 11:50:54俺はインデントブロック反対派だけど、Python使ってるよ。
理由はライブラリの豊富さと導入しやすさ。
インデント以外のブロック記法が導入されたらうれしい。
0115デフォルトの名無しさん
2010/02/10(水) 13:37:400116デフォルトの名無しさん
2010/02/10(水) 17:54:06だから問題が起こらないとは言ってないだろ
>普通に使っててそんなケースに出くわすことはまずないよ
稀なんだよ稀
そんなのに目鯨たててどうすんだ
0117デフォルトの名無しさん
2010/02/10(水) 17:59:46def foo(){
...
}
かなぁ。
0118デフォルトの名無しさん
2010/02/10(水) 18:01:24>>114-115
0119デフォルトの名無しさん
2010/02/10(水) 18:04:08・・・
関数定義終わり
0120デフォルトの名無しさん
2010/02/10(水) 18:06:480121デフォルトの名無しさん
2010/02/10(水) 18:11:550122デフォルトの名無しさん
2010/02/10(水) 18:17:11マジレスさせてすまん
0123デフォルトの名無しさん
2010/02/10(水) 18:18:550124デフォルトの名無しさん
2010/02/10(水) 19:09:580125デフォルトの名無しさん
2010/02/10(水) 19:26:390126デフォルトの名無しさん
2010/02/10(水) 20:35:160127デフォルトの名無しさん
2010/02/10(水) 20:36:39って思ったけど、実際やったら何でもなかった。元々他の言語でもどうせ見やすさの
ためにインデントしてる訳だし。
0128デフォルトの名無しさん
2010/02/10(水) 21:55:40ぴゅう太だろjk
0129デフォルトの名無しさん
2010/02/11(木) 01:00:000130デフォルトの名無しさん
2010/02/11(木) 01:04:15>>110みたいなケースはよくあるよ。
0131デフォルトの名無しさん
2010/02/11(木) 01:04:31printデバッグwww
0132デフォルトの名無しさん
2010/02/11(木) 01:06:21処理系のバグだったら知らないけど、それ以外でどうやったらメモリリーク起きる?
0133デフォルトの名無しさん
2010/02/11(木) 01:08:400134デフォルトの名無しさん
2010/02/11(木) 01:12:23インデントはエディタがやってくれるし
0135デフォルトの名無しさん
2010/02/11(木) 01:24:260136デフォルトの名無しさん
2010/02/11(木) 01:27:32でもマニュアル見たらPerlよりマシっぽいな
0137デフォルトの名無しさん
2010/02/11(木) 01:40:50これは__del__()のところに注意書きしてあるけど。
ttp://www.python.jp/doc/nightly/ref/customization.html
あとCモジュールを書くとINCREF,DECREFで間違えるな。
どういう工夫をすればバグが減らせるのかよくわからん。
0138デフォルトの名無しさん
2010/02/11(木) 10:29:43コメント入れとけば?
0139デフォルトの名無しさん
2010/02/11(木) 10:33:46リークとは言えないだろうけど
メモリ食うオブジェクトとか握ったまま放さないとそのうち足りなくなる
wxPythonでポップアップメニュー多用するプログラム書いてて
その都度生成してたらガベコレされなくなってるらしくてメモリエラーになった
アプリ終了して起動しなおしたらもちろん正常に動く
多分自分の書き方が悪いんだろうと思うけど
メニューが画面上から消えていらなくなったタイミングで解放したいんだが
どこで明示的に解放すれば良いのか適切な方法がまだ見つかってないのでバグ放置
0140デフォルトの名無しさん
2010/02/12(金) 00:12:40すべてのオブジェクトは解放されるから、
明示的に解放とかする必要はないのでは。
import gc
gc.set_debug(gc.DEBUG_LEAK)
gc.disable()
gc.collect()
これで循環参照してるオブジェクト表示して、
コード修正すればメモリが足りなくなるとかなくなると思う。
0141デフォルトの名無しさん
2010/02/12(金) 00:15:440142デフォルトの名無しさん
2010/02/12(金) 00:21:25__del__メソッド持ってなかったら、いつかは解放されるけど、
いつ解放されるかはわからない。
だったような気がする。
0143デフォルトの名無しさん
2010/02/12(金) 00:40:18ありがとう
試してみるす
0144デフォルトの名無しさん
2010/02/12(金) 00:42:58>いつかは解放されるけど、いつ解放されるかはわからない。
どうもこれかも知れないんですよね。
0145デフォルトの名無しさん
2010/02/12(金) 00:52:350146デフォルトの名無しさん
2010/02/12(金) 01:42:361st GC が働いて、循環参照になっているゴミを破棄する。
1st GC で破棄されていなかったオブジェクトは次回の1st GCで
循環参照の検出をスキップされる。んで、1st GCが一定回数
実行された後に 2nd GC が働いて1st GCを生き残った循環参照の
うちゴミになった物が捨てられる。
さらに、2nd を生き残った循環参照オブジェクトは 3rd に回される。
0147デフォルトの名無しさん
2010/02/12(金) 02:18:260148デフォルトの名無しさん
2010/02/12(金) 02:22:50yes
0149デフォルトの名無しさん
2010/02/12(金) 08:07:54ヾミ || || || || || || || ,l,,l,,l 川〃彡|
V~~''-山┴''''""~ ヾニニ彡| 解放する・・・・・・!
/ 二ー―''二 ヾニニ┤ 解放するが・・・
<'-.,  ̄ ̄ _,,,..-‐、 〉ニニ| 処理系は その時と場所の
/"''-ニ,‐l l`__ニ-‐'''""` /ニ二| 指定まではしていない
| ===、! `=====、 l =lべ=|
. | `ー゚‐'/ `ー‐゚―' l.=lへ|~| そのことを
|`ー‐/ `ー―― H<,〉|=| どうか諸君らも
| / 、 l|__ノー| 思い出していただきたい
. | /`ー ~ ′ \ .|ヾ.ニ|ヽ
|l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・
. | ≡ | `l \__ 我々がその気になれば
!、 _,,..-'′ /l | ~''' メモリーの解放は
‐''" ̄| `iー-..,,,_,,,,,....-‐'''" / | | 10年後 20年後ということも
-―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・!
| | \ / | |
0150デフォルトの名無しさん
2010/02/12(金) 08:56:520151デフォルトの名無しさん
2010/02/12(金) 09:15:12うん、そうだね。
みんなはそんなことは十分承知の上で、CPythonの話をしているんだ。
0152デフォルトの名無しさん
2010/02/12(金) 09:44:37pythonをCで実装
もうpythonやめてCでいいじゃん
0153デフォルトの名無しさん
2010/02/12(金) 09:56:350154デフォルトの名無しさん
2010/02/12(金) 09:56:58:ハ_ハ:ハ_ハ:.
:(;゚∀゚)゚∀゚;): シィィィィ ──!!
:(´`つ⊂´):..
と_ ))(_ つ:
0155デフォルトの名無しさん
2010/02/12(金) 10:05:12中身ほとんど C っていうのもありえる
0156デフォルトの名無しさん
2010/02/12(金) 10:26:53wxは独自のメモリ管理してるから
いちいちDestroy呼ばんとえらいことに
>>155
でもトライアンドエラーが簡単だから
ついpython使っちまう
そーいやPILってCのI/F持ってんだな
本家の解説のソースがImagingObjectをImagingって
書いてあってけっこーはまった
0157デフォルトの名無しさん
2010/02/12(金) 11:14:540158デフォルトの名無しさん
2010/02/12(金) 15:05:04サンクス
>>139
>wxは独自のメモリ管理してるから
>いちいちDestroy呼ばんとえらいことに
まじか
PyQtに乗り換えるか
0159デフォルトの名無しさん
2010/02/13(土) 00:49:02http://www.pyside.org/
どうやら、PyQt作ってるriverbankに「オプソ版をGPLじゃなくLGPLにしてくれ」と頼み込んだが交渉決裂して、作ることにしたらしい。
将来的にどっちが強くなるんだろ。
0160デフォルトの名無しさん
2010/02/13(土) 00:52:090161デフォルトの名無しさん
2010/02/13(土) 01:29:54o Framework の数が多すぎて
0162デフォルトの名無しさん
2010/02/13(土) 04:03:55どうしてswitchやインクリメント演算子が存在しないの?
if-elseが連なってるのは効率がすごく悪そうなんだけど
あと、str.lenじゃなくてlen(str)なのが地味に気になった
0163デフォルトの名無しさん
2010/02/13(土) 04:46:00気持ちはわかります 漏れの Python 初体験時の感想を書いときますね
●インデント
最初のうち数回は for hogehoge: のあとインデント忘れたりするけれど
慣れるとほとんど気にならないレベル 空気のような存在
●式と文が厳格に分かれている
これは慣れるまで時間掛かった 今でもちょっと面倒と思うケースはある
if (hoge = fuga()) == piyo: とか
if (m = re.compile(r'h(.*)e', re.I).search('hageHOGEfuga')) is not None:
みたいな書き方が出来ないのでもどかしい
(Python 的には「うっかりバグ」を防ぐためなんだと思う)
●switch
if ... elif ... elif ... else ...
も悪くない(っていうかこっちの方が汎用的で C/C++ 的な switch より便利だぜ)
Ruby は case で出来るけどね
●インクリメント演算子
a += 1
で良いと思う(Ruby もそうだし)
*dst++ = *src++;
不満はみたいな書き方が出来ないかなーっていうくらい
それほど不満はない
●str.lenじゃなくてlen(str)
これも慣れるまで何で str.len() がないんじゃーと思ってた w
たぶん Ruby 中毒になっていたんだと思う
split() とか match() とか search() とかでも戸惑うケースがあるね
あとは join() かな
慣れの問題
0164デフォルトの名無しさん
2010/02/13(土) 04:47:53効率の話だよね
0165デフォルトの名無しさん
2010/02/13(土) 07:25:33読みながらいろいろと弄くってきた。
現時点ではPythonの方向性というか、ターゲット層がよく分からない。
とりあえず、
if 0 < a < 128 みたいな条件式が通ったんだけど、一種の三項演算子扱いなのか?
手元の資料だとnotは論理否定の役割しかないそうだけど、if a not in b は別なのか?
多次元配列やハッシュの代入に複数行使った場合、どこまでインデントが崩壊していいのか?
あたりが未解決。
最近の主要言語がC#, Rubyなので、lenやjoinは非常にむず痒い。
面白そうな言語ではあるんだけれども、もう一押し何かが欲しいところかな。
いろいろ動作確認したりでまだ初学用の資料すら読み終えてないので、なんとも言えないけどね。
switchがない理由について検索したけど、
「switchに頼るのはOOが理解できていない証拠!」みたいなサイトが一杯出てきてちょっと引いた。
まあ、仮にswitchが導入されていたとしても、インデントの仕方で誰かが文句言いそうだけどw
0166デフォルトの名無しさん
2010/02/13(土) 07:28:56len(obj)
は
obj.__len__()が呼ばれる
0167デフォルトの名無しさん
2010/02/13(土) 07:53:13なんでそんな細かな言語仕様が気になるの? 言語が違うんだから他の
言語と記述方法が違うのはあたりまえだと思うんだけど。
switchがあったら便利だというのは同意だけど、インクリメントなんか
スクリプト言語には本来要らないよ。i = i + 1とi++では機械語レベル
ではたしかに命令数が違う。コンパイラにとってはそれ重要だけど、
スクリプト言語にとってそれがなんだというのか。
結局君は書き慣れた記述法じゃないことが不満なんじゃないの?
たとえば「インクリメントが実装されました。Delphi式のinc(i)です」
ってことになったらそれはそれで文句あるんでしょ? それはインクリ
メントが欲しいんじゃなくて慣れた記述法にしてほしいってだけのことだよ。
言語が違えば記述方法は違う。それは違う言語を学ぶ際に最低限わきまえる
べきことだよ。
それからターゲットはRubyとほぼ一緒だよ。そんなことRuby使ってる
んならわかるでしょ。まつもとさんだって「ああPythonあるからRuby
いらないかもw」とか言ってるしね。
っていうか「もう一押しほしい」って誰に言ってるの? 君のために誰が
一押ししてくれることを想定しているのか教えてほしい。
0168デフォルトの名無しさん
2010/02/13(土) 07:58:180169デフォルトの名無しさん
2010/02/13(土) 08:17:130170デフォルトの名無しさん
2010/02/13(土) 08:23:37数値オブジェクトはイミュータブルだからインクリメントは実装できない
という認識は正しい?
0171デフォルトの名無しさん
2010/02/13(土) 08:31:31なるほど。そういう実装をしているんですね。
さんくすです。
>>167
ちょっと言葉悪かったですね。失礼。
慣れた記述法が欲しいってのは大体正解です。三項演算子とか大好きですし。
これが全然違う文法ならともかく、似通っているのに「微妙に違う」から違和感を覚え、
その違和感による不満を消すために理由や事情があるのなら知りたいと思うんです。
Pythonは確かに支持されている言語なので、支持されるに足る理由があるとは思っているのですが、
どうにもそれが実感できないので、自力にせよ他力にせよ、Pythonの魅力をはっきりさせたいというのが
もう一息っていう吐露ですね。馬鹿にしているようにも読めるレスだったので、その点は謝罪致します。
0172デフォルトの名無しさん
2010/02/13(土) 08:57:46switchとかインクリメントとか野暮な事言うのは
無能なRuby厨かC初心者くらいだろ。
0173デフォルトの名無しさん
2010/02/13(土) 09:34:32len()は.__len__じゃなくて.lenとか.lengthとか.Lengthとか.countとか.itemcountとか嫌でしょ一種のインターフェースです
みたいな話
しかし最近の言語に代入を評価できるのってあるのか?
0174デフォルトの名無しさん
2010/02/13(土) 10:35:31Pythonが支持されている理由のひとつ
http://pc12.2ch.net/test/read.cgi/tech/1264635554/448-455
こういうことにならない
0175デフォルトの名無しさん
2010/02/13(土) 10:56:390176デフォルトの名無しさん
2010/02/13(土) 11:15:29>似通っているのに「微妙に違う」
似てねーよ
それはお前の都合だろ
0177デフォルトの名無しさん
2010/02/13(土) 11:16:44使い込むとわかる
つまり使い込まないとわからない w
0178デフォルトの名無しさん
2010/02/13(土) 11:19:56encode() dekode() のネーミング逆じゃね?とか勝手に思ってた
u"ほげ" の内部コード?が必ず UTF-8 で保持されてると思ってた
そんなこんなで exception 出まくりでなんじゃこれ状態だったが
色んな誤解が解消出来た時点でスムーズに書けるようになった
>>165 みたいな初心者には w 敷居は高いかもしれない
0179デフォルトの名無しさん
2010/02/13(土) 11:20:57●switch文がない
switchで一回インデント、caseで一回インデントで、
二重のインデントになるし、そうなればif〜elifの連鎖より読みにくくなること必至だから。
何度か議論されてきたけどこの二重インデント問題を解決しないことには……
ttp://www.python.org/dev/peps/pep-3103/
●インクリメント
前置と後置で挙動が変わるのを覚えるのが無駄だし、
だいたい、たった一行で代入、評価、破壊的操作の三種類の動作をするわけで、あんまり直感的じゃない。
たしか演算子オーバーロードでもややこしい実装をしないといけないことがあるし、
実用面でもC的なfor文がないからそれほど問題ないし、あったとしてもあんまりメリットはない。
●lenが関数
基本的にPythonは関数がファーストクラスだから、メソッドより関数の方が取り扱いが楽でいいんだよな。
aをリストとしてsorted(a, key=len)ができるんだぜ。
まぁメソッドでもsorted(a,key=type(A).length)でいける訳だからメソッドだからどうというわけでもないが
0180デフォルトの名無しさん
2010/02/13(土) 11:28:11Ruby の case 方式にすれば?
0181デフォルトの名無しさん
2010/02/13(土) 11:38:18昔は += もなかった。sorted もなかった。
tmpKeyList = myDictionary.kyes()
tmpKeyList.sort()
for tmpKey in tmpKeyList:
・・・
みたいなこといちいち書いてたよ。
0182デフォルトの名無しさん
2010/02/13(土) 11:38:42>Pythonの方向性
読みやすく、書きやすい
ライブラリが一通り揃ってるし、
リンクがどうのビルドがどうのとか面倒なことはないし、
素人がプログラムを勉強するのにもおすすめだし、
綺麗なコードが書きたい玄人にもおすすめ
>0 < a < 128
これは「(0 < a) and (a < 128)」と評価される。
不等号や等号はandでつながれて評価されるんだよ。
だから0 < a < b < c == d < e < 128なんかも
「(0 < a) and (a < b) and (b < c) and (c == d) and (d < e) and (e < 128)」になる。
> not in
not inは演算子扱い。
>もう一押し
関数がファーストクラスだからProcとかデリゲートとかめんどいことしなくても
関数に関数渡して楽しいことができるよ!!
ジェネレータも使えるからリストの処理も簡単だし、
キーワード引数もかなり強力で、
オプションが大量にあってげんなりするGUI関数を操作するのも楽々だし、
OOの世界で有名なデザインパターンのBuilderパターンとかだって
キーワード引数があるだけでかなり存在意義を失う。
>switchに頼るのはOOが理解できていない証拠!
あれだ、なんでもOOに頼るのはOOを理解できてない証拠なので、
OOを勉強してそういうことを言ってる輩を見下せるようになるといい。
OO的には多態性を勉強するといいかもしれない
0183デフォルトの名無しさん
2010/02/13(土) 11:40:53三項演算子
「(A)?B:C」は
「B if A else C」でおk
0184デフォルトの名無しさん
2010/02/13(土) 12:29:11なんとなく分かる程度じゃ便利さが見えてこないって感じね。
痒いところに手が届くような感じだとしたら、ちょっと期待したい。
>>178
あー、そこらへんは確かに全然理解できてないかも。
>>179
一応、インクリメントに関しては強く主張する気はないです。三項演算子と一緒でないのが寂しいだけ。
メリットとかじゃなくて気持ちの問題なので、それを押しつける気はないです。
関数に関しては、若干C#,Java,Rubyの影響を受けすぎたかな。
慣れないうちは絶対str.lenとか書きまくっちゃうだろうけれども、違いを意識するように努力してみます。
>>185
玄人向けみたいな先入観が強かったから違和感があったのかな。
等号・不等号は糖衣構文みたいなものだと思っていいのかしら?
申し訳ないけどデリゲートは大好きなんだけどw、
他は確かに慣れれば面白そうかもしれない。素敵な情報をありがとう。
switchに関して調べて出てきたページが、なんというか「Pythonの素晴らしさが分からない奴は馬鹿w」みたいなサイトだったんで、
一時的に嫌悪感が高まって、ついついきつめのこと書いてしまった。本当申し訳ない。
>>183
ありがとう。
でも使いたいのは a = b ? c : d みたいな状況だから、素直に分岐した方がいいかもね。
嫌われがちな書き方だけれども、個人的にはすごく好きなんだ。あくまでも可読性に影響のない範囲でだけど。
0185デフォルトの名無しさん
2010/02/13(土) 13:21:21Javaだと配列がインタフェースに従ってないから、 Collection.size() と
配列の .length が統一できてなくてキモイ。
Pythonのようなダックタイピング言語でも、一般的なメソッドを
広い範囲で統一するために、ICollectionみたいなインタフェースが
必要。で、Pythonで一般的なインタフェースは特殊メソッドで実現される。
コンテナ型の場合は、
__len__() で len(x)、 __iter__ で for y in x: や iter(x)、 __contains__ で
y in x と y not in x が使えるようになる。
Rubyはここら辺どうやって統一してるの?みんな一般的なメソッドの名前を
予約語みたいに覚えて間違わないようにしてるの?それだと、予約語と違って
間違えて使ってしまってもエラーにならないから混乱しない?
0186デフォルトの名無しさん
2010/02/13(土) 14:06:52不注意でモジュールから引き継いだメソッドを
オーバーロードしてしまうかもしれないが
それはオブジェクト指向である以上、不可避なのでどうしようもない
Pythonの特殊メソッドでtraitsを表す手法は
クラスの設計者が自覚的に実装することで
意図が明確に反映できる反面、ちょっと面倒なのも事実
そこら辺のRubyとの違いは思想が現れてて面白いね
話がずいぶん戻るけど、Pythonの行継続は
括弧かトリプルクォートで囲まれるか
バックスラッシュで明示的に継続を表すかしかないので
ルール自体ははっきりしているよ
0187デフォルトの名無しさん
2010/02/13(土) 14:09:43a = c if b else d でおk
0188デフォルトの名無しさん
2010/02/13(土) 14:21:040189デフォルトの名無しさん
2010/02/13(土) 14:45:24a = b ? c ? d : e : f
a = d if c else e if b else f
a = (d if c else e) if b else f
a = b ? c : d ? e : f
a = c if b else e if d else f
a = c if b else (e if d else f)
0190デフォルトの名無しさん
2010/02/13(土) 14:49:53初学者にわかりやすいように単純なルールで実装しているので
逆に他の言語をかじった人が使い始めると
戸惑うところがあるのは否めない
スコープに関するクロージャの話とか"".joinとかlen()とか
Python使っている人には「またか・・・」とげんなりしてしまう無限ループ状態
FAQが和訳されれば改善されるのかね?
0191デフォルトの名無しさん
2010/02/13(土) 15:04:05単純に書けることに感動する奴(俺)もいるっちゃいるんだけどねぇ
0192デフォルトの名無しさん
2010/02/13(土) 15:16:150193デフォルトの名無しさん
2010/02/13(土) 15:16:53俺はリスト内包表記をPythonで初めて知って
かなり驚いた
それをきっかけにSchemeやHaskellを眺めてみて
世界が広がった気がする
シンプルに書けるって点では、最近はScalaやClojureに注目
0194デフォルトの名無しさん
2010/02/13(土) 15:19:19数学に疎いからHaskell本読むまで気づかなかった
0195デフォルトの名無しさん
2010/02/13(土) 15:24:020196デフォルトの名無しさん
2010/02/13(土) 15:25:39集合の中の要素の条件付けそのまま
中高生が初めて触るプログラム言語として
数学との違和感のなさから、実はHaskellは向いているのではないか
・・・と妄想してしまうw
プログラミングHaskellの訳者の人も、そんなこと書いてたし
0197デフォルトの名無しさん
2010/02/13(土) 15:36:230198デフォルトの名無しさん
2010/02/13(土) 15:39:41Pythonでもmix-inを使って、一部の特殊メソッドを用意するだけで
それ以外を自動で用意する事はできるよ。
昔はUserListとかUserDict, 今なら collectionsモジュール内のABC。
だからPythonとRubyの違いは
1. 特別な関数に特別な名前を付けるか、普通のメソッド名を使うか
2. 他のメソッド名と被らない演算子や関数を使うか、普通のメソッド名を使うか
だよね。
Pythonの方が明示的だけど、Pythonの方が面倒と言うことはない。
0199デフォルトの名無しさん
2010/02/13(土) 15:53:12collectionsモジュールが便利なのは本当。
0200デフォルトの名無しさん
2010/02/13(土) 16:03:450201デフォルトの名無しさん
2010/02/13(土) 16:06:46for-elseはたまにしか使わないけど、凄く便利だよね。
try-elseもそうなんだろうけど、使ったこと無い。
0202デフォルトの名無しさん
2010/02/13(土) 16:23:360203デフォルトの名無しさん
2010/02/13(土) 16:26:02else節に行くのは最後までbreakしなかったとき
0204デフォルトの名無しさん
2010/02/13(土) 19:50:01a=cond?expr1:expr2;のような使い方でもpython風三項演算子使っちゃうばかりか、
逆に違和感がないと思う俺はpython病気かなぁ?
val = a if a>0 else 0 だと、通常処理を書いてから困ったチャンの処理を書くって流れが例外処理みたいでいい。
max = a if a>b else bだとそういった感じはないけど、英文みたいな感じはしなくもないし、まぁいいかなぁ、と。
けど、ネストは勘弁してほしい。
max = (a if a>c else c) if a>b else (b if b>c else c)
とか、ややこしすぎる。
max = a>b ? (a>c ? a : c) : (b>c ? b : c)
の方がずっと読みやすい。
0205デフォルトの名無しさん
2010/02/13(土) 19:58:09flg=0
for x in リストとか:
if ほげほげ:
0206205
2010/02/13(土) 20:01:29ごめ、途中で書いちゃった
flg=false
for x in リストとか:
if ほげほげ:
flg=true
break
if not flg:
むにゃむにゃ
を
for x in リストとか:
if ほげほげ:
break
else:
むにゃむにゃ
で済ませられる。
例えば、全部試してみたけどダメだったよー、みたいな処理いれる。
0207デフォルトの名無しさん
2010/02/13(土) 20:10:470208デフォルトの名無しさん
2010/02/13(土) 20:11:08for i in range(100):
for j in range(2,i):
if i % j == 0:
break
else:
print i
0209デフォルトの名無しさん
2010/02/13(土) 20:14:30括弧が明示されている限りはインデントを気にしなくていい、と解釈していいのかな?
インデントにちょっとびびりすぎてたかもしれない。さんくす。
>>187
動いた!ありがとう!
三項演算子は消えゆく運命かと思って黄昏れてたので、ちょっと本気で嬉しかった。
>>190
FAQだったのか……すみません。
正直「Pythonは若干ハイレベル」という思い込みと「インデントさえできれば大丈夫」という偏見があったので、
実際に触れてみて、想像と現実とのギャップに戸惑った部分が多いと思う。勝手な思い込みで文句たれて本当申し訳ない。
正直ここでいろいろ言ってもらって、だいぶギャップが埋められたみたいでありがたく思ってる。
>>192
あれは素直に驚きました。
0210デフォルトの名無しさん
2010/02/13(土) 20:26:24常識にとらわれずに、一番合理的な方法を考えるからな。
0211デフォルトの名無しさん
2010/02/13(土) 20:30:440212デフォルトの名無しさん
2010/02/13(土) 20:37:150213デフォルトの名無しさん
2010/02/13(土) 20:37:220214デフォルトの名無しさん
2010/02/13(土) 20:50:27210みたいなコメントを見ると引く気持ちもわかるが
Pythonの実装は、基本、実用性重視だし
単なる実装の都合上の制限だってある
とりあえず本家サイトのFAQを見るといいよ
http://www.python.org/doc/faq/
General Programming FAQ と Programming FAQ の
目次を眺めると『みんな同じ疑問を持つんだな』と癒されるはず
>>198-199
おぉ、collectionsってdefaultdictだけだと思ってた
この抽象基底クラスのテンプレートはいいね!!
俺のメイン環境は2.5なので使えないけど・・・
便利なものはどんどん真似しあって欲しいね
0215デフォルトの名無しさん
2010/02/13(土) 21:57:59直感的だよ
そうじゃないと思うのは今まで for - else の無い言語で頭が毒されて来たからだよ
0216デフォルトの名無しさん
2010/02/13(土) 22:07:42英語的には直感的じゃないような気がする。作者もネイティブじゃないが
0217デフォルトの名無しさん
2010/02/13(土) 22:27:49一貫性はあるんだけどね
0218デフォルトの名無しさん
2010/02/13(土) 22:31:02直感的にはbreakしたときに実行される気がする。
何時だったか同じ話題が出たときはそんな意見が多かった印象
0219デフォルトの名無しさん
2010/02/13(土) 23:15:00一時期日本語ドキュメントもbreakしたときに実行されるって書いてあったw
それはさておき、実際問題としてbreakしなかったときに実行する方が需要あるし、
「最後まで止まらなかった場合に実行する」という意味で try-else と整合性あるし、
やっぱり else は今の仕様が合理的だと思うよ。
0220デフォルトの名無しさん
2010/02/13(土) 23:21:37breakが1箇所ならその直前に書いとけばいい話だし、複数箇所でbreakすることも少ないし。
0221デフォルトの名無しさん
2010/02/14(日) 02:25:56もしその意味なら finaly かな
else だったら誤解は無いと思う
0222デフォルトの名無しさん
2010/02/14(日) 08:25:44finaly なら break してもしなくても return しなくても実行される気がする。
0223デフォルトの名無しさん
2010/02/14(日) 11:50:41個人的には、クラスの定義方法を見て、今までの細かいとことか結構どうでもよくなった。
これは……慣れるのに相当時間かかりそうな気がする。
他のOO言語から入った人は、特に違和感とかなかった? 自分毒されすぎかな?
0224デフォルトの名無しさん
2010/02/14(日) 12:00:45むしろ、違いを見つけてはなぜそうなっているのかを知るたびに
「なるほど!」の連続で楽しかった。
0225デフォルトの名無しさん
2010/02/14(日) 16:19:59try:
print 'a'
raise 'b'
print 'c'
except:
print 'd'
else:
print 'e'
finally:
print 'f'
for 中で break することを raise したことに置き換えるなら (>>218 の言う直観ってそういう意味に取れたから)
except と finally へ行ってくれれば良い訳で
else はあくまで最後まで except へ行かずに済んだ場合の処理ということで直観に従ってると感じる
0226デフォルトの名無しさん
2010/02/14(日) 16:43:13元々はアセンブラとか C をやってたけど
( FILE* みたいな構造体をクラス/インスタンス的に使う設計や実装も当時やってた )
C++ やり始めるときに先輩から薦められて「Eiffel オブジェクト指向入門」を読んで
Eiffel を通してオブジェクト指向の基本的な考え方をメイヤーさんから習った
(これはかなり良い経験だったと今でも思っています)
その後 C++ を使ってるうちに何かが変だと感じつつ
(その頃は C++ が糞だと断定出来る自信がなかった)
Objective-C (Mac じゃなくて StepStone の方) をやって本当の快適さを覚え
その流れで Smalltalk に手を出したものの環境依存が大き過ぎて
出家信者になるのが怖くてどっぷり漬かれずにいたところ
当時流行り出した Perl (のオブジェクト指向部分の実装) は糞だと思って無視
PHP (のオブジェクト指向部分) はマシかなと感じたが若干テストしただけで手を出さず
Zope-Python の存在を知ったが何それ美味しいの? Zope に環境依存するなんてやだ
と食わず嫌いで Python から遠ざかりつつ勢いで Ruby 教に入信してしまい
Ruby を有難く使っていた数年後に 2ch で Python 厨と Ruby 厨の論戦を目にして
バランスの良い Python に辿り着いたときには Ruby 要らなくなってた
0227デフォルトの名無しさん
2010/02/14(日) 18:03:470228デフォルトの名無しさん
2010/02/14(日) 18:15:420229デフォルトの名無しさん
2010/02/14(日) 23:26:21それ一行
0230デフォルトの名無しさん
2010/02/14(日) 23:32:59それ四文字
0231デフォルトの名無しさん
2010/02/14(日) 23:49:13これと
list.sort()
list.reverse()
って実際の動作ではやっぱ前者の方が軽い?
0232デフォルトの名無しさん
2010/02/14(日) 23:52:150233デフォルトの名無しさん
2010/02/14(日) 23:53:010234デフォルトの名無しさん
2010/02/15(月) 00:09:400235デフォルトの名無しさん
2010/02/15(月) 01:05:550236デフォルトの名無しさん
2010/02/15(月) 02:12:480237デフォルトの名無しさん
2010/02/15(月) 02:29:262.5倍くらいかかった
次の案↓
0238デフォルトの名無しさん
2010/02/15(月) 02:32:010239デフォルトの名無しさん
2010/02/15(月) 02:33:21はやすぎわらた
0240デフォルトの名無しさん
2010/02/15(月) 02:55:06リストである必要がないなら、reversed(list.sort())でイテレータにするのもアリかなぁ。
0241デフォルトの名無しさん
2010/02/15(月) 07:11:27list.reverse()
これだと実際に取り出すまで reverse 始まらないのかもね
0242デフォルトの名無しさん
2010/02/15(月) 09:27:08list.sort(reverse=True)とlist.reverse()は内部的に同じCの関数を呼び出してる
Python使いが意識するべき速度差じゃないな
0243デフォルトの名無しさん
2010/02/15(月) 20:10:500244デフォルトの名無しさん
2010/02/15(月) 20:24:52バイトコンパイルされたファイルはreverse()の方が小さかったから何が違うのかと思ったけど同じなのね
0245デフォルトの名無しさん
2010/02/15(月) 22:18:460246デフォルトの名無しさん
2010/02/16(火) 03:34:52それでも list.sort() と list.reverse() 二回呼んでるのは無駄だよね
律速されてるのは C の関数の方だからたまたま影響出ないだけで
0247デフォルトの名無しさん
2010/02/16(火) 08:39:02list.sortでreverse=Trueを渡してやると反転処理は2回行われている
インタプリタがもう1行余分に処理するのに必要な計算量は知らないけど
それらのバランスも含めてPython使いが気にするような速度差ではないと言った
0248デフォルトの名無しさん
2010/02/16(火) 08:43:57ソースでもreverse=Trueって書いてあった方がわかりやすい。
0249デフォルトの名無しさん
2010/02/16(火) 08:53:020250デフォルトの名無しさん
2010/02/16(火) 09:20:570251デフォルトの名無しさん
2010/02/16(火) 09:24:130252デフォルトの名無しさん
2010/02/16(火) 20:51:340253デフォルトの名無しさん
2010/02/16(火) 21:05:58a = sorted(a) すると、 a を変更せずに新しくソート済みリストを作った後に
a に代入するから、 a.sort() よりも遅いしメモリを食う。
0254デフォルトの名無しさん
2010/02/16(火) 21:08:130255デフォルトの名無しさん
2010/02/16(火) 21:18:230256デフォルトの名無しさん
2010/02/17(水) 16:36:10>文字コードの指定はプログラムの1行目又は2行目に記述された場合にだけ有効です。
と、ありました
・pythonにおいて#はプログラムに影響しないコメントを意味する
・ただし最初の二行の#はプログラムに影響する
・最初の二行において#付きで宣言することはpythonのバージョンと文字コードである
と言う認識でいいでしょうか? 他に何か宣言することはあるのでしょうか?
最初の二行に関して言明している記事などあれば誘導お願いします
0257デフォルトの名無しさん
2010/02/17(水) 16:46:140258デフォルトの名無しさん
2010/02/17(水) 16:51:39これじゃダメ?
ttp://www.python.jp/doc/release/ref/encodings.html
>・最初の二行において#付きで宣言することはpythonのバージョンと文字コードである
これは全く関係ない。バージョンの宣言なんてできない。
Unix系のOSはスクリプトの一行目に、そのスクリプトを実行するプログラムのパスを
書くという仕様になっている。だから、この部分はPythonの仕様ではなく、OSの仕様。
Pythonから見れば、ただのコメントでしかない。
0259デフォルトの名無しさん
2010/02/17(水) 17:00:40超速回答ありがとうございます
OSの仕様でしたか。納得しました
あとバージョンは自分の勘違いだったようで
いろいろどもです
0260デフォルトの名無しさん
2010/02/18(木) 00:21:320261デフォルトの名無しさん
2010/02/18(木) 00:41:180262デフォルトの名無しさん
2010/02/18(木) 01:20:56#!/usr/bin/env python
は一行目じゃないぞ
# -*- coding: utf-8 -*-
こっちが Python から見たときの一行目だ
0263デフォルトの名無しさん
2010/02/18(木) 01:24:18で済ませるな。これでも動くし。
0264デフォルトの名無しさん
2010/02/18(木) 01:31:34#!/usr/bin/env python
# hoge
# coding: utf-8
print "あいう"
UTF-8で保存したが「2行目」にある文字コード宣言は無視されてるようだw
0265デフォルトの名無しさん
2010/02/18(木) 19:39:21print sys._getframe().f_lineno
0266デフォルトの名無しさん
2010/02/18(木) 20:21:360267デフォルトの名無しさん
2010/02/18(木) 22:31:13# vim: set fileencoding=utf-8 :
import os
print u'こんにちは' + os.environ['USERNAME'] + u'さん'
vimの場合。短縮形のfencじゃ駄目みたい。'coding'って文字を見てるっぽい。
0268デフォルトの名無しさん
2010/02/18(木) 22:51:46http://www.python.org/dev/peps/pep-0263/
0269デフォルトの名無しさん
2010/02/21(日) 14:26:25class MyClass: pass
obj = MyClass()
とした時に、MyClassを得るにはどうすれば良いでしょうか
0270デフォルトの名無しさん
2010/02/21(日) 14:28:230271デフォルトの名無しさん
2010/02/21(日) 14:33:16アンダーバー付きの属性を直接参照するのってどうなのでしょうか
0272デフォルトの名無しさん
2010/02/21(日) 14:35:230273デフォルトの名無しさん
2010/02/21(日) 14:37:47すみません、よく分からないのですが
0274デフォルトの名無しさん
2010/02/21(日) 14:40:24class MyClass(object): pass
obj = MyClass()
type(obj)
0275デフォルトの名無しさん
2010/02/21(日) 14:55:19継承して、コンストラクタ呼び出すとき
class Klass(Base):
def __init__(self):
Base.__init__(self)
ってしない?
0276デフォルトの名無しさん
2010/02/21(日) 15:10:170277デフォルトの名無しさん
2010/02/21(日) 15:35:04親クラスを明示するとtype()の結果が変わる…?!
まだよく解りませんが、とりあえずは動きました
お答え頂き、ありがとうございました
>>275
そもそもPythonではまだ継承自体したことがなかったです…
0278デフォルトの名無しさん
2010/02/21(日) 15:51:37>親クラスを明示するとtype()の結果が変わる…?!
というか、Pythonはでバージョンアップでクラスの仕様を変えたのよね。
だから、3.0以前はobjectを継承しないと旧式のクラスになるという仕様なの。
詳しくは「new-style class」でググれ
0279デフォルトの名無しさん
2010/02/21(日) 21:55:46super()使ったところで、結局__init__は避けられないのでは?
0280デフォルトの名無しさん
2010/02/22(月) 11:39:33詳しい説明ありがとうございます
旧形式/新形式のクラスがある、ということは知っていたのですが
挙動の違いだとは知らず、てっきり
同じ挙動で全然違う記法があるのだとばかり思っていたのです…
…で、その旧形式の記法はきっと直感から大きく外れた奇っ怪なもので
自分の書いている読みやすい記法はきっと新形式なのだろう、と
勝手に勘違いしていたワケです
調べると、まさか自分の書いていたのが旧形式とは…
でもそれを知り、かなり目からウロコというか
今まで「何かおかしいな」と思っていた部分が大半スッキリしました
大変ありがとうございました
0281デフォルトの名無しさん
2010/02/23(火) 11:34:14これって、分岐予測のあるコンパイラ言語でプログラムを書くときだけで
Pythonのようなスクリプト言語とは無縁な話ですか?
0282デフォルトの名無しさん
2010/02/23(火) 11:49:290283デフォルトの名無しさん
2010/02/23(火) 11:49:31他にもっと遅い部分があれば目立たないと思う
どこで時間掛かってるかを把握しておく方が重要
0284デフォルトの名無しさん
2010/02/23(火) 11:54:33連続ifくらいでは体感出来るほどの遅さにはならないことが多いと思うよ
とはいえ、オブジェクト指向的に他の良い書き方がある場合もあるので
連続ifが必ずしも良い方法だとは思わない
0285デフォルトの名無しさん
2010/02/23(火) 11:58:11連続if以外の上手い方法あったらな〜とは思う
0286デフォルトの名無しさん
2010/02/23(火) 12:11:030287デフォルトの名無しさん
2010/02/23(火) 12:33:020288デフォルトの名無しさん
2010/02/23(火) 13:02:12まだまだ先ですか?
そういうのはCでやらないとダメですか?
0289デフォルトの名無しさん
2010/02/23(火) 15:12:230290デフォルトの名無しさん
2010/02/23(火) 15:39:11キリル文字?
0291デフォルトの名無しさん
2010/02/23(火) 16:22:18CでもPascalでもいいけど、COBOLでやるのが漢ってもんだ。
0292デフォルトの名無しさん
2010/02/23(火) 16:24:090293デフォルトの名無しさん
2010/02/23(火) 20:32:35あるみたいで,utf8に変換してもpythonのプログラムを落としてしまう文字がある
どれなのかはわかんない
2chのアスキーアート沢山はられるスレのdatに処理かけると必ず止まる
0294デフォルトの名無しさん
2010/02/23(火) 21:29:040295デフォルトの名無しさん
2010/02/23(火) 21:30:59線文字BとかはUnicodeに
あるらしい
0296デフォルトの名無しさん
2010/02/23(火) 21:38:060297デフォルトの名無しさん
2010/02/23(火) 21:41:05cp932じゃなくてshift-jis使っちゃってるとか初心者にありがちなミスだし。
0298デフォルトの名無しさん
2010/02/23(火) 21:49:110299デフォルトの名無しさん
2010/02/23(火) 23:23:45落としてしまうのはしょうがない。
完全なdatを保存した状態で処理したいなら、
バイナリとしてやるか、自分で納得のいくようなカスタマイズをした文字列クラスと
各種処理関数を実装するしかない。
俺は面倒なのでreplaceしてるけど。
0300デフォルトの名無しさん
2010/02/24(水) 15:19:14それだけするならperlでもいいよね
0301デフォルトの名無しさん
2010/02/24(水) 17:56:330302デフォルトの名無しさん
2010/02/24(水) 19:01:52del(test[row,:])
としたところ
ValueError: Can't delete array elements.
となってしまいます。どのようにしたらその行を
削除することができるのでしょうか?
あとn×7の配列の一番最後に行に1×7の行列を付け足すには
どのようにしたら良いのでしょうか?
0303デフォルトの名無しさん
2010/02/24(水) 19:06:160304デフォルトの名無しさん
2010/02/24(水) 19:45:560305デフォルトの名無しさん
2010/02/24(水) 19:50:530306デフォルトの名無しさん
2010/02/24(水) 19:51:44ご自分の知識不足を棚に上げ、煽り・罵倒レスで返す方が数多く見うけられます。
そのような方々はスレの皆様を混乱させるだけでなく、
スレの雰囲気を壊しかねないのでお黙り頂き、そのままご退出ください。
また質問者は、リアルで全く役に立たない回答者に知識を披露する場を与え、
優越感と自己満足を感じさせてあげるという、大変貴重な存在です。
故に、質問者を見下した回答、あまりにも儀礼を欠いた回答は厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺重々ご承知下さい。
以上を踏まえ、各自よく調べ、よく考え、より正確な回答をするよう常に留意すること。
0307デフォルトの名無しさん
2010/02/24(水) 20:03:160308デフォルトの名無しさん
2010/02/24(水) 20:57:410309デフォルトの名無しさん
2010/02/24(水) 23:51:440310デフォルトの名無しさん
2010/02/25(木) 07:48:180311デフォルトの名無しさん
2010/02/25(木) 10:25:440312デフォルトの名無しさん
2010/02/26(金) 08:33:13でperlを部品として使えたらいいのに
0313デフォルトの名無しさん
2010/02/26(金) 08:34:370314デフォルトの名無しさん
2010/02/26(金) 09:34:37たしかそんなのあったよ
0315デフォルトの名無しさん
2010/02/26(金) 10:35:54誰か俺をリハビリしてくれ
0316デフォルトの名無しさん
2010/02/26(金) 10:50:18カルネージハート ポータブル
でもやんなさい
0317デフォルトの名無しさん
2010/02/26(金) 11:39:01宿題スレを上から順に
0318デフォルトの名無しさん
2010/02/26(金) 11:54:12""" """で括ったコメントが斜体になってすごく読みにくい。
ググったり設定いじったりやってみたのですが、変更できず。
どなたかえろい人お助けすだせえ。
0319デフォルトの名無しさん
2010/02/26(金) 12:13:31設定>pydev>Editor>Appearance color optionsで変更したいモノを選ぶ
お邪魔しました!
0320デフォルトの名無しさん
2010/02/26(金) 12:23:030321デフォルトの名無しさん
2010/02/26(金) 12:41:16そもそもJavaに最適化されてる時点で
0322デフォルトの名無しさん
2010/02/26(金) 12:46:29Eclipse+Pydevの他にある?
それないと話にならないし全く使いものにならない。
原始時代じゃないんだよ。
0323デフォルトの名無しさん
2010/02/26(金) 13:40:510324デフォルトの名無しさん
2010/02/26(金) 13:45:010325デフォルトの名無しさん
2010/02/26(金) 13:55:07PyScripter (ほぼ標準)
どっちも出るけど?
0326デフォルトの名無しさん
2010/02/26(金) 14:10:00> PythonWin (標準)
これは使った事ないから知らんが、
> PyScripter (ほぼ標準)
できるんか?
設定方法教えれ
0327デフォルトの名無しさん
2010/02/26(金) 14:46:22ってのは
http://iup.2ch-library.com/i/i0059504-1267162966.jpg
こういう事だからね。
その点踏まえて再レスよろ
ericはインスコ面倒そうだから試してないけど、できるの?
0328デフォルトの名無しさん
2010/02/26(金) 14:53:120329デフォルトの名無しさん
2010/02/26(金) 14:55:120330デフォルトの名無しさん
2010/02/26(金) 15:05:490331デフォルトの名無しさん
2010/02/26(金) 15:34:000332デフォルトの名無しさん
2010/02/26(金) 15:54:11そんなに酷いの?
0333デフォルトの名無しさん
2010/02/26(金) 15:56:15あーオレもいんてりせんす欲しいわー。
VisualBASICでいんてりせんすだと、
本当に何も覚えて無くても書けるからな。
0334デフォルトの名無しさん
2010/02/26(金) 17:36:340335デフォルトの名無しさん
2010/02/26(金) 17:51:20んで、ericはできるの?
んで、PythonWinはできるの?
んで、PyScripterはできるの?
何で消えるの?できるかできないかレスしてから消えろ
0336デフォルトの名無しさん
2010/02/26(金) 18:06:53日本語通るようになってるな。
0337デフォルトの名無しさん
2010/02/26(金) 18:55:100338デフォルトの名無しさん
2010/02/26(金) 19:48:26みんなActivePython入れてるの?
0339デフォルトの名無しさん
2010/02/26(金) 20:11:350340デフォルトの名無しさん
2010/02/26(金) 21:01:21使ってみればわかるけど特にひどいところはないよ。
むしろwxモジュールを使ったコードを問題なく直接実行できたり(PyScripterでは固まる)
Google App Engine開発向けのプラグインが用意されていたり良いところも多い。
eclipseがいやだって人は起動時間が長いのが不満なんだろう多分。そこで常時起動ですよ。
emacs使いだってやってることだ。
0341デフォルトの名無しさん
2010/02/26(金) 21:08:55ほんのちょっと触っただけだけど、不満なところは、
既存のプロジェクトを pydev から扱うときの
正しい手順が判らなくて勝手に __init__ を作られたことと、
Ctrl + / でコメントアウトしたら # が行頭に追加されてしまうところと、
既存のファイルを修正したときに、元々の改行文字を無視して設定した
改行文字を使ってしまうところ。
設定したり慣れたりしたら良いんだろうけど、動的型付け言語では正確な
コンテキスト補完はできないんだし、やっぱり手になじんだエディタでいいやって
なっちゃう。
0342デフォルトの名無しさん
2010/02/26(金) 21:13:38何千行もの関数やメソッドをストレスなく作って後悔するから今のままでいいや
0343デフォルトの名無しさん
2010/02/26(金) 21:13:59こういった何と戦ってるのか分からない落ち武者が多いところもマイナスかな。
いわゆる統合環境の洗脳
0344デフォルトの名無しさん
2010/02/26(金) 21:23:470345デフォルトの名無しさん
2010/02/26(金) 21:26:17インテリセンス無かったら無かったで対話環境でhelp()使うかマニュアル読むんだが
関数とかメソッドの引数の順番とか暗記するのが普通なの?
0346デフォルトの名無しさん
2010/02/26(金) 21:33:56vim のそばで IPython を常時起動。
試しながら、動かしながら書く。
0347デフォルトの名無しさん
2010/02/26(金) 21:36:110348デフォルトの名無しさん
2010/02/26(金) 21:39:25そすか
eclipse使ってるんだがそんなに使い勝手悪くないと感じてるから
これが使いものにならないと言い切れる環境って何なのか気になったんだ。トン
0349デフォルトの名無しさん
2010/02/26(金) 21:39:34. を書いてからタブを打つと出ないよ。
ある程度空気読んで補完してくれる。
設定でOFFにできるかは知らない。
0350デフォルトの名無しさん
2010/02/26(金) 21:43:36おお本当だ。ありがとう。
0351デフォルトの名無しさん
2010/02/26(金) 22:17:240352デフォルトの名無しさん
2010/02/26(金) 22:18:400353デフォルトの名無しさん
2010/02/26(金) 22:23:350355デフォルトの名無しさん
2010/02/26(金) 22:26:28古代技術懐古厨か?(笑)
原始人はマンモスでも倒してろwww
0356デフォルトの名無しさん
2010/02/26(金) 22:39:480357デフォルトの名無しさん
2010/02/26(金) 22:52:16編集は流石にvimだけど
0358デフォルトの名無しさん
2010/02/26(金) 22:52:26無能なお前はJavaだけやってろや
0359デフォルトの名無しさん
2010/02/26(金) 23:02:44立派な刀と鎧を持ちつつ精神論を垂れながら、
鉄砲隊に一撃であっけなく倒される役柄www
0360デフォルトの名無しさん
2010/02/26(金) 23:04:55絶対OSやコンパイラみたいなシステムは作ったりしないようにね
迷惑だ
0361デフォルトの名無しさん
2010/02/26(金) 23:07:42一度 IPython で動かしながら開発してみたら?
Eclipse+Javaだとメソッドのドキュメントが見えるだけだけど、
IPythonならそのまま実行してみて結果が予想通りだと確認まで
してからコーディングできるよ。
pydevだとメソッド表示はJavaほどにはできないけど、IPythonなら
実際にそのオブジェクトがあるから完璧に表示できる。
0362デフォルトの名無しさん
2010/02/26(金) 23:12:21Vim使いだが、うぜーしおせーからほとんど使わんな
おむに補完
0363デフォルトの名無しさん
2010/02/26(金) 23:46:30os.listdir(path)がos.pyに見当たらないんですけど、
どこにありますか?
0364デフォルトの名無しさん
2010/02/26(金) 23:55:070365デフォルトの名無しさん
2010/02/27(土) 00:22:110366デフォルトの名無しさん
2010/02/27(土) 00:55:49windowsはここのバイナリと入れ替えないと動かんのな。
ttp://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/
0367デフォルトの名無しさん
2010/02/27(土) 02:30:17ThreadingMixInなHTTPServerとあわせて使ってみたけどデータがおかしくなっちゃう
0368デフォルトの名無しさん
2010/02/27(土) 02:43:010369デフォルトの名無しさん
2010/02/27(土) 02:50:28実行環境はPython2.6.3
0370デフォルトの名無しさん
2010/02/27(土) 08:31:03だせーっすよwww
0371デフォルトの名無しさん
2010/02/27(土) 10:22:22ゲリラ戦になるだろうな。
サックリと喉を掻っ切られる
0372デフォルトの名無しさん
2010/02/27(土) 11:05:210373デフォルトの名無しさん
2010/02/27(土) 14:42:01どこにpspファイルを配置してみても、カレントディレクトリが "/" になるのは仕様?
なにか設定が足りないのかな
0374デフォルトの名無しさん
2010/02/27(土) 15:16:340375デフォルトの名無しさん
2010/02/27(土) 15:58:41ハンドラに設定したスクリプトが実行されて、そいつがpspファイルを読み込んでるから、カレントはハンドラになるんとちゃうか
0376デフォルトの名無しさん
2010/02/27(土) 15:59:31mod_pythonというよりApacheの設定では?
os.chdir()してからpspかければよかったはず。
from mod_python import psp
exec psp.parsestring(xxx)
こんなんだっけ?
0377デフォルトの名無しさん
2010/03/02(火) 23:43:260378デフォルトの名無しさん
2010/03/02(火) 23:51:540379デフォルトの名無しさん
2010/03/03(水) 02:35:38参考までに教えてください
0380デフォルトの名無しさん
2010/03/03(水) 02:52:390381デフォルトの名無しさん
2010/03/03(水) 04:51:130382デフォルトの名無しさん
2010/03/03(水) 05:05:580383デフォルトの名無しさん
2010/03/03(水) 05:22:260384デフォルトの名無しさん
2010/03/03(水) 09:04:180385デフォルトの名無しさん
2010/03/03(水) 09:25:570386デフォルトの名無しさん
2010/03/03(水) 09:31:130387デフォルトの名無しさん
2010/03/03(水) 09:46:260388デフォルトの名無しさん
2010/03/03(水) 11:00:010389デフォルトの名無しさん
2010/03/03(水) 12:13:060390デフォルトの名無しさん
2010/03/03(水) 13:11:220391デフォルトの名無しさん
2010/03/03(水) 13:32:170392デフォルトの名無しさん
2010/03/03(水) 13:34:540393デフォルトの名無しさん
2010/03/03(水) 14:34:300394デフォルトの名無しさん
2010/03/03(水) 14:36:540395デフォルトの名無しさん
2010/03/03(水) 16:32:30ラグ無しでログの新規行を取得したい
pythonでtailもどきを作ったけど、time.sleepなどでwaitかけてやる分
スマートじゃない気がしてる
tail -fのバインディングは存在しない? 良い方法があったら教えて
0396デフォルトの名無しさん
2010/03/03(水) 16:55:110397デフォルトの名無しさん
2010/03/03(水) 17:43:030398デフォルトの名無しさん
2010/03/03(水) 17:45:21>もっと賢い方法
Unix programming FAQ見たら、select()じゃだめなんだってさ。
GNU Coreutilsのtailもsleepで監視してた。
sleepしかないんじゃね。
mzp 2008/01/05 21:36
tail -fの挙動を見てると、ファイルが更新されてから反映されるまで微妙にタイムラグがあるから、たぶんsleep使ってるんだろうなぁ、という俺の直感は正しかったわけですね。
http://d.hatena.ne.jp/mzp/20080103/tail
0399395
2010/03/03(水) 18:06:32http://code.activestate.com/recipes/576377-high-level-inotify-wrapper/
こんなのを見つけた
inotifyのbinding
使ってみようと思う
0400デフォルトの名無しさん
2010/03/03(水) 18:07:39指定すれば良いと思う
0401デフォルトの名無しさん
2010/03/03(水) 21:57:00htmlとjsわかるやつなら次のコードみるだけで何のことだかわかると思うけど
<script type="text/python">
def hoge():window.alert("Python?")
</script>
こんなのが動く
0402デフォルトの名無しさん
2010/03/03(水) 21:58:250403デフォルトの名無しさん
2010/03/03(水) 22:05:02krollとかいうとってもキモイライブラリがあって、
js/ruby/python/phpで名前空間を共有できて相互に呼び出せるみたい
0404デフォルトの名無しさん
2010/03/03(水) 22:09:52インテル入ってる?
0405デフォルトの名無しさん
2010/03/03(水) 22:11:51http://d.hatena.ne.jp/yuichi_katahira/20100219/1266592521
0406デフォルトの名無しさん
2010/03/03(水) 23:07:22iPhone/Android動かす場合はjsオンリーで書く必要があるっぽいね
デスクトップアプリならruby/python/php使えるけど。
スレ違いスマソ
0407デフォルトの名無しさん
2010/03/03(水) 23:15:48再帰検索するためだけにwalkとglob組み合わせないといけないのはどうかと思う
0408デフォルトの名無しさん
2010/03/03(水) 23:17:320409デフォルトの名無しさん
2010/03/05(金) 10:30:11http://python.com/
0410デフォルトの名無しさん
2010/03/05(金) 12:23:36(func(*args, a=1, **kwargs) みたいな。issue 3473?)
ドキュメントが間違ってるぽいんだ。
http://docs.python.org/reference/expressions.html#calls
"*" expression ["," "*" expression] ["," "**" expression]
↓
"*" expression ["," keyword_arguments] ["," "**" expression]
誰か英語ができる人、本家に連絡してたもうm(_ _)m
0411デフォルトの名無しさん
2010/03/05(金) 12:42:400412デフォルトの名無しさん
2010/03/05(金) 13:54:25"*" expression ["," "*" expression] ["," "**" expression]
ただしい
0413デフォルトの名無しさん
2010/03/05(金) 14:08:53これにマッチするんじゃない?
0414デフォルトの名無しさん
2010/03/06(土) 19:59:12ランタイムパッケージみたいなのがいるのかな?
0415デフォルトの名無しさん
2010/03/06(土) 21:33:370416410
2010/03/06(土) 21:57:38それだと func(*args1, *args2, **kwargs) になっちゃわないかな。
keyword_arguments(1つ以上のkeyword_item)が "*" expression の後ろに
置けることを示さないといけないんだけど。
>>413
それは先頭にpositional_arguments(1つ以上のexpression)が必要。
positional_arguments ["," keyword_arguments] ["," "*" expression] ["," keyword_arguments] ["," "**" expression]
の positional_arguments が無いのが
keyword_arguments ["," "*" expression] ["," "**" expression]
で、その先頭から keyword_arguments を取ったら
"*" expression ["," keyword_arguments] ["," "**" expression]
じゃないの?
0417デフォルトの名無しさん
2010/03/06(土) 22:08:12配布先がLinuxとか*BSDだったらPython入ってるので.pyだけでいいけど
Windowsだったらランタイム同梱が基本。
0418デフォルトの名無しさん
2010/03/06(土) 23:48:03"*" expression ["," keyword_arguments] ["," "**" expression]
になってるね
0419デフォルトの名無しさん
2010/03/07(日) 01:55:54えっ
0420デフォルトの名無しさん
2010/03/07(日) 03:00:06えっ?ばかじゃないの?
0421デフォルトの名無しさん
2010/03/07(日) 03:03:580422デフォルトの名無しさん
2010/03/07(日) 04:04:18バージョン違ったらどうするつもりなんだ?w
0423デフォルトの名無しさん
2010/03/07(日) 04:34:15python-updater
0424デフォルトの名無しさん
2010/03/07(日) 06:18:262.Xと3.Xで互換性が無いの知らずにはまった。
Google Data API のclient libraryが"2.6 or higher"とか書いてあったので
3.Xを使ったらさっぱりインストールできなくて。
2.6.4にしたらあっさり動いた。
てか、Linuxで「配布」するならRPMとかdebとかにして依存関係チェックさせるよなー。
0425デフォルトの名無しさん
2010/03/07(日) 06:39:28見てるこっちが恥ずかしい
0426デフォルトの名無しさん
2010/03/07(日) 06:39:39使う意味あるの?
C#はゲーム開発もできるぐらいヌルヌルなのに
0427デフォルトの名無しさん
2010/03/07(日) 06:41:43C#が世界最強さ!さようなら
0428デフォルトの名無しさん
2010/03/07(日) 08:10:09では言い方を教えてください。
0429デフォルトの名無しさん
2010/03/07(日) 08:17:12なんとか.py だけ作れば動くのが楽だよ。
でも、なんとか.vbsとかといっしょだなそれでは。
0430デフォルトの名無しさん
2010/03/07(日) 08:41:27氏ね
0431デフォルトの名無しさん
2010/03/07(日) 10:30:59ゲーム開発しか考えてないC#学生とは違うんです
0432デフォルトの名無しさん
2010/03/07(日) 10:41:09ちょっとしたスクリプトにC#使うバカはいませんもの
0433デフォルトの名無しさん
2010/03/07(日) 10:59:13なんだ。単なるレス乞食か。
ツマンネ。
0434デフォルトの名無しさん
2010/03/07(日) 11:05:39C#も興味はある。VBScript程、糞では無いと聞いているのでね。
なぜ、糞遅いPerlやPHPが沢山使われているのかわからない限りは
永遠に意味は理解出来ないと思うね。
それにゲーム開発するならC#よりC++の方が早いだろ。
なんだってC#なんてどマイナー言語なんか使うんだ? 不思議。
0435デフォルトの名無しさん
2010/03/07(日) 11:06:58色々間違えすぎだろ。
0436デフォルトの名無しさん
2010/03/07(日) 11:15:03何がどうおかしいか指摘しない限り、
その発言も「おかしさ」の一部になってしまうのだよ。
0437デフォルトの名無しさん
2010/03/07(日) 11:22:14あらためてどこがおかしいかなんて指摘するまでもないぞ
でも指摘すると
C#とVBScript(VB.netではなく)を並べて比較
PerlとPHPはメイン用途では糞遅くない
C#はメジャー言語
0438デフォルトの名無しさん
2010/03/07(日) 11:33:54それの意趣返しでふざけたこと書いてるだけだろ
いちいち突っ込んでたらキリがないお
0439デフォルトの名無しさん
2010/03/07(日) 11:34:23この分じゃManagedDirectXとかXNAとか全く理解できないだろうな
.NETがC#で書かれてるなんて言ったら嘘つき呼ばわりされそうw
0440デフォルトの名無しさん
2010/03/07(日) 11:47:20それもそうだね。失礼しました
__init__の第一引数にselfを置く仕事に戻るお
0441デフォルトの名無しさん
2010/03/07(日) 11:49:14フィールド名を入れると処理用のコードを吐くExcelとかで書いてるけど
ハッキリ言って頭脳使ってません!! なので修行のためにPythonとかいじる。
で、定時バッチ処理とか書くのには便利だなとw
Excel添付でメール出すとか、30行くらいで書けるし。
0442デフォルトの名無しさん
2010/03/07(日) 11:57:11ユーザ優先な理系はマルチプラットフォームやソースコードの可視性を優先する
0443デフォルトの名無しさん
2010/03/07(日) 12:06:230444デフォルトの名無しさん
2010/03/07(日) 12:09:340445デフォルトの名無しさん
2010/03/07(日) 12:16:200446デフォルトの名無しさん
2010/03/07(日) 12:21:210447デフォルトの名無しさん
2010/03/07(日) 13:25:04頭が悪いことは確かだね
0448デフォルトの名無しさん
2010/03/07(日) 13:30:06ゲイツの洗脳によって生み出された今世紀最大の異端児
0449デフォルトの名無しさん
2010/03/07(日) 13:34:15よくわからないけどがんばってくださいね
0450デフォルトの名無しさん
2010/03/07(日) 13:44:49そういったポンコツ使ってるなら身の程をわきまえてるだろうし。
むしろwindows、.NETなんてモノを入れれるPCならPythonの速度で悩むことなし
0451デフォルトの名無しさん
2010/03/07(日) 14:17:13.NETにも一応Monoはあるし
動的型言語がソースコードの可読性において優位かどうかは大いに疑問があるな
静的型は読み手にかなりのヒントを与えることができる
それと、「ソースコードの可読性」を重視するのはむしろ文系的という気もするが
どうよ
>>450
Pure Pythonで画像をピクセル単位で弄くったり、H264エンコーダでも書いてみなよ
Pythonはインタプリタだから論外な上に、並列計算をしようにもすぐ
GILにつかまるが、C#はC/C++の半分程度の性能は持ってるよ
0452デフォルトの名無しさん
2010/03/07(日) 14:20:440453デフォルトの名無しさん
2010/03/07(日) 14:33:16まあそういう処理はPythonよりは速いな。
C++の半分程度の性能、ってのはいいすぎだが。
0454デフォルトの名無しさん
2010/03/07(日) 14:34:44適材適所って分からないの?
なんでそんなにC#好きなの?
綺麗に書けないの?
0455デフォルトの名無しさん
2010/03/07(日) 14:42:23いや、そんなもんだよ
.NETが糞もっさりなのは、起動時にアホみたいにランタイムをロードするのと
GDI+、WinFormなどがうんこだから
>>454
別に俺はC#信者でも何でもないが
0456デフォルトの名無しさん
2010/03/07(日) 14:46:34バカ丸出しw
0457デフォルトの名無しさん
2010/03/07(日) 14:50:52疑いようもないなw
0458デフォルトの名無しさん
2010/03/07(日) 14:55:57Pythonの良さすら理解できてないと思う
0459デフォルトの名無しさん
2010/03/07(日) 14:57:40"完成"というメッセージボックスを出すアプリを作るとします
C#なら
1.ツールボックスにあるボタンをフォームにドラッグ(2秒)
2.そのボタンをダブルクリック(1秒)
3.ダブルクリックするとクリックイベントのコードの自動で画面が切り替わるので
MessageBox.Show("完成");と入力するだけ(2秒)
4.F5を押したらできあがり(1秒)
合計10秒以内にできます
3.の場合 mes まで入力したら自動でIDEが入力してくれるので
実質 ("完成") の部分だけ書けばいいだけですw
初心者でもこの工程を知っていれば同じ速度ですw
で、pythonで同じソフト作る場合、どれだけ時間がかかりますかー?
0460デフォルトの名無しさん
2010/03/07(日) 15:09:360461デフォルトの名無しさん
2010/03/07(日) 15:11:14馬鹿だなあ。
テキストエディタとコンパイラで競争するならPythonが勝つよ。
さあ、SDKとメモ帳で作ってごらん。
0462デフォルトの名無しさん
2010/03/07(日) 15:12:12from PyQt4 import QtGui as gui, QtCore as core
app = gui.QApplication([])
mb = gui.QMessageBox()
mb.setText(u"完成")
but = gui.QButton(u"完成")
but.clicked.connect(mb.show)
but.show()
0463デフォルトの名無しさん
2010/03/07(日) 15:12:50おいらモンチパイソンのホーリーグレイルが大好きだからpython選んじゃったよ
0464デフォルトの名無しさん
2010/03/07(日) 15:13:220465デフォルトの名無しさん
2010/03/07(日) 15:13:28マウス持つのすらめんどくさくてね
0466デフォルトの名無しさん
2010/03/07(日) 15:16:39Pythonしかできないなんてやつはいないだろ
必要があれば両方やれば良いだけの話
0467デフォルトの名無しさん
2010/03/07(日) 15:18:02あるのに使わないでやれっていうのは無能が言う事
ある道具は使う。もしなかったらなんてのは通用しないよ
0468デフォルトの名無しさん
2010/03/07(日) 15:18:39俺はPythonが好きだしC#も好きだった
0469デフォルトの名無しさん
2010/03/07(日) 15:19:440470デフォルトの名無しさん
2010/03/07(日) 15:20:41こんだけ打たなきゃいかんというのがね。
. とか打っただけで候補ずらり出るべきw
0471デフォルトの名無しさん
2010/03/07(日) 15:21:250472デフォルトの名無しさん
2010/03/07(日) 15:25:170473デフォルトの名無しさん
2010/03/07(日) 15:25:181. IPython
今時は、タイプしている時間よりリファレンス読んでいる時間の方が長い。
実際に動かして動作を確認しながらライブラリの使い方を調べられる
強力なインタラクティブシェルにより、開発生産性が大きく上がる。
MonoについてくるC#のインタラクティブシェルはIPythonに比べて貧弱すぎる。
2. クロスプラットフォーム
たとえば >>459 くんのVC#はWindowsでしか動かない。
Monoなんて標準で入っているのは一部のデスクトップLinuxだけ。
Pythonは今時Windows以外のほとんどのOSで一般的に搭載されている。
しかも、 >>459 くんご自慢のWindows.FormsかWPFは、Windows以外では
互換性の問題だらけ。GTK#は逆にWindowsで見た目も動作も悪い。
PythonはQt, GTK, wx全部完成度の高いバインディングがあるけど、
Qtとwxの.NETバインディングは完成度が低い。
別に動的型付けにこだわりがないけど静的型付けでプラットフォームまるごと
素晴らしい言語が無いからPython使ってるだけで、C#ベースのコンパイル不要
インタプリタや高機能インタラクティブシェル、スクリプティング環境ができて
多くのLinuxで標準的にインストールされてQt#が良くなればC#メインになるかもな。
0474デフォルトの名無しさん
2010/03/07(日) 15:26:38インタラクティブシェルで動かしながら書いてるんで、 . 打ってタブ押したら
候補がずらりとでるけどね。
0475デフォルトの名無しさん
2010/03/07(日) 15:28:29場違いスレ違い
0476デフォルトの名無しさん
2010/03/07(日) 15:31:330477デフォルトの名無しさん
2010/03/07(日) 15:33:20from PyQt4 import QtGui as gui, QtCore as core
app = gui.QApplication([])//こういうのいちいち書かないといけないってw
mb = gui.QMessageBox()//同上
mb.setText(u"完成")//同上
but = gui.QButton(u"完成")//同上
but.clicked.connect(mb.show)//同上
but.show()//同上
このプログラムにおいて重要なのはどういった文字を表示するかである
フォームモジュールの読み込みやボタンのインスタンス化、イベントの挙動なんかを
いちいちコードで書かなければいけないのは煩わしくてありませんね
ボタンが30個あったらどうでしょう?w
表示するメッセージ部分だけ書けばいいC#と
それ以外のコードも書かなければいけないPythonとどっちが
アルゴリズムに費やする時間を多くかけられるのでしょうか?w
一目瞭然ですねw
0478デフォルトの名無しさん
2010/03/07(日) 15:34:060479デフォルトの名無しさん
2010/03/07(日) 15:35:29正直手書きでも大して変わらんと思う
using System.Windows.Forms;
class T {
public static void Main() {
var form = new Form();
var button = new Button();
button.Text = "完成";
button.Click += (sender, e) => MessageBox.Show("完成");
form.Controls.Add(button);
Application.Run(form);
}
};
0480479
2010/03/07(日) 15:36:240481デフォルトの名無しさん
2010/03/07(日) 15:42:480482デフォルトの名無しさん
2010/03/07(日) 15:42:57>ボタンが30個あったらどうでしょう?w
キミは30回ボタンをポチポチ並べるの?
Pythonにはループがあるからボタン100個並べるのも簡単なんだ。
from PyQt4 import QtGui as g, QtCore as c
app = g.QApplication([])
form = g.QWidget()
mb = g.QMessageBox()
mb.setText(u"完成")
layout = g.QVBoxLayout()
form.setLayout(layout)
for i in xrange(100):
b = g.QPushButton(str(i))
b.clicked.connect(mb.show)
layout.addWidget(b)
form.show()
app.exec_()
0483デフォルトの名無しさん
2010/03/07(日) 15:45:30そんなど素人みたいな書き方しませんしw
わざわざ見にくく書くなんて陰湿ですねw
インデントも自動でやってくれるのであんな感じにはなりません
わざわざある道具を使わないで
全部手書きで各意味あるんですか?w
その中で実際に手書きする部分は
MessageBox.Show("完成");だけ
それ以外は自動で生成するでしょw
0484デフォルトの名無しさん
2010/03/07(日) 15:45:43>//←PyQt4で作成して保存する作業時間が省かれてます
PyQt4で作成してという意味がわからないけど、テキストエディタ開いて保存する時間は、
VC#を立ち上げて新規プロジェクトを作成する時間よりも早いと思うよ?
0485デフォルトの名無しさん
2010/03/07(日) 15:46:310487デフォルトの名無しさん
2010/03/07(日) 15:47:090488デフォルトの名無しさん
2010/03/07(日) 15:47:31ただボタンが並んでるだけじゃないw
そんなアプリみたことありますかー?w
0489479
2010/03/07(日) 15:49:36君は知らないかもしれないが、ダイアログエディタで静的にGUIを生成するのではなく
動的にGUIを生成するように実装されているプログラムは結構ある
例えばfoobar2000を触ってみるといい
0490デフォルトの名無しさん
2010/03/07(日) 15:50:150491デフォルトの名無しさん
2010/03/07(日) 15:50:26IronPython使ったら >>473の利点が無くなるから、別にC#で良いんだよ。
>>459
IronPythonでIPythonが動くようになって、Windows.FormsがLinux上でも
Mac上でも完全に動くようになって、.NET製のコマンドラインツールがコンマ1秒で
起動できるようになってから出直して。
0492デフォルトの名無しさん
2010/03/07(日) 15:52:37一応言っておくけど、Qtにはマウスでダイアログやフォームをデザインする
VC#みたいなツールもついてくるからね。もちろんGTKにもwxにもある。
起動してマウス握るよりもvim上で書いた方がストレス少ないし2chに貼りやすいから
あえて全部プログラムで書いてるだけ。
0493デフォルトの名無しさん
2010/03/07(日) 15:53:01糞UIじゃ誰もやりませんよw
ほんと個人でほそぼそとやる程度w
だったらクロスプラットフォームもクソもあったもんじゃないw
Pythonの利点てなんですか?まったく見えてこないんですけど
PCユーザーの大部分がWindows使っているのに
ほんと1%のlinuxユーザーのためにわざわざPython覚える意味あるんですか?
0494デフォルトの名無しさん
2010/03/07(日) 15:54:08だからさっさと病院逝けよ
0495デフォルトの名無しさん
2010/03/07(日) 15:55:160496デフォルトの名無しさん
2010/03/07(日) 15:56:18デスクトップマシンの99%がWindowsでも、キミがブラウザや携帯電話から
利用しているサービスはLinuxで動いていることもあるんだよ。
仕事や趣味で普段からLinuxやMacを使っている人には、Windows以外では
手足を縛られる言語は魅力的に見えないんだよ。
0497デフォルトの名無しさん
2010/03/07(日) 15:59:310498デフォルトの名無しさん
2010/03/07(日) 16:00:01起動が遅いってpcショボイんじゃないのw?
起動が早くても処理が遅いPythonのほうが
ストレスフルだわw
>>496
つまり仕事でやってるひとだけでしょw
WudowsユーザーやPC初心者の人がPythonやる価値なしとw
0499デフォルトの名無しさん
2010/03/07(日) 16:00:28まぁGUIの静的なコンポーネントをいちいちコーディングするのはマゾくらいだろうけど
0500デフォルトの名無しさん
2010/03/07(日) 16:03:300501デフォルトの名無しさん
2010/03/07(日) 16:04:48Pythonを習得することで色んなジャンルの開発に手を出せるってこと。
0502デフォルトの名無しさん
2010/03/07(日) 16:05:33app = QtGui.QApplication([])
mb = QtGui.QMessageBox()
mb.setText(u'完成')
btn = QtGui.QPushButton(u'押せ')
btn.connect(btn, QtCore.SIGNAL('clicked()'), mb.show)
btn.show()
0503デフォルトの名無しさん
2010/03/07(日) 16:07:44会社でもwindowsの人で
プログラミングはじめようとしている人に
どの言語を勧めますか?
というより、Pythonやっている人で
上記のような人いますか?
0504デフォルトの名無しさん
2010/03/07(日) 16:07:48はいはいそうですね。ずっとWindowsしか使わないで良いと思ってる初心者が
デスクトップアプリを始めるにはC#の方が適していますね。
俺はLinuxもWindowsも使うんで現状ではデスクトップアプリ作るのにもPython
使ってるけど、.NETがLinuxでもマトモになってIPythonのC#版が出れば
デスクトップアプリもC#で作るかも。
あと、Pythonの処理速度の遅さがストレスになる事はないよ?
画像処理とかCPU食うところは全部C言語で実装されているor実装するから。
0505デフォルトの名無しさん
2010/03/07(日) 16:08:43PyQt4.7になって、シグナルの使い方がPythonicになったよ
btn.clicked.connect(mb.show)
でいける。
0506デフォルトの名無しさん
2010/03/07(日) 16:09:27GUI作りたいとかじゃなきゃ迷わずPythonかRuby
0507デフォルトの名無しさん
2010/03/07(日) 16:14:41基地外が涌いてうざすぎ
0508デフォルトの名無しさん
2010/03/07(日) 16:16:06それはわかるよ
linuxも使っているならおれもPythonやるだろう
移植作業なんて面倒だからな
で、linux使っているならPC初心者ではないわけで
初心者にわかりやすい言語としてPython勧めるなんてどういうこと?
って思うんだよ。英語も理解出来ないとまともにプログラミングできないしね
>>504
1000のテキストファイルから正規表現で文字列検索するなら
Windows上でC#とPythonどっちが速いですか?
0509デフォルトの名無しさん
2010/03/07(日) 16:16:100510デフォルトの名無しさん
2010/03/07(日) 16:18:020511デフォルトの名無しさん
2010/03/07(日) 16:20:57ある限度を超えると英語ができなきゃいけないのは.NETもPythonも一緒
0512デフォルトの名無しさん
2010/03/07(日) 16:21:22PC初心者じゃなくてもプログラミングは初心者という事はあるでしょ?
あと、プログラミングに興味を持っている初心者には、Windows以外の
OSに興味を持っている人も居るでしょ。
あとは、やっぱりIPython。
ドキュメントを読むだけじゃなくて、実際に動作させて結果を確認しながら
プログラムを書けるのは、初心者にも易しいし、初心者じゃなくても慣れてない
大きいライブラリを使うときに楽。
0513デフォルトの名無しさん
2010/03/07(日) 16:22:25C#を捨ててまでやる価値が果たしてあるのかということが知りたいわけ
ここにいるひとは日常趣味として
どういうソフトをPythonで作っているのか知りたい
・ファイルや文字列検索しそのファイルを開くアプリ
・他のソフトを操作するためのAPIを利用したアプリ
・吉里吉里みたいなアプリ
・UMLチックなメモ的なアプリ
・画像ビューアー
・CravingやIrvineのような動画、画像ダウンローダー
例えばこういうソフトをWindows用オンリーで開発することになったとして
C#とPythonの2択だったとしてどちらの言語使いますか?
0514デフォルトの名無しさん
2010/03/07(日) 16:23:02ipython -q4thread みたいにしないといけない。
wx なら -wxthread, gtkなら -gthread。
Linuxなら普通にipythonでおk
0515デフォルトの名無しさん
2010/03/07(日) 16:24:550516デフォルトの名無しさん
2010/03/07(日) 16:25:23俺はPythonに慣れているし、いろいろなAPIの挙動をIPythonで手探り
しながらじゃないとWindowsアプリ書けないから、やっぱりPythonかな。
でも、その条件で他人に勧めるならC#だよ。
0517デフォルトの名無しさん
2010/03/07(日) 16:25:50http://pc12.2ch.net/test/read.cgi/tech/1266844916/192
だからさっさと病院逝けよ
0518デフォルトの名無しさん
2010/03/07(日) 16:26:23いわゆるアプリはもちろんC#で書くだろうな。
Windowsとプログラム言語の距離が小さいのがC#で、
頭脳とプログラム言語の距離が小さいのがPythonなんだよ多分。
0519デフォルトの名無しさん
2010/03/07(日) 16:27:320520デフォルトの名無しさん
2010/03/07(日) 16:27:34実行しながら〜
実行中でも変更〜
ここがPythonの利便性についてよく語られているけど
それがよくわからないんだよね
C#でも小規模なら一瞬でコンパイルできる
まあ1+2がすぐ表示されたのは感動したけどね
C#なら
Console.Writeline(1+2);
だから
0521デフォルトの名無しさん
2010/03/07(日) 16:29:27Pythonなら半年触らないでいても書けるだろうけど
どっちもいい言語だから片方とかいわず両方やったらいい
んで使い分けたらいい
>>520
WriteLineじゃね
0522デフォルトの名無しさん
2010/03/07(日) 16:30:28プログラミングの初心者に勧めてるんだよ。
最初にGUIをIDEしちゃうと、ループ処理すら書けないポンコツプログラマになっちゃうんだよ。
なによりpythonは学習用言語としての実績があるし、GoogleからBitCometなんてのもPython使ってるし。
0523デフォルトの名無しさん
2010/03/07(日) 16:33:33いまじゃDropBoxの方が有名だけどな。
あとはバージョン管理システムで今人気の git, hg, bzr のうち二つはPythonで
書かれているとか。
C#で書くと、コマンドのレスポンスが遅くてコマンドライン派に受け入れられなさそう。
0524デフォルトの名無しさん
2010/03/07(日) 16:34:13じゃあとりあえず、もうしばらくPythonの勉強してみるわk
非常に参考になったから
またくるわノシ
0525デフォルトの名無しさん
2010/03/07(日) 16:36:550526デフォルトの名無しさん
2010/03/07(日) 16:38:110527デフォルトの名無しさん
2010/03/07(日) 16:51:42Pythonじゃ我慢できないほど遅い処理は、どうせC#でも遅いからC++で書く。
>>508
>1000のテキストファイルから正規表現で文字列検索
grep使えば。
速度なんて書いてみないと分からんが、どっちもそこまで大きな差はない気がするぞ。
>初心者にわかりやすい言語としてPython勧めるなんてどういうこと?
わかりやすくないか?
ツールにだっこにおんぶしてもらわないと簡単なGUIすら作れない人がいるような難解言語よりは。
>英語も理解出来ないとまともにプログラミングできないしね
その程度の英語すら読めないとか、バカなんじゃないの?
ていうか日本語ドキュメントもそれなりには充実してるし、ある程度以上になると英語ドキュメント当たらないといけないのは大抵の言語で一緒だろ?
日本語ドキュメントが一番詳しそうなのは、Rubyとなでしこくらいだろ。
0528デフォルトの名無しさん
2010/03/07(日) 16:53:190529デフォルトの名無しさん
2010/03/07(日) 16:57:30今度来たらRuby勧めてみる。
0530デフォルトの名無しさん
2010/03/07(日) 17:10:49どうせ話聞かないんだし
0531デフォルトの名無しさん
2010/03/07(日) 17:13:420532デフォルトの名無しさん
2010/03/07(日) 17:16:11http://creators.xna.com/ja-JP
0533デフォルトの名無しさん
2010/03/07(日) 17:27:380534デフォルトの名無しさん
2010/03/07(日) 17:29:460535デフォルトの名無しさん
2010/03/07(日) 17:35:51いい加減マルチするのやめれ
0536デフォルトの名無しさん
2010/03/07(日) 17:43:28変数名にintとかstrつけちゃうわけ?
名前空間がファイルごとって
大規模な開発になったら変数名がものすごく長くなりそうw
0537デフォルトの名無しさん
2010/03/07(日) 17:50:38をディスるのはやめろ
0538デフォルトの名無しさん
2010/03/07(日) 18:02:58変数自体に型がない。値には型がある。
C言語ではint i;という風に宣言したらiにはint型の値しか入れられないが、
pythonでは型宣言は不要でiに整数の値を入れた後に文字列の値と置き換えることもできる。
名前でどんな値を入れるか工夫するようなスタイルとは全く違うw
0539デフォルトの名無しさん
2010/03/07(日) 18:04:190540デフォルトの名無しさん
2010/03/07(日) 18:09:11動的型だからってそういう頭の悪い使い方をするのは感心できないな。
自分の場合、
インターフェース重視のプログラミングをして、行き着く先がTypeErasureみたいな黒魔術なんだったら
最初から静的型などいらぬ、ってノリだなぁ。
0541デフォルトの名無しさん
2010/03/07(日) 18:14:030542デフォルトの名無しさん
2010/03/07(日) 18:15:45kwsk
0543デフォルトの名無しさん
2010/03/07(日) 18:16:25もっとMonoにがんばってもらわないとまだPythonの置き換えにはならないな。
遠い将来にはIronPython+C#がCPython+C言語よりも便利になってるかなぁ。
0544デフォルトの名無しさん
2010/03/07(日) 18:29:28C#でもできますね
0545デフォルトの名無しさん
2010/03/07(日) 18:34:50あんたは啓蒙本の読みすぎw
もっと手動かしなさい
0546デフォルトの名無しさん
2010/03/07(日) 18:36:04Type Erasureって何かと思ったらboost.functionで使ってる技術なのか
確かにC++はboost.functionみたいなものを使ってようやく
C#のデリゲートに似たことが実現できる言語だからなあ
静的型でも、OCamlやHaskellだと、C++系列のnominalなsubtypingとはまた全然
違うんじゃないかな
0547デフォルトの名無しさん
2010/03/07(日) 18:40:35関数やメソッドのパラメータの型が判らないことにいらつく
書かれている動作の説明からどんな型のデータを渡せば良いのか推測するしかない
ちゃんとどんなオブジェクトを渡されることが期待されているのかを明記するか
サンプルソースでも付けてもらわないと結局色々試行錯誤しなきゃいけない
0548デフォルトの名無しさん
2010/03/07(日) 18:43:350549デフォルトの名無しさん
2010/03/07(日) 18:46:350550デフォルトの名無しさん
2010/03/07(日) 18:51:560551デフォルトの名無しさん
2010/03/07(日) 18:53:26http://www.tetteke.tk/
0552デフォルトの名無しさん
2010/03/07(日) 18:53:26http://www.python.jp/doc/2.5/lib/node151.html
ここの
Parser().parsestr(s)
の戻り値が
http://www.python.jp/doc/2.5/lib/module-email.message.html
これだってすぐに気付くか?
あらかじめ知ってないと無理だろ?
0553デフォルトの名無しさん
2010/03/07(日) 18:54:42作ったからどうする、ってなるから作らないわけで。
0554デフォルトの名無しさん
2010/03/07(日) 18:57:17Pythonのドキュメントがそんなによく書かれてるとは俺も思わんな
もっとも、その手のはREPLで試してdir()とかhelp()とかtype()とかやれば大抵は十分だ
まあ最後はソースだがなw
0555デフォルトの名無しさん
2010/03/07(日) 19:02:170556デフォルトの名無しさん
2010/03/07(日) 19:08:263.X系でJavaや.NETと同様の方針を採ったのですっきりしたが
いずれにせよ今はタイミングが悪い
経験的にはドキュメント/仕様からのトップダウンじゃなくて
REPLで試すなりソース読むなり、手を先に動かしたほうがよっぽど早いな
Pythonの場合
付き合い方がよくも悪くもハッカー的というか
0557デフォルトの名無しさん
2010/03/07(日) 19:25:07Pythonのマニュアルらしい書き方じゃないか
上から順に読み物になってるからParserクラスに書かれてる説明をちゃんと理解しないとメソッドは使えない
理解したところで使っていくうちによく分からないことが積もり積もってソース見て親クラス直接触ったり自分で実装しないと痒いところまで手が届かない
urllib, urllib2おまえのことだ
0558デフォルトの名無しさん
2010/03/07(日) 19:53:24Python製ファイラって??
0559デフォルトの名無しさん
2010/03/07(日) 19:57:18不覚にもフイタ
0560デフォルトの名無しさん
2010/03/07(日) 19:57:55C#なら一行でできるようなことがPythonだと
どっかからモジュール落としてきて
英語読んで書き込まなきゃならない
勉強がてらにC#で作ったクリップボード監視するソフトを
移植しようとしたが即効で詰まったわww
一体何に使えるんだよwwこの糞言語w
0561デフォルトの名無しさん
2010/03/07(日) 20:05:06>まあ最後はソースだがなw
結局色々試行錯誤しなきゃいけないだろ
0562デフォルトの名無しさん
2010/03/07(日) 20:10:55.NETってCRC32すら入ってねえのかよwwwしんじられなあいwwww
まで読んだ
0563デフォルトの名無しさん
2010/03/07(日) 20:12:010564デフォルトの名無しさん
2010/03/07(日) 20:13:13>試行錯誤
RubyもPythonも初心者むけじゃなくて
実際に動作させて結果を確認しながら
プログラムを書ける人むけ
0565デフォルトの名無しさん
2010/03/07(日) 20:13:52糞言語ってことだけわかった
.netに帰りますノシ
0566デフォルトの名無しさん
2010/03/07(日) 20:15:280567デフォルトの名無しさん
2010/03/07(日) 20:22:020568デフォルトの名無しさん
2010/03/07(日) 20:24:480569デフォルトの名無しさん
2010/03/07(日) 20:25:02それが仕様なのか処理系依存なのか未定義動作なのか不安が拭えないんだけど、
そういうのはPythonではないの?
それにドキュメントに書いてないことに依存するとバージョンアップで互換性無くなりそうで怖いんだけど
0570デフォルトの名無しさん
2010/03/07(日) 20:27:530571デフォルトの名無しさん
2010/03/07(日) 20:30:12マカやlinuxユーザーがかわいそうですw
あれやるにはあれインストールしろ
これやるにはこれインストールしろ
importimportimport wwwwwwwwwwww
めんどくせww
C#なら初めからオールインワン^^
何でも手軽にできちゃいます!
しかも実行速度はC++の8割ほど確保できます
0572デフォルトの名無しさん
2010/03/07(日) 20:30:31心配しなくても互換性なんか担保されてないし
バージョン3は思いっきりbreaking changeだ、安心しろ
0573デフォルトの名無しさん
2010/03/07(日) 20:33:01Cをやってたら分かると思う
0574デフォルトの名無しさん
2010/03/07(日) 20:33:10ちょっとづつ実行しながらじゃないとプログラミング組めないなんて
キャパが足りない低脳向け言語だね
0575デフォルトの名無しさん
2010/03/07(日) 20:34:280576デフォルトの名無しさん
2010/03/07(日) 20:35:40釣れますか
0577デフォルトの名無しさん
2010/03/07(日) 20:35:48彼が言いたいのは、REPLで動作確認したからいい、でいいのかってことじゃないのかな
まあ10年20年のスパンで自分のコードを活かし続けたいんなら
Pythonなんか使うな
それは間違いない
0578デフォルトの名無しさん
2010/03/07(日) 20:41:25C++とBoostとICU+どこかのGUI入れればある程度のことはできるよ。
0579デフォルトの名無しさん
2010/03/07(日) 20:43:00どこからインストールできるんだよw
そんな情報どこにもないしw
あーめんどくせ、やめだやめだ!
こういうプログラムと関係ないところで時間かけなきゃならないって
糞面倒くさいことやってらんねーわw
それに比べてC#なら即効でチュートリアルが大量に見つかるし
何もインストールする必要がない
こうなったら極力w32APIを使わないような
リファレンスに乗ってるしょぼい関数使ったアプリを作るしかないな
あーつまんねw
まさかクリップボードすらまともに使えないとわなーw
0580デフォルトの名無しさん
2010/03/07(日) 20:43:44おまえさっきまで5割っつってただろ
0581デフォルトの名無しさん
2010/03/07(日) 20:46:200582デフォルトの名無しさん
2010/03/07(日) 20:48:410583デフォルトの名無しさん
2010/03/07(日) 20:49:190584デフォルトの名無しさん
2010/03/07(日) 20:53:50クリップボードはGUIライブラリについてないか
Python標準添付で無いだけで
あと両刀じゃないかと
0585デフォルトの名無しさん
2010/03/07(日) 20:56:13│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0586デフォルトの名無しさん
2010/03/07(日) 20:59:090587デフォルトの名無しさん
2010/03/07(日) 21:04:030588デフォルトの名無しさん
2010/03/07(日) 21:08:010589デフォルトの名無しさん
2010/03/07(日) 21:08:210590デフォルトの名無しさん
2010/03/07(日) 21:08:47>>552
それは若干日本語訳の問題だな。英語なら message object と書いてあって、
同じパッケージにMessageクラスであることを表現している。
日本語訳するときには「Message型のオブジェクト」とするべきだけど、
まぁ日本語化プロジェクトは人手不足なので多重チェックとかされてないから、
どうしてもこういうのが残ってしまう。
同じように「Foo型のオブジェクト」というべきところが「フーオブジェクト」と
翻訳されてしまっている部分は幾つかあるから、それが判っていれば日本語訳でも
大体なんの型なのか理解できる。
0591デフォルトの名無しさん
2010/03/07(日) 21:09:04cgiのFieldStorage・・・というかmod_pythonは鬼門だったなぁ
0592デフォルトの名無しさん
2010/03/07(日) 21:10:19互換性は担保されているよ。
アンダースコアで始まっていない物はパブリックAPIだから、いきなり無くなったり
挙動が変わったりはしない。
0593デフォルトの名無しさん
2010/03/07(日) 21:13:28print "sdd"
とやるとエラーがでるが?
0594デフォルトの名無しさん
2010/03/07(日) 21:16:380595デフォルトの名無しさん
2010/03/07(日) 21:16:570596デフォルトの名無しさん
2010/03/07(日) 21:19:48こちらへどうぞ
http://gimpo.2ch.net/test/read.cgi/kinoko/1242621789/
0597デフォルトの名無しさん
2010/03/07(日) 21:20:05もちろん同じメジャーバージョン内での話だよ。
10年に一回くらいPythonicじゃなくなったゴミの掃除をさせてやれよ。
0598デフォルトの名無しさん
2010/03/07(日) 21:29:42GUIライブラリ?なにそれ?
どこにあるの?
どうやってインストールするの?
もうね、こんな初歩的なところで時間がかかるのなんて
やってらんない
0599デフォルトの名無しさん
2010/03/07(日) 21:34:04内骨格ってやつじゃね
0600デフォルトの名無しさん
2010/03/07(日) 21:38:440601デフォルトの名無しさん
2010/03/07(日) 21:46:30http://sourceforge.net/projects/pywin32/
0602デフォルトの名無しさん
2010/03/07(日) 22:01:26気のせいだっけ
0603デフォルトの名無しさん
2010/03/07(日) 22:04:20だいたいのAPIは、unicode文字列を渡したらW系APIを使って、str文字列を渡したらA系のAPIを使うようになってる。
引数で区別できないAPIなんかは、〜Wと〜Aの2種類あったりする。
0604デフォルトの名無しさん
2010/03/07(日) 22:06:20ああ、それは頑張ってるな
というか、本体のosモジュールと似た実装か
0605デフォルトの名無しさん
2010/03/08(月) 02:01:00ちょっと教えてほしいんですけど
class hoge:
def msg(self):
print("")
このあとにインスタンス化するために
class gora(hoge):
と書きたいのだけど、クラスの定義から抜ける方法がわかりません
どうすればいいんでしょうか?
0606デフォルトの名無しさん
2010/03/08(月) 02:09:300607デフォルトの名無しさん
2010/03/08(月) 02:16:33何も入力せずに改行したらどう?
0608デフォルトの名無しさん
2010/03/08(月) 02:33:160609デフォルトの名無しさん
2010/03/08(月) 02:41:28再び>>>が出るようにしないと次のコード書けないんですよね?
0610607
2010/03/08(月) 03:01:03うーん、俺の環境では改行で行けたんだけど。。。バックスペースもムリ?
>>608
うん、 old style class が無くなったから、 class foo: は class foo(object): と同じ意味。
0611デフォルトの名無しさん
2010/03/08(月) 03:31:11エラーコード書いていただけでした
0612デフォルトの名無しさん
2010/03/08(月) 12:42:04簡単な数式を計算する電卓としては使える
0613デフォルトの名無しさん
2010/03/08(月) 12:43:150614デフォルトの名無しさん
2010/03/08(月) 12:48:140615デフォルトの名無しさん
2010/03/08(月) 12:51:190.10000000000000001
なるほど、実に便利だ
Lispなら有理数が扱えるが、xyzzyのオマケの電卓は中置記法が使えるので
Lispを知らん人でも使いやすいぞ
0616デフォルトの名無しさん
2010/03/08(月) 12:55:19rationalだっけ?
0617デフォルトの名無しさん
2010/03/08(月) 12:56:550618デフォルトの名無しさん
2010/03/08(月) 13:00:34これだとエラーがでる
0619デフォルトの名無しさん
2010/03/08(月) 13:01:220620デフォルトの名無しさん
2010/03/08(月) 13:26:34>>> 1/2
0
>>> from __future__ import division
>>> 1/2
0.5
0621デフォルトの名無しさん
2010/03/08(月) 15:30:32できるヤツはそこから二進数を学ぶ
0622デフォルトの名無しさん
2010/03/08(月) 15:32:440623デフォルトの名無しさん
2010/03/08(月) 15:52:490624デフォルトの名無しさん
2010/03/08(月) 16:11:12個人でちょろっとしたもの作るだけなんだけど
0625デフォルトの名無しさん
2010/03/08(月) 16:12:44汎用言語だから、十分向いているよ。
PyQtかwxPythonがおすすめ。
0626デフォルトの名無しさん
2010/03/08(月) 16:26:49PythonもWEBアプリ開発用として紹介されているけど
Pythonの位置づけってどういう感じなんでしょうか?
VB6.0にオブジェクト指向が追加されたものと考えていいのでしょうか?
0627デフォルトの名無しさん
2010/03/08(月) 16:45:500628デフォルトの名無しさん
2010/03/08(月) 16:52:55いやどっちも汎用言語で、別にWeb用ってわけじゃないが……
例えばASCIIのRPGツクールはRubyだしな
とは言えこの手のスクリプト言語がWebで多用されるのはそれなりに理由があって、
再コンパイル無しで多くのプラットフォームで実行できて、文字列処理が得意で、
パフォーマンスが大して重要でない(というか、ボトルネックは他にある)ことが
多いからだろう
VBとは全然別物
0629デフォルトの名無しさん
2010/03/08(月) 16:57:58どこ?ネット?
でも最近では重い処理もサーバでやるからネットもボトルネックにはならなくなってきたよね。
どこ?データベース?
でも分散memcacheみたいなのがあると相当早いからボトルネックにはならなくなってきたよね。
どこがボトルネックなんだろう??
0630デフォルトの名無しさん
2010/03/08(月) 16:59:47そうマトモに受け取られると困るがw
一般論としては、CPUとメモリの中の計算よりI/Oのほうが比べ物にならないほど
遅いでしょ
たとえそれがローカルディスクであってもだ
もちろんどれぐらいの計算をやるかによるのであって、
「大した計算は自分ではやらない」と仮定しての話だ
0631デフォルトの名無しさん
2010/03/08(月) 17:10:48よく考えたらpythonみたいな低速のインタプリタ言語を使うのはUI部分だけだよな。
バックグラウンドはHadoopみたいな分散処理系を使って
UI部分だけpythonみたいな使い分けが重要だな。
0632626
2010/03/08(月) 17:11:09インテリセンスで単語候補が出たり
デザインのよいIDE、豊富なドキュメント
すぐにできるグラフィカルな処理
Pythonはこれ以上簡単なのでしょうか?
0633デフォルトの名無しさん
2010/03/08(月) 17:12:19とりあえずその言語で2chブラウザ書いてからまたおいで。
0634デフォルトの名無しさん
2010/03/08(月) 17:12:520635デフォルトの名無しさん
2010/03/08(月) 17:16:39ttp://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e?pli=1
これを読む限りでは、googleは最近Pythonを避けつつあるようだね
Pythonはgoogleの公用語のひとつであるわけだけど、googleのように
本当に大きいプレイヤーになってくると、たとえフロントエンドで文字列の
切り貼りをさせたりデータを右から左に流すだけのアプリであっても
パフォーマンスが重要でないとはとても言えないんだろうな
0636デフォルトの名無しさん
2010/03/08(月) 17:29:500637デフォルトの名無しさん
2010/03/08(月) 17:56:110638デフォルトの名無しさん
2010/03/08(月) 17:57:420639デフォルトの名無しさん
2010/03/08(月) 18:05:120640デフォルトの名無しさん
2010/03/08(月) 18:27:190641デフォルトの名無しさん
2010/03/08(月) 18:30:19その機能を1つにまとめて、新しくプログラムを作るときに
一行で表示できるようにすることはできますか?
0642デフォルトの名無しさん
2010/03/08(月) 18:39:020643デフォルトの名無しさん
2010/03/08(月) 18:42:30無視できなさそうだな。
でも、Google内部で使う開発支援ツール群はPythonのままだろう。
0644デフォルトの名無しさん
2010/03/08(月) 19:22:39Pythonってノロノロ歩きでC#の辿った道を歩いているように思えるな
0645デフォルトの名無しさん
2010/03/08(月) 19:25:39goなんていらんからさ
0646デフォルトの名無しさん
2010/03/08(月) 19:26:050647デフォルトの名無しさん
2010/03/08(月) 19:44:440648デフォルトの名無しさん
2010/03/08(月) 19:44:550649デフォルトの名無しさん
2010/03/08(月) 19:48:48>>635は見たか?
なら、ここも見ようぜ
ttp://code.google.com/p/unladen-swallow/
0650デフォルトの名無しさん
2010/03/08(月) 20:18:08強制インテンドはすばらしぃ
0651デフォルトの名無しさん
2010/03/08(月) 20:21:01実用アプリを作ろうと思ったら環境でコードを分けることになる。
結局のところ、ある程度複雑なアプリの場合は他の言語と同じって事だ。
0652デフォルトの名無しさん
2010/03/08(月) 20:22:100653デフォルトの名無しさん
2010/03/08(月) 20:25:350654デフォルトの名無しさん
2010/03/08(月) 20:29:50まあ同意なんだが、ネイティブバイナリとそうでない言語には結構差があると思う
早い話が、ネットワーク共有されたディレクトリに置いたプログラムコードを
ホストOSを問わずそのまま実行できるというのは、管理上ものすごく便利だ
0655デフォルトの名無しさん
2010/03/08(月) 20:55:40アプリケーションが複雑さと、環境依存の部分のコードの比率との間には相関がない。
だからアプリケーションが複雑になっても「他の言語と同じ」にはならない。
Mercurial, Bazaar, Dropbox, TaskCoach, etcetc... がCygwin 無しでもWindowsで動いている。
0656デフォルトの名無しさん
2010/03/08(月) 20:58:43def msg():
a=1
print (a)
msg()
これでエラーがでない言語なんて怖くて使ってられない
0657デフォルトの名無しさん
2010/03/08(月) 21:02:32なんのためのOOだ
0658デフォルトの名無しさん
2010/03/08(月) 21:02:390659デフォルトの名無しさん
2010/03/08(月) 21:02:540660デフォルトの名無しさん
2010/03/08(月) 21:04:06global-aを生成してmsg.aを表示してるだけじゃん。
0661デフォルトの名無しさん
2010/03/08(月) 21:06:25そこが問題なんだよ
ローカル変数とグローバル変数が同じ変数名で定義できるなんて
恐ろしいことができてしまうなんて・・・
0662デフォルトの名無しさん
2010/03/08(月) 21:08:15Pythonユーザがそのコードを読むときは、msg()の中の
a=1を(set! a 1)ではなく(let ((a 1))と読むので
意図は伝わらないだろう
0664デフォルトの名無しさん
2010/03/08(月) 21:10:350665デフォルトの名無しさん
2010/03/08(月) 21:21:37http://www.python.jp/doc/release/tut/node11.html
9.2 Python のスコープと名前空間と9.4 いろいろな注意点が難解
0666デフォルトの名無しさん
2010/03/08(月) 21:34:390667デフォルトの名無しさん
2010/03/08(月) 21:36:01a=12
a=21
setAge():
print(a)
はわわわわ・・・・
0668デフォルトの名無しさん
2010/03/08(月) 21:37:53Name Hidingがある言語の方が普通だろ?
ローカルとグローバルで名前被ったらエラーとか勘弁してくれ
0669デフォルトの名無しさん
2010/03/08(月) 21:40:12それが はわわわ だと思ってるのはお前ぐらいだから
一年後に読み返して赤面する前に巣に帰ったほうがいいぞ
0670デフォルトの名無しさん
2010/03/08(月) 21:41:19動作確認してないけどこれで動くだろ
def setAge():
global a
a=12
a=21
setAge()
print(a)
0671デフォルトの名無しさん
2010/03/08(月) 21:45:230672デフォルトの名無しさん
2010/03/08(月) 21:45:49Cのプラグマとか
MFCあたりで昔多用されていたUSES_CONVERSIONマクロみたいに見える
もちろん意味も役割も全然別物だが
0673デフォルトの名無しさん
2010/03/08(月) 21:46:14そうすりゃできるのはわかっているが
グローバルとローカルが
ソースの見た目上明確に区別されてないなんて・・・
0674デフォルトの名無しさん
2010/03/08(月) 21:47:010675デフォルトの名無しさん
2010/03/08(月) 21:48:21いやあんた、Cでもグローバルとローカルの区別は
関数の中で定義したかどうか、そんだけだべ
0676デフォルトの名無しさん
2010/03/08(月) 22:03:040677デフォルトの名無しさん
2010/03/08(月) 22:03:420678デフォルトの名無しさん
2010/03/08(月) 22:11:392.6からだけど、namedtupleとかじゃダメかな?
0679デフォルトの名無しさん
2010/03/08(月) 22:22:22def setAge() {
a=12
}
a=21
setAge():
print(a)
こうしたらどう?
一応インデントで明確に区別されてるのよ
まぁ Perl の my とか JavaScript の var 的なものが欲しいと思うことはあるけどね
0680デフォルトの名無しさん
2010/03/08(月) 22:33:34困るのは、以下のような単純なケース
bar = 123
:
:
var = 456 # barのつもりだった
0681デフォルトの名無しさん
2010/03/08(月) 22:40:23varやmyを付け忘れて意図せずグローバル変数にアクセスするバグのほうが遥かに確率高いと思うんだが
0682デフォルトの名無しさん
2010/03/08(月) 22:41:48PerlやJavaScriptのように、varやmyを「つけなくてもいい」、
「つけなければグローバルになる」言語ではそうだね
0683デフォルトの名無しさん
2010/03/08(月) 22:42:000684デフォルトの名無しさん
2010/03/08(月) 22:48:45いいに決まっていると考えるし
動的型な人間は、どうせ単体テストは必要なのだから同じだと考える
両者が相いれることは無いだろうな
0685デフォルトの名無しさん
2010/03/08(月) 22:51:540686デフォルトの名無しさん
2010/03/08(月) 23:04:23def msgShow():
class Tako:
def msgShow(self,msg):
print( msg)
Ika=Tako()
Ika.msgShow("oreIka")
def msgShow(): ←ここは何?
print("CanITalk?")
msgShow()
>>>oreIka
msgShow().msgShow()
error
0687デフォルトの名無しさん
2010/03/08(月) 23:14:21msgShow()内で使えるmsgShow()関数
0688デフォルトの名無しさん
2010/03/08(月) 23:18:00pass
f.a = 'Hello'
print f.a
0689デフォルトの名無しさん
2010/03/08(月) 23:23:31何でクラスにしないの?
0690デフォルトの名無しさん
2010/03/08(月) 23:25:310691デフォルトの名無しさん
2010/03/08(月) 23:27:07def f(self):
pass
def a(self):
return "hello"
c = hoge()
print c.a()
0692デフォルトの名無しさん
2010/03/08(月) 23:27:44C使うな
0693デフォルトの名無しさん
2010/03/08(月) 23:30:37f()
f.__call__()
def g():print'b'
f.__call__, g.__call__ = g.__call__, f.__call__
f()
f.__call__()
del f.__call__
f.__call__()
なんかワクワクしてきた
0694デフォルトの名無しさん
2010/03/08(月) 23:32:090695デフォルトの名無しさん
2010/03/09(火) 01:46:34x=1000
def mymoneyis():
return x*2
money=mymoneyis()
print str(money)+"en"
0696デフォルトの名無しさん
2010/03/09(火) 02:05:100697デフォルトの名無しさん
2010/03/09(火) 02:11:16処理しちゃってるじゃん・・・
0698デフォルトの名無しさん
2010/03/09(火) 02:13:100699デフォルトの名無しさん
2010/03/09(火) 02:22:10今はなんとも思わんけど。
0700デフォルトの名無しさん
2010/03/09(火) 02:25:440701デフォルトの名無しさん
2010/03/09(火) 02:29:020702デフォルトの名無しさん
2010/03/09(火) 04:14:220703デフォルトの名無しさん
2010/03/09(火) 04:24:35書き込み時にglobal宣言しなければならないのは、
globalで同じ名前の変数が宣言されていることを知らずにglobalに上書きしてしまうのを防ぐため。
というか、プログラマは自分が見たくも触りたくないglobal変数については、そもそも知っている必要がない。
あるいは、globalを作る人が、別の関数で既に使われている名前の変数を作ってしまっても問題にならないように。
これも、プログラマは関数の内部でどんなローカル変数が使われているかなんて、知っている必要がない。
ローカル変数を明示的に宣言する文法にしてもよかったのだけど、
globalに書き込む必要があるときよりも、ローカル変数だけで済ませられるケースの方が圧倒的に多いので、
特別な処理が必要な場合にだけ、わざわざ宣言しなければならない。
読み込み時にglobal宣言しなくてもよいのは、
プログラマは自分の作っている関数については把握しているべきだし、
そしたら、ローカルで宣言していない変数を読んでいることはプログラマ自身が自覚しているはずだから。
わざわざ明示しなくても、スコープ内にない変数を読んでいるのは外のスコープにあるからに決まっている。
だから、わざわざ明示する必要はない。
0704デフォルトの名無しさん
2010/03/09(火) 04:35:35pythonならローカルCGIサーバが1行で立てられる。
多分、そんなことできる言語、他にあんまりない。
けど、1行で書けるなんてのは、偶然用意されてるライブラリに偶然やりたい処理があるってだけだ。
ちょうどその機能だけを使いたいのなら、その言語を使えばいいさ。
Python大好きな俺だって、ちょうど別言語で1行でできる処理をやりたくて、それを今後拡張する意志もなかったら、別言語使うさ。
言語のよさってのは、1行でできない処理を書くときにどれだけ楽に書けるかで決まる。
その答えがPythonかどうかは分からないが、1行で書けるからこっちの言語のが偉いとか言うのは馬鹿げている。
0705デフォルトの名無しさん
2010/03/09(火) 06:26:31つまり、プログラマはクラスの内部も
関数の内部も把握してプログラミングしなければいけないということですね
それって小規模ならいいが規模が大きくなるほどものすごく大変な作業
テレビの内部構造を理解していないとリモコンもおちおち触れないなんて
ものすごい言語ですね
どの関数が勝手にグローバルの関数や変数の値を
拾っていったか探しながら、気をつけながらやらなければいけないなんて・・・
0706デフォルトの名無しさん
2010/03/09(火) 06:33:31そういう物騒なことをしないと担保するものは何か考えたらよろし
0707デフォルトの名無しさん
2010/03/09(火) 06:41:06Pythonの恐ろしいのはエラーを吐かないこと
0708デフォルトの名無しさん
2010/03/09(火) 08:10:540709デフォルトの名無しさん
2010/03/09(火) 08:42:23どの関数がグローバル変数を書き換えるか、にくらべると、
どの関数がグローバル変数をひろったか、は重要じゃないから
合理的だろ。
だいたい、Pythonにとってはクラスも関数もモジュールもグローバル変数だ。
import os
def foo(): pass
def bar():
global os
os.listdir('.')
global foo
foo()
なんていちいち必要だなんてゾッとする
0710デフォルトの名無しさん
2010/03/09(火) 08:49:370711デフォルトの名無しさん
2010/03/09(火) 09:15:470712デフォルトの名無しさん
2010/03/09(火) 09:57:540713デフォルトの名無しさん
2010/03/09(火) 10:28:540714デフォルトの名無しさん
2010/03/09(火) 12:52:24しかも型宣言もないから意図しない動きをする
プログラムのどこからでも書き換えられる危険性があるなんて
やってられないわ
0715デフォルトの名無しさん
2010/03/09(火) 13:02:250716デフォルトの名無しさん
2010/03/09(火) 13:06:32いちいちメソッドでアクセスなんてめんどくせ
0717デフォルトの名無しさん
2010/03/09(火) 13:10:350718デフォルトの名無しさん
2010/03/09(火) 13:28:530719デフォルトの名無しさん
2010/03/09(火) 14:33:26型宣言あっても誤動作上等だし
ダックタイプ最高!!!
硬いだけが売りの言語とかゴミですwwww
0720デフォルトの名無しさん
2010/03/09(火) 14:41:50あるよw
0721デフォルトの名無しさん
2010/03/09(火) 14:42:33アクセス制御できるよw
0722デフォルトの名無しさん
2010/03/09(火) 14:43:08def x(self):
return self.__x
@x.setter
def x(self, value):
self.__x = value
0723デフォルトの名無しさん
2010/03/09(火) 14:53:580724デフォルトの名無しさん
2010/03/09(火) 14:58:15言語の構文はごくシンプルな少数のパーツから構成されるべきだと思う
0725デフォルトの名無しさん
2010/03/09(火) 15:03:08「これ一つあればなんでもできるよ」って感じのオールインワン臭がするから、
見ようによっては微妙なのかもしれないね。
0726デフォルトの名無しさん
2010/03/09(火) 15:06:35俺言語作っちまうか。
0727デフォルトの名無しさん
2010/03/09(火) 15:08:390728デフォルトの名無しさん
2010/03/09(火) 15:11:33schemeでいいや
楽しいし
0729デフォルトの名無しさん
2010/03/09(火) 15:13:40面接官「Lispやってるんですか?wwwww」
http://anond.hatelabo.jp/20100125020240
0730デフォルトの名無しさん
2010/03/09(火) 15:14:56リストしか無いんだぜ
0731デフォルトの名無しさん
2010/03/09(火) 15:18:010732デフォルトの名無しさん
2010/03/09(火) 15:19:340733デフォルトの名無しさん
2010/03/09(火) 15:30:590734デフォルトの名無しさん
2010/03/09(火) 15:33:020735デフォルトの名無しさん
2010/03/09(火) 16:45:190736デフォルトの名無しさん
2010/03/09(火) 16:46:10何気に影響力あるし
0737デフォルトの名無しさん
2010/03/09(火) 16:48:000738デフォルトの名無しさん
2010/03/09(火) 16:55:420739デフォルトの名無しさん
2010/03/09(火) 17:04:430740デフォルトの名無しさん
2010/03/09(火) 17:08:530741デフォルトの名無しさん
2010/03/09(火) 17:09:430742デフォルトの名無しさん
2010/03/09(火) 18:06:150743デフォルトの名無しさん
2010/03/09(火) 18:10:300744デフォルトの名無しさん
2010/03/09(火) 18:37:330745デフォルトの名無しさん
2010/03/09(火) 19:08:050746デフォルトの名無しさん
2010/03/09(火) 19:16:04どの言語からでも呼び出せるライブラリ仕様ができたらいいのに
0747デフォルトの名無しさん
2010/03/09(火) 19:26:56JVMとかCLRはわりとそんな感じじゃないか
0748デフォルトの名無しさん
2010/03/09(火) 21:35:570749デフォルトの名無しさん
2010/03/09(火) 21:51:030750デフォルトの名無しさん
2010/03/09(火) 22:13:530751デフォルトの名無しさん
2010/03/09(火) 22:36:290752デフォルトの名無しさん
2010/03/09(火) 22:39:400753デフォルトの名無しさん
2010/03/09(火) 22:50:410754デフォルトの名無しさん
2010/03/09(火) 23:00:090755デフォルトの名無しさん
2010/03/09(火) 23:45:050756デフォルトの名無しさん
2010/03/09(火) 23:46:15自演だろ
0757デフォルトの名無しさん
2010/03/10(水) 01:34:03規模が大きくなっても、クラスや関数を分けないのならそうなる。
Pythonは簡単な言語だが、どうしようもない馬鹿のための言語ではない。
0758デフォルトの名無しさん
2010/03/10(水) 01:40:23伝統だけで棲み分けがなされててある意味すごい
まあ、たまに同名の関数作る人がいて衝突してるが
0759デフォルトの名無しさん
2010/03/10(水) 01:42:200760デフォルトの名無しさん
2010/03/10(水) 01:55:010761デフォルトの名無しさん
2010/03/10(水) 02:21:170762デフォルトの名無しさん
2010/03/10(水) 02:35:39emacsユーザーは避けて通れないの
0763デフォルトの名無しさん
2010/03/10(水) 10:58:42タプルとクロージャ!
0764デフォルトの名無しさん
2010/03/10(水) 11:00:04肝心要の関数的consリストと末尾最適化が無い
0765デフォルトの名無しさん
2010/03/10(水) 11:02:00なんてないすか
0766デフォルトの名無しさん
2010/03/10(水) 11:10:090767デフォルトの名無しさん
2010/03/10(水) 11:20:20違うが、consリスト「だけ」あっても意味が無いからな
0768デフォルトの名無しさん
2010/03/10(水) 11:25:490769デフォルトの名無しさん
2010/03/10(水) 11:27:34このスレきもちわるい
0770デフォルトの名無しさん
2010/03/10(水) 13:12:01代数的データ型が無いのは致命的だな
0771デフォルトの名無しさん
2010/03/10(水) 13:12:43ここ女人禁制なんで出ていってください
0772395
2010/03/10(水) 13:15:560773デフォルトの名無しさん
2010/03/10(水) 13:20:15代数的データ型ってなんぞ?
Rational型みたいに、演算子オーバーロードした値型を作るのじゃだめなん?
0774デフォルトの名無しさん
2010/03/10(水) 13:22:20ダメダメ、全然ダメだ
Haskellの代数的データ型が強力すぎるのかもしれないが。
0775デフォルトの名無しさん
2010/03/10(水) 13:29:10代数っていうから演算子による演算が定義されることかと思ったよ。
さくっとWikipediaを読んで、動的型付け言語には向かない機能だと思った。
オブジェクト指向的なメソッドのオーバーライドで解決するのに比べて、
新しい機能を取り込む明確なメリットがある?
メリットが判りやすい例を示して。現在のPythonicな方法と比べて、明らかな
メリットがあるんだったら Python idea で提案できるから。
0776デフォルトの名無しさん
2010/03/10(水) 13:57:34代数的データ型はパターンマッチ&再帰的アルゴリズムとの合わせ技で
初めて力を発揮するもんだと思うが
リストや木のような再帰的データ構造を表現するのが非常に得意で
当然再帰的アルゴリズムとの相性が良い
Haskellでコンパイラのようなものが書きやすいといわれる所以だろうな
パターンマッチでは、大雑把に言えば
subtypingによるポリモーフィズムを使わず
Pythonで言えばisinstance()で分岐させる形になる
そんだけ取れば泥臭いんだが、帰納的で、形式として数学表記に近い形になる
別に静的型じゃなきゃ意味が無いってことは無いんじゃないのかな
Lispみたいになんでもリストってんじゃなくて
Pythonは動的だが型付けはむしろ強い言語なのだしな
0777デフォルトの名無しさん
2010/03/10(水) 14:12:17うーん、頻繁にほしいわけではないし、辞書を使って関数を区別するなり
クラスにメソッドを後付するなりデコレータを使うなりで解決できる問題だから、
構文レベルでサポートはしないだろうな。
検索したらPythonで実装した例が見つかった。
http://www.python.jp/pipermail/python-ml-jp/2009-January/004575.html
Python3では関数アノテーションが入ったから、これを使ってもっと使いやすい
代数的データ型用ライブラリができるかも。
まだ関数アノテーションになる前、型アノテーションと呼ばれていたころの
議論があった。
http://mail.python.org/pipermail/python-3000/2006-May/002117.html
0778デフォルトの名無しさん
2010/03/10(水) 14:16:39「あれがないじゃんプギャー」って言う人には理解できないんだろうが
0779デフォルトの名無しさん
2010/03/10(水) 14:23:19冗長だけど、やっぱり構文の構成要素を増やしてまでほしい機能じゃないな。
from collections import namedtuple
Empty = namedtuple("Empty", "")
Leaf = namedtuple("Leaf", "n")
Node = namedtuple("Node", "l r")
def depth(tree):
if isinstance(tree, Empty): return 0
if isinstance(tree, Leaf): return 1
if isinstance(tree, Node):
return 1 + max(depth(tree.l), depth(tree.r))
print depth(Node(
Node(
Leaf(1),
Leaf(2)
),
Leaf(3)
))
print depth(Empty())
0780デフォルトの名無しさん
2010/03/10(水) 14:25:18取り込んでもしっくりこないからいらないね
0781デフォルトの名無しさん
2010/03/10(水) 14:28:07インデント直すの面倒なんだよ
0782デフォルトの名無しさん
2010/03/10(水) 14:30:16データ構造と操作を分けたいならvisitorパターンになってより長くなるな。
class TreeNode(object):
def depth(self):
raise NotImplementedError()
class Empty(object):
def depth(self):
return 0
class Node(object):
def __init__(self, l, r):
self.l = l
self.r = r
def depth(self):
return 1 + max(self.l.depth(), self.r.depth())
class Leaf(object):
def __init__(self, n):
self.n = n
def depth(self):
return 1
print Node(Node(Leaf(1), Leaf(2)), Leaf(3)).depth()
print Empty().depth()
0785デフォルトの名無しさん
2010/03/10(水) 15:31:51http://codepad.org/cYZ5SaBZ
0787デフォルトの名無しさん
2010/03/10(水) 23:48:44もう少しHaskellっぽいパターンマッチとか取り込んでくれると面白いんだけど、
既存のクラス型とうまいことマッチしないか。
0788デフォルトの名無しさん
2010/03/11(木) 00:03:170789デフォルトの名無しさん
2010/03/11(木) 00:25:30Pythonしか荒らさないあたり、実は中身はRuby信者なんじゃないかと穿った見方をしてしまう。
0790デフォルトの名無しさん
2010/03/11(木) 00:26:56汚すなよ
0791デフォルトの名無しさん
2010/03/11(木) 00:27:02すでに >>782 や >>779 みたいにして同じことが実現できるから、滅多に使わない
方法をちょっとカッコ良く書くためだけに構文の追加はムリだろうね。
0792デフォルトの名無しさん
2010/03/11(木) 00:49:36デコレータとか導入してないと思うが
0793デフォルトの名無しさん
2010/03/11(木) 00:54:27デコレータはすごく広く使える一般的な仕組みで、利用場面が多い。
それに比べると代数的データ型は訴求力が弱い
0794デフォルトの名無しさん
2010/03/11(木) 01:21:58代数的データ型は単なる便利機能じゃないよ。
その言語の型システムの基盤となるようなものだよ。
だからこそ、Pythonに入るとも入れるべきとも思わないけど。
0795デフォルトの名無しさん
2010/03/11(木) 01:53:26perlのモジュールをpythonで制御するような感じ
0796793=791
2010/03/11(木) 01:55:14Haskellとかにとってはそうなのかもしれないけど、すでに動的型付けOO言語としての
型システムを持っているPythonで後付の代数的データ型を追加するとしたら、
>>779みたいなコードと等価なコードを簡潔に書くための単なる便利機能にしかならないよね。
0797デフォルトの名無しさん
2010/03/11(木) 01:59:47正規表現とかいうPythonicから程遠い代物よりも
パーサコンビネータっぽいものが綺麗に書けると嬉しいんだけど
0798デフォルトの名無しさん
2010/03/11(木) 02:14:230799デフォルトの名無しさん
2010/03/11(木) 02:47:060800デフォルトの名無しさん
2010/03/11(木) 02:57:320801デフォルトの名無しさん
2010/03/11(木) 03:00:41マルチパラダイムはできたとしても、どんな書き方しても同じ速度は無理だな。
.NETみたいに、一つの言語にとらわれずに、多数の言語から同一の中間コードを生成するってのが、現実的かなぁ。
0802デフォルトの名無しさん
2010/03/11(木) 08:16:14簡単な書き捨てテキストフィルタなら実際Rubyで良いな
ただ大きなコードはRubyで書きたくないなあんまり
0803デフォルトの名無しさん
2010/03/11(木) 09:21:530804デフォルトの名無しさん
2010/03/11(木) 14:45:510805デフォルトの名無しさん
2010/03/11(木) 15:20:37テキスト処理とwebはperl
数式処理とか複雑なのはlisp
問題はこれらをうまくくっつける方法がないこと
0806デフォルトの名無しさん
2010/03/11(木) 15:24:29何いってんの、数値計算・グラフ描画はR最強なのは揺ぎ無いだろ。
0807デフォルトの名無しさん
2010/03/11(木) 15:25:200808デフォルトの名無しさん
2010/03/11(木) 15:27:470809デフォルトの名無しさん
2010/03/11(木) 15:38:420810デフォルトの名無しさん
2010/03/11(木) 15:39:540811デフォルトの名無しさん
2010/03/11(木) 15:44:110812デフォルトの名無しさん
2010/03/11(木) 18:45:13正規表現リテラルがなかったり、Rubyにあるような文字列内で #{} で文字列の展開がないのは寂しいと感じるな。
#{} は便利だから取り入れてほしい。ちゃんと括弧内に式がかけるような感じで。
本格的なPythonプログラマは嫌がるのかもしれないけど
0813デフォルトの名無しさん
2010/03/11(木) 19:49:06(3.Xのbytesではb"foo"[0] -> 116だが、strは相変わらずで統一性がない)
せっかく文字列がシークエンスなのだから、シークエンスに対する高階関数や
内包表記が文字列に対しても統一的に便利に使えて欲しかった
sum(["a","b"],"")→エラー
map(lambda x: x.upper(), "this")→['T','H','I','S'] # "THIS"ならいいのに
str(x.upper() for x in "help") # 望みのものは得られない
もちろん''.join(....)で逃げられるけど、あまり美しくない
0814デフォルトの名無しさん
2010/03/11(木) 19:50:590815デフォルトの名無しさん
2010/03/11(木) 19:53:28'\\'
>>> print '\\'
\
↑この差はなんなんだ?どうにかなんないのか
0816デフォルトの名無しさん
2010/03/11(木) 19:54:33型変換って?
シークエンスに対して__getitem__を呼ぶと、str以外ではシークエンスではなく
シークエンスの要素が得られる
strの場合は、意味的に要素ではなく、シークエンスのスライスが得られるわけで
そこに違和感がある
mapも、入力と出力のシークエンスが対応するようになっていると便利だったろう
という話
まあジェネレータも受け入れる関係で無理なのだろうけれども
0817デフォルトの名無しさん
2010/03/11(木) 19:58:070818デフォルトの名無しさん
2010/03/11(木) 20:15:34>strの場合は、意味的に要素ではなく、シークエンスのスライスが得られるわけで
それもお前の身勝手な「違和感」が生み出す「意味」じゃないのか(www
0819デフォルトの名無しさん
2010/03/11(木) 20:22:13うん、身勝手かもしれないし、よくわからないのでPythonユーザとして
素人にstrのことを教えてほしい
「strはシークエンスである」→真
「strはXのシークエンスである」→?
「strはstrのシークエンスである」→?
最後のものは自己言及のループになってしまうので、strの定義としては
採用できないように見える
0820デフォルトの名無しさん
2010/03/11(木) 20:25:14str は 文字 のシーケンスである
文字とは長さが1の文字列である
0821デフォルトの名無しさん
2010/03/11(木) 20:27:30多分そうなるんだろうと思うが、
2行目の「文字列」とは、つまりstrのことだよね
そのstrをどうやって解決するの?
0822デフォルトの名無しさん
2010/03/11(木) 20:27:53なにに混乱しているのか判らないけど、
>>> print repr('\\')
してから、 repr() と str() の違いをリファレンスで確認したら良いと思うよ。
インタラクティブシェルで表示しているのは str() じゃなくて repr() だからね。
そうじゃないと、 '3' と 3 の区別がつかない。
0823デフォルトの名無しさん
2010/03/11(木) 20:31:06解決って何?何でそんなことする必要があるの?
例えば「文字列は文字の配列である」という言語があったとしたら、
文字はどうやって解決するの?
0824デフォルトの名無しさん
2010/03/11(木) 20:34:29その定義は全然ループしていないし、文字は文字列とは別ものだから、
単に別のところで定義されるのでは?
上の例だと、strの定義としてはループしているだけで何も解決されないよね
0825デフォルトの名無しさん
2010/03/11(木) 20:35:14変数展開は何度も出てるけど、コンパイル時に分解する仕様だと
gettextみたいに動的な文字列に対しては使えないから、限定した状況で
のみ使える仕様を増やすよりも汎用的に使える機能一つで色々カバーする
という方針のPythonでは受け入れられないんだよね。
代わりに、 .format() と template が入った。
0826デフォルトの名無しさん
2010/03/11(木) 20:37:42つTempita
0827デフォルトの名無しさん
2010/03/11(木) 20:38:21→strは長さ1の(長さ1のstrのシークエンス)のシークエンスである
→strは長さ1の(長さ1の(長さ1のstrのシークエンス)のシークエンス)のシークエンスである
本当にこんな定義なの?
変な言語だね
まあ「身勝手な」感覚なんだろうけど
0828デフォルトの名無しさん
2010/03/11(木) 20:39:48thx やってみる
0829デフォルトの名無しさん
2010/03/11(木) 20:45:24たぶん、"シーケンス"を誤解しているから違和感があるんだと思う。
シーケンスとは、イテレート、要素の取り出し、スライス, といった幾つかの操作が定義されて
いる事を言っているのであって、配列型という意味はないし、「要素型」も要求していない。
だから、「YはXのシーケンスです」という言及ができる型もあるけれど、それはYの定義ではない。
整数型が単独で整数型であるように、文字列型は単独で文字列型なの。
0830デフォルトの名無しさん
2010/03/11(木) 20:46:55そんな点のひとつやふたつはどんな言語にもある。
0831デフォルトの名無しさん
2010/03/11(木) 20:47:300832デフォルトの名無しさん
2010/03/11(木) 20:48:240833デフォルトの名無しさん
2010/03/11(木) 21:04:07ごめん、説明が足りなかった やりたいのはその逆なんだ
\単体を文字列として(つまり'\'みたいなのを表現したい)扱いたいんだが無理かな
0834デフォルトの名無しさん
2010/03/11(木) 21:11:14なら、 "\\" で \ が一つの文字列だよ。 repr すると \ がエスケープされて \\ と表示されるだけ。
0835デフォルトの名無しさん
2010/03/11(木) 21:15:36map()はともかく、sum()とstr()は違和感ないけどなあ。
sum()は__add__を要素の数だけ呼び出すから、n ** 2の実行時間なってしまう
-> 言語仕様で禁止しちゃえ、だろうし。
str()は引数としてオブジェクトを受け取るんだから、
str(1)が'1'で、str(['a', 'b'])が"['a', 'b']"でいい。これが'ab'になるのは変な感じ。
list()やtuple()は引数としてシーケンス(というかiterable)を取るんだから、
list(1)はエラー。list([1, 2])は[1, 2]。
0836デフォルトの名無しさん
2010/03/11(木) 21:25:270837デフォルトの名無しさん
2010/03/11(木) 21:27:16''.join()を使ったほうが速いので、それを使って欲しいという「気持ち」は
理解できるのだけれども、シークエンスのジェネリシティが今一歩な感じで
勿体無く見える
sum([[1,2,3],[4]],[]) → これはOK
reduce(operator.add, ["a", "b"], "") → これもOK
関係ないけど2.6のbytesはただのstrのtypedefですか?
bytes([1,2,3])
→'[1, 2, 3, 4]'
3.Xだと
b\'x01\x02\x03\x04'
になってくれる模様
Python難シス
0838デフォルトの名無しさん
2010/03/11(木) 21:27:260839デフォルトの名無しさん
2010/03/11(木) 21:29:52>>> bytes is str
True
>>> bytearray([1, 2, 3])
bytearray(b'\x01\x02\x03')
0840デフォルトの名無しさん
2010/03/11(木) 21:31:11そうすね
第一引数が型を保たない変換である場合は、止むを得ないと思う
0841デフォルトの名無しさん
2010/03/11(木) 21:44:05実行時間のオーダーが変わる場合には違うものとみなす、というか、
見た目の統一感を壊してでも速いのを用意するというのがPython流だと思う。
たとえば、
a.extend(seq)の代わりにmap(a.append, seq)と書くようにすれば、
list.extendは不要。でも前者の実行時間はn log n、後者はn。
0842デフォルトの名無しさん
2010/03/11(木) 21:51:32Python3 では完全にバイト列と文字列を区別するようになったから、
bytes の挙動を変えたんだよな。
Python2 がごちゃごちゃしてしまったのは、 unicode が後付けだから
仕方無い面もある。
0843デフォルトの名無しさん
2010/03/11(木) 21:56:24リストやタプルを入れるのも良くないんだよな。
明示的にチェックしてrejectしているのが文字列型というだけで。
0844デフォルトの名無しさん
2010/03/11(木) 22:08:45print使わずにブログラム中に'\\'と記述しても、そのまま'\\'として処理されるのはなんでだろ
0845デフォルトの名無しさん
2010/03/11(木) 22:09:390846デフォルトの名無しさん
2010/03/11(木) 22:11:47あー、インタラクティブシェルの罠にはまっているな。
インタラクティブシェルは、入力された文の結果の repr() を毎回表示している。
だから、
>>> print "foo"
foo
で foo を表示しているのは print 文で、
>>> "foo"
'foo'
を表示しているのはインタラクティブシェル。
foo.py の中に
print "foo"
"foo"
と記述すると、後ろの "foo" は何も出力しないので、print による foo 一つしか表示されない。
0847デフォルトの名無しさん
2010/03/11(木) 22:14:35和集合に + 使えないのは、あえてそうしているの?
0848デフォルトの名無しさん
2010/03/11(木) 22:20:03{1} って書けないからエラーになってるだけじゃない?それともPython3使ってる?
そもそも、sum() が >>843 の言うように数値型しかサポートして無くて、 sum([[2], [3]], [1]) が
できること自体ただの偶然だからね。
sum([[2], [3]]) してもエラーになる。
0849デフォルトの名無しさん
2010/03/11(木) 22:26:45ライブラリとか、著作権面で怖いので全部はちょっと
outmes = '\\'.join(['', 'x90', 'x3c', 'x64'])
>>846
printで何やってるかわかればいいんだが
みんなありがと、もうちょっと勉強してくる
0850デフォルトの名無しさん
2010/03/11(木) 22:27:15自己レス。
いい加減なこと書いてスマン。
http://effbot.org/zone/python-list.htm
によると、リストが小さいときはO(1)、大きくなるとO(n * n)になることもあるんだそうです。
0851デフォルトの名無しさん
2010/03/11(木) 22:33:11それで、
print outmes
したら、ちゃんと "\\" が \ と表示されるはずだよ。
0852デフォルトの名無しさん
2010/03/11(木) 22:45:290853デフォルトの名無しさん
2010/03/11(木) 22:49:28> sum([[2], [3]])
これがエラーになるのは、単にsum()の第二引数のデフォルト引数が0だからでは?
> できること自体ただの偶然だからね。
この根拠は?
随分いい加減な言語だね
0854デフォルトの名無しさん
2010/03/11(木) 22:58:340855848
2010/03/11(木) 23:51:10ただの偶然ってのは言い過ぎた。
でも、sum()が数値型を期待して設計されているから、数値型以外の動作で一貫性が無いという指摘が
的外れなのには変わりない。
数値型プロトコルの+演算子は合計を返す、シーケンス型プロトコルの+演算子はconcatenationを返すと
決められていて、C言語のAPIレベルでも PyNumber_Add と PySequence_Concatenate で分けられている。
もちろん、同じ + 演算子を通して利用している以上数値型を期待して合計しようとしているsum()に
シーケンス型を渡したら結合するのがスジで、sum()で文字列型が許されていないのは
「"".join() の方が効率良いからそっち使え」という啓蒙の意味しか無い。
0856デフォルトの名無しさん
2010/03/12(金) 00:46:10実はPython3しか使ったことがない。
setのリテラルは3からなんだね。
functools.reduce(lambda r,e: r|e, [{1},{2},{1,2,3}]) や set().union(*[{1},{2},{1,2,3}]) とかよりも
sum([{1},{2},{1,2,3}], set())でかけた方が綺麗だと思うなぁ。
setに+メソッド欲しいよう。
0857デフォルトの名無しさん
2010/03/12(金) 01:07:01だから、数値型のための sum をコンテナ型に使おうとするなって…
Number の sum としての + と Sequence の concatenation としての + 以外に、
組み込み型のsetがNumberでもSequenceでもない独自の+を実装してしまうと
混乱するだろ。 | の方が合ってるし良いじゃないか。
set().update() でいいじゃん。
0858デフォルトの名無しさん
2010/03/12(金) 01:19:57functools.reduce(operator.or_, iter_of_sets)
だな。
operatorモジュールでも、 operator.add (Number の +) と operator.concat (Sequence の +) は
区別されて別に定義されている。結局は __add__ が呼ばれるから concat の代わりに add が
使えることには変わりないんだけどね。
0859デフォルトの名無しさん
2010/03/12(金) 01:39:34まあ今更だけど
0860デフォルトの名無しさん
2010/03/12(金) 01:49:39こういう単純なケースではそもそもreduce()すら要らないんだけどな
わざわざモジュールインポートしてタイプ数も長いんだからもっとがんばれ!
sum()は正直なにがしたいのかわからん
ダックタイピング言語で同じオペレータを割り当てているという意味づけを
reduce()の劣化版であるsum()という関数では否定してるわけだよな
0861デフォルトの名無しさん
2010/03/12(金) 03:11:20setが | の意味以外の + を定義したらそれはそれで混乱するような・・・。
RubyのSetは + と | の両方同じ意味になってる。
0862デフォルトの名無しさん
2010/03/12(金) 07:38:35それはできる
この結果と同じ文字列を、printを使ってコンソールに書くのではなく内部的に処理したい
0863デフォルトの名無しさん
2010/03/12(金) 07:59:30Rが数式処理できるのは始めて聞いた
たしか少し前にRからmaxima使う方法とか話題になってたような気もするんだが
0864デフォルトの名無しさん
2010/03/12(金) 08:26:57内部的にも \ なんだって。
インタラクティブシェルが出力する形式だと、 \ 一つを \\ と表示するだけで。
0865デフォルトの名無しさん
2010/03/12(金) 08:53:03set が | の意味以外の + を定義したら混乱するのは激しく同意
なおかつ、 | と同じ意味の (数値型プロトコルでもシーケンス型プロトコルでもない) + を
わざわざ定義しないといけない必然性も無い。
あとはポリシーの問題。Rubyは必要が無くてもやり方がたくさんあって良いね、Pythonは
必要最低限のやり方だけあるのが良いね、という言語。
>>860
operator.add や operator.or_ みたいな operator モジュール内の関数は、
インタプリタ内部の PyNumber_Add(), PySequence_Concatenate() という低レベル関数に
ダイレクトにマップされていて、言語上の演算子一つを置き換えるためだけの関数だから、
可変長引数に対応するのは違う気がする。低レベル単機能なビルディングブロックであって、
単体で何かをするための便利関数じゃない。
複数引数に対応するのは .update() や .union() みたいな高レベル関数で良いじゃないか。
sum() は、文字列以外では
>ダックタイピング言語で同じオペレータを割り当てているという意味づけを
否定していないよ。PyNumber_Add() は数値プロトコルが実装されていない型なら
ちゃんとシーケンスプロトコルの concat に fallback している。
0866デフォルトの名無しさん
2010/03/12(金) 10:00:420867デフォルトの名無しさん
2010/03/12(金) 10:31:12> sum() は、文字列以外では
> >ダックタイピング言語で同じオペレータを割り当てているという意味づけを
> 否定していないよ。PyNumber_Add() は数値プロトコルが実装されていない型なら
> ちゃんとシーケンスプロトコルの concat に fallback している。
でも文字列のconcatだけは否定したいわけでしょ?
他の型も受け入れるつもりなら、デフォルト引数0ってのもいかにも筋が悪いし
0868デフォルトの名無しさん
2010/03/12(金) 10:42:56operator.add〜やらの部分
実装がそうだろうというのは想像はつくけど、使う側の感覚として
(+)(1, 2)
reduce((+), (1, 2, 3))
これぐらいlightweightなら別にそれでいいんだけどな〜という感じ
mapやreduceのような基本的なビルディングブロックだって使いやすくなるし
モジュールインポートして
operator.or_
ってLL言語の「基本的ビルディングブロック」っていうには冗長
0869デフォルトの名無しさん
2010/03/12(金) 10:56:04つかえないわけだよね
こうは書けない
map(operator.add, [1,2,3], [4,5,6], [7,8,9])
まあ、数値の加算の場合だけならsumでいいけど
0870デフォルトの名無しさん
2010/03/12(金) 11:02:58そういった討論はバカのすること
つまりその調子で続けてろ
0871デフォルトの名無しさん
2010/03/12(金) 11:39:12だから、Sequenceを入れても同じ+演算子だから一応動くようにしているというだけで、
基本的に数値のsumを取るために用意された関数だからデフォルト値0なの。
文字列に関しては、 ''.join() を使わせるために禁止しているだけで。
数値の為の sum() について、数値以外の引数を入れたときの挙動について
ゴチャゴチャ言う方がどうかしてる。
0872デフォルトの名無しさん
2010/03/12(金) 11:58:09mapやreduceも、Python3ではモジュールに移動される。
俺も、itertoolsやfunctoolsやoperatorを使いたいときにいちいちimportするのが
面倒というのには同意するが、そういった関数的プログラミングっぽい書き方は
あまり必要とされない(一般的な操作は高レベルなやり方が用意されている)から
グローバル関数にしないというポリシーは正しいと思う。
文字列の連結は ''.join(seq_of_str)
集合の総和は s =set(); s.update(seq_of_set)
リストの総連結は itertools.chain(seq_of_list) で。結果をリスト化する必要があるなら
list(itertools.chain(seq_of_list)) とすれば良いが滅多に使わない。
ムリに reduce とか operator とか使おうとするから import ウゼーってなるだけだ。
0873デフォルトの名無しさん
2010/03/12(金) 12:02:06なんかよくわかんねえなー
sum()の仕様がすっきりしないとは1ミリも思わんの?
数値用だっつーんなら、それこそ数値限定にすりゃいいわけじゃん
[]は受け入れるが文字列はダメ、デフォルト値は0とかいう
意味不明な仕様じゃなくてさ
他の型も受け入れるんなら、本来第二引数はデフォルトつきの引数じゃなくて、
reduceの第三引数と同じで(オプショナルな可変個引数)にすりゃいいわけでしょ?
sum()がビルトインでreduce(), operator.add()が外モジュール
(reduce()に関しては3.Xか)とかこの辺も意味不明だわ
sum()のほうがoperator.add()より基本的なの?
0875デフォルトの名無しさん
2010/03/12(金) 12:12:50Duck-typing 言語として、ユーザーが自分で + 演算子を定義したオブジェクトを
サポートしない訳にはいかないから、ホワイトリスト方式で数値型オブジェクトのみを
許可するのは無理。
で、文字列だけに関しては、 ''.join() という計算量が軽くて簡潔な書き方があるから
そっちを推奨するために特別扱いで拒否しているだけで、リストの場合は [].join() が
無いから計算量が大きくても簡潔な map() という選択肢をあえて制限する必要は無い。
0876デフォルトの名無しさん
2010/03/12(金) 12:18:260877デフォルトの名無しさん
2010/03/12(金) 12:20:31相変わらずよくわからん
''.join()がstrのconcat専用なのだから、sum()が数値のaccumuratorだと
言いたいのなら、そう実装すればいいだけのように思えるけど
[]を制限しないのがデザインとしての選択なら、デフォルト引数0は明らかに
まずいしね
0878デフォルトの名無しさん
2010/03/12(金) 12:22:04list の extend が引数一つしか取らないことだと思う。
L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか
for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。
0879デフォルトの名無しさん
2010/03/12(金) 12:22:44list の extend が引数一つしか取らないことだと思う。
L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか
for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。
0880デフォルトの名無しさん
2010/03/12(金) 12:23:59list の extend が引数一つしか取らないことだと思う。
L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか
for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。
0881デフォルトの名無しさん
2010/03/12(金) 12:29:320882878
2010/03/12(金) 12:38:58>>877
strを受け付けないのは ''.join() を推奨するため。それ以外については、基本的に
+演算子を定義していればOK。
デフォルトの数値がゼロなのは、sumが基本的には数値型の為のものであるから、
sum([]) の結果をゼロにした方が都合が良いから。 (reduceの場合はエラーになってしまう)
Pythonは「一般的な動作をするためのものを引数のデフォルト値に採用する」という
言語だから、[]を制限しないけどデフォルト引数が0なのはマズくない。
0 + X がサポートされない X を使いたかったら、Xのゼロ元を書くというのは合理的。
0883デフォルトの名無しさん
2010/03/12(金) 12:42:12ああ、確かに0要素のシークエンスに対応したければデフォルト引数が要るね
sum()が美しいとは全く思わないけど、そういう設計方針なのだということは
理解したよ
0884デフォルトの名無しさん
2010/03/12(金) 12:47:34その辺の仕様がおざなりなのはしょうがない。
reduceなんかとうとうitertoolsに追い出されたし。
0885デフォルトの名無しさん
2010/03/12(金) 12:49:050886デフォルトの名無しさん
2010/03/12(金) 13:09:51sum(seq) の方がLisp的美しさが無いけど判りやすい。
「よく使う物をデフォルトに」という方針も、一部の物を他の物より優先するのは
美しくないかもしれないが合理的だ。
Pythonは美しさよりも合理的な方向を目指しているから、Lisp的に不細工な
部分があるのは仕方無いよ。
0887デフォルトの名無しさん
2010/03/12(金) 13:44:150888デフォルトの名無しさん
2010/03/12(金) 15:28:290889デフォルトの名無しさん
2010/03/12(金) 15:29:020890デフォルトの名無しさん
2010/03/12(金) 15:55:490891デフォルトの名無しさん
2010/03/12(金) 16:03:35よく分からないけど outmes が "\x90\x3c\x64" (バイナリで 90 3c 64) になる事を期待している?
0892デフォルトの名無しさん
2010/03/12(金) 17:07:25何のライブラリ?
0893デフォルトの名無しさん
2010/03/12(金) 17:13:34ROMってるんじゃない?
0894デフォルトの名無しさん
2010/03/12(金) 17:47:23バイナリで がよくわからないけど、多分そう
>>892
MidiIO
0895デフォルトの名無しさん
2010/03/12(金) 18:50:57>>891 の言っているような事をしたいのであれば、
>>> "903c64".decode('hex')
'\x90<d'
とかになるけど。
まだおまえさんが何をやりたいのかの全体像が見えない。
0896デフォルトの名無しさん
2010/03/12(金) 18:52:46>>849 の outmes は "\\x90\\x3c\\x64" という12文字の文字列
評価後の文字列を結合しても駄目だよ
>>> "\\90", len("\\90")
('\\90', 3)
>>> "\\x90", len("\\x90")
('\\x90', 4)
>>> "\\" + "x90", len("\\" + "x90")
('\\x90', 4)
>>> "\x90", len("\x90")
('\x90', 1)
>>> "\x90" == chr(0x90)
True
0897895
2010/03/12(金) 18:54:58"\x60" (16進で60になる1文字) に変換したいなら、string_escapeで変換する。
>>> "\\".join(["", "x90", "x3c", "x64"])
'\\x90\\x3c\\x64'
>>> "\\".join(["", "x90", "x3c", "x64"]).decode('string_escape')
'\x90<d'
0898デフォルトの名無しさん
2010/03/12(金) 19:02:44かわいそw
0899デフォルトの名無しさん
2010/03/12(金) 19:04:10>>897 で一行でできていますが?
string[] foo = {"x90", "x3c", "x64"};
をC#の一行で変換して下さいな。
0900デフォルトの名無しさん
2010/03/12(金) 19:14:54もともとの本題わかってから言えよカスw
0901デフォルトの名無しさん
2010/03/12(金) 19:16:31もともとの本題とやらが判ってるの?
あれだけの情報で本題を掴むなんてスゲーなおまえ。
俺らにも判るようにもともとの本題を解説してくれ。
0902デフォルトの名無しさん
2010/03/12(金) 19:20:44Pythonic's HOWTODOTHAT!
Is that executable on unix and BSD?
Is that executable without compilers and linkers?
Is that able to maintain for many environments?
If you can't answer, that is fuck comparing! sucker!
パイソニックズ それどうやんの!
それはUnix系・BSDで実行可能ですか?
それはコンパイラ・リンカなしで実行可能ですか?
それはさまざまな環境で維持できますか?
お前が答えられないならば、その比較はファックだ!クズ!
0903デフォルトの名無しさん
2010/03/12(金) 19:21:160904デフォルトの名無しさん
2010/03/12(金) 19:23:50この3人、煽り耐性なさすぎですねw
0905デフォルトの名無しさん
2010/03/12(金) 19:35:090906デフォルトの名無しさん
2010/03/12(金) 19:39:26パイ君2号:自演します
パイ君3号:(w
0907デフォルトの名無しさん
2010/03/12(金) 19:47:35春休み君はこのうちのどれ?
0908デフォルトの名無しさん
2010/03/12(金) 19:57:20まさに言ってる通りなんだ
説明下手ですまんかった、本当にありがとう
0909デフォルトの名無しさん
2010/03/12(金) 20:00:32かわいそ
0910デフォルトの名無しさん
2010/03/12(金) 20:02:230911デフォルトの名無しさん
2010/03/12(金) 20:04:57なんか凄い勢いで進化しとるなあ
最初はJavaに毛が生えたような言語で、そういう客層だったろうに
皆ちゃんとついてってるのか
0912デフォルトの名無しさん
2010/03/12(金) 20:06:42俺もF#やるまでラムダ式?おいしいの?って感じだったけど
0913デフォルトの名無しさん
2010/03/12(金) 20:09:160914デフォルトの名無しさん
2010/03/12(金) 20:10:01無名型を使って手軽に複数の値を戻り値にできるし。
本当に良い言語だよね、C#は。
現時点でメジャーな静的型付け言語の中では一番だよ。
あとは、Monoがもっとがんばってくれれば…
0915デフォルトの名無しさん
2010/03/12(金) 20:15:540916デフォルトの名無しさん
2010/03/12(金) 20:17:23いやだよ。PerlとPythonがサーバー全部に入ってるのに、なんでRubyまで
インストール&メンテしないといけないんだよ。
Pythonに比べて利点が少なすぎる。
0917デフォルトの名無しさん
2010/03/12(金) 21:00:100918デフォルトの名無しさん
2010/03/12(金) 21:04:58処理がほしければboostとつないで使えばいいし。
cgiもあるからpythonで十分
0919デフォルトの名無しさん
2010/03/12(金) 22:15:500920デフォルトの名無しさん
2010/03/12(金) 22:38:350921デフォルトの名無しさん
2010/03/12(金) 22:40:340922デフォルトの名無しさん
2010/03/12(金) 22:41:340923デフォルトの名無しさん
2010/03/12(金) 22:45:550924デフォルトの名無しさん
2010/03/12(金) 22:45:57まだ一部の人間が実験している段階。
0925デフォルトの名無しさん
2010/03/12(金) 23:00:140926デフォルトの名無しさん
2010/03/12(金) 23:01:300927デフォルトの名無しさん
2010/03/12(金) 23:02:250928デフォルトの名無しさん
2010/03/12(金) 23:06:18GOOGLEの戦略ってどういう見解なんだろ
大規模はGO 末端はpythonてな感じで分けるつもりなんだろうか
0929デフォルトの名無しさん
2010/03/12(金) 23:12:250930デフォルトの名無しさん
2010/03/12(金) 23:14:34どうだろね。
http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e
0931デフォルトの名無しさん
2010/03/12(金) 23:17:30GoはGoogleOSやAndroidに内蔵するつもりなんだろう
0932デフォルトの名無しさん
2010/03/12(金) 23:18:040933デフォルトの名無しさん
2010/03/12(金) 23:25:17専門用語的に何と言うのかはわかりませんが
s1 = 'a+b'
s2 = 'c+d'
のような入力があるとき
s3 = s1 * s2
を実行すると
s3 が 'ac + ad + bc + bd'
になるような計算をしてくれるモジュールってあるのでしょうか?
0934デフォルトの名無しさん
2010/03/12(金) 23:28:40Mathmaticaみたいな。
0935デフォルトの名無しさん
2010/03/12(金) 23:39:34s2 = "3+4"
exec("s3=%s+%s"% (s1, s2))
>10
0936デフォルトの名無しさん
2010/03/12(金) 23:43:51たぶんそうです
Mathmaticaを使わずにpythonだけで出来れば
>>935
馬鹿は返事しなくていいです
0937デフォルトの名無しさん
2010/03/12(金) 23:45:050938デフォルトの名無しさん
2010/03/12(金) 23:45:09>>935ガチでかわいそうすぎる
0939デフォルトの名無しさん
2010/03/12(金) 23:46:29http://ja.wikipedia.org/wiki/Sage_%28%E6%95%B0%E5%BC%8F%E5%87%A6%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%29
0940デフォルトの名無しさん
2010/03/12(金) 23:46:32SAGEはどっちかっつーとCythonで有名かもしれない……
Mathematicaほどの高機能は期待しないほうがいいだろうとは思うけど
0941デフォルトの名無しさん
2010/03/12(金) 23:48:04俺にも煽られても仕方ないレベルに見えたけどな
0942デフォルトの名無しさん
2010/03/12(金) 23:51:42ありがとうございます
>>938
>>> exec('s3=(a+b)*(c+d)')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'a' is not defined
だめでした orz
0943デフォルトの名無しさん
2010/03/13(土) 00:08:21>>> a,b,c,d = symbols('abcd')
>>> expand((a + b) * (c + d))
a*c + a*d + b*c + b*d
0944デフォルトの名無しさん
2010/03/13(土) 00:20:33ズッコケ三人組ですね。
0945デフォルトの名無しさん
2010/03/13(土) 00:30:06うちはちゃうけどな
0946デフォルトの名無しさん
2010/03/13(土) 00:31:05あなたが神か
0947デフォルトの名無しさん
2010/03/13(土) 00:32:54それ前にも見たぞ。前書いたのをコピーして貼っておく。
412 :デフォルトの名無しさん:2010/02/27(土) 16:17:44
>>409
全然マンセーじゃないみたいだが…
http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e
414 :デフォルトの名無しさん:2010/02/27(土) 16:44:34
>>412
読んだけど、元々速度が要求される場面ではPythonは用いてないと思うし、そもそもそれは憶測の域を出ないよね。
0948デフォルトの名無しさん
2010/03/13(土) 00:49:12LtU や Hacker News でも一時期話題になった有名な話だからな。
Unladen Swallow を支援しているけど、速度は問題だよねというお話。
0949デフォルトの名無しさん
2010/03/13(土) 01:17:520950デフォルトの名無しさん
2010/03/13(土) 02:09:00│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘ おっぱい!おっぱい!
0951デフォルトの名無しさん
2010/03/13(土) 03:34:53>>> sympy.expand((a+b)*(a-b))
a**2 - b**2
>>> sympy.expand((a+b)*(a-b)/(a-b))
a + b
>>> sympy.expand((a**2 - b**2)/(a-b))
a**2/(a - b) - b**2/(a - b)
だめですね orz
0952デフォルトの名無しさん
2010/03/13(土) 03:36:22一行でできるのに・・・
かわいそw
0953デフォルトの名無しさん
2010/03/13(土) 03:57:10乗算に関して交換法則が成り立たないといけない。
0954デフォルトの名無しさん
2010/03/13(土) 04:02:01a + b
0955デフォルトの名無しさん
2010/03/13(土) 04:09:55後学のためにその一行PLZ
0956デフォルトの名無しさん
2010/03/13(土) 04:32:20いやだから
s3 = s1 * s2
と書けばいいだけ
s3がac + ad + bc + bd
になる
C#ならねw
0957デフォルトの名無しさん
2010/03/13(土) 04:34:06(a + b)*(a - b)
0958デフォルトの名無しさん
2010/03/13(土) 05:03:55{3: 2, 333667: 1, 37: 1}
0959デフォルトの名無しさん
2010/03/13(土) 05:23:020960デフォルトの名無しさん
2010/03/13(土) 05:28:22アルゴリズムぐらい自分で考えろ
0961デフォルトの名無しさん
2010/03/13(土) 05:31:24さあお手本いってみようか
0962デフォルトの名無しさん
2010/03/13(土) 05:37:10おれならGSL使ってパパっとやっちゃうね
0963デフォルトの名無しさん
2010/03/13(土) 05:38:35a*c + a*d + b*c + b*d
の計算させればいいだけじゃんw
何が難しいのよwww
0964デフォルトの名無しさん
2010/03/13(土) 05:47:01会話のキャッチボールが全く成立しとらんwwww
0965デフォルトの名無しさん
2010/03/13(土) 05:55:450966デフォルトの名無しさん
2010/03/13(土) 09:32:410967デフォルトの名無しさん
2010/03/13(土) 10:04:480968デフォルトの名無しさん
2010/03/13(土) 10:07:19ttp://rail.s4.pf-x.net/python/
0969デフォルトの名無しさん
2010/03/13(土) 10:15:580970デフォルトの名無しさん
2010/03/13(土) 10:17:100971デフォルトの名無しさん
2010/03/13(土) 10:18:510972デフォルトの名無しさん
2010/03/13(土) 10:52:05Rubyならそんなこと簡単にできるのに...
みんなRuby使いなよ
0973デフォルトの名無しさん
2010/03/13(土) 11:02:020974デフォルトの名無しさん
2010/03/13(土) 11:04:22ttp://morepypy.blogspot.com/2010/03/introducing-pypy-12-release.html
パイパイ!
0975デフォルトの名無しさん
2010/03/13(土) 11:27:020976デフォルトの名無しさん
2010/03/13(土) 14:45:53え?そうしたくないときでも、そういうふうになっちゃうの?C#だと。
それくらいならいいけど、
(a+b+c+d+e)**10
なんて計算をする度に必要なくても展開されるとか恐ろしくて使えない。
0977デフォルトの名無しさん
2010/03/13(土) 15:14:53a + b
0978デフォルトの名無しさん
2010/03/13(土) 15:21:32とか添字と配列処理も混合できるなら乗り換える
0979デフォルトの名無しさん
2010/03/13(土) 15:38:100980デフォルトの名無しさん
2010/03/13(土) 15:53:300981デフォルトの名無しさん
2010/03/13(土) 17:11:43http://pc12.2ch.net/test/read.cgi/tech/1268467168/
0982デフォルトの名無しさん
2010/03/13(土) 19:57:280983デフォルトの名無しさん
2010/03/13(土) 20:09:320984デフォルトの名無しさん
2010/03/13(土) 20:25:490985デフォルトの名無しさん
2010/03/13(土) 20:33:120986デフォルトの名無しさん
2010/03/13(土) 20:57:340987デフォルトの名無しさん
2010/03/13(土) 21:05:420988デフォルトの名無しさん
2010/03/13(土) 21:12:33Earlangも入ってるけど、Rubyは入ってない。
0989デフォルトの名無しさん
2010/03/13(土) 21:23:18iphoneもmonoが動くし、ゲームも出回ってる。
0990デフォルトの名無しさん
2010/03/13(土) 21:24:53>iphoneもmonoが動く
クローズドで有料なんじゃなかったっけ
0991デフォルトの名無しさん
2010/03/13(土) 21:25:570992デフォルトの名無しさん
2010/03/13(土) 21:28:01monoも有料なんだっけ?よーわからん。
どちらにせよApple様の縛りがあるんだよなぁ。
何で独占禁止法で訴えられないんだ。
0993デフォルトの名無しさん
2010/03/13(土) 21:28:300994デフォルトの名無しさん
2010/03/13(土) 21:45:22>CentOSもmonoがあるね。
デフォで入ってたっけ?
0995デフォルトの名無しさん
2010/03/13(土) 22:33:350996デフォルトの名無しさん
2010/03/13(土) 22:36:470997デフォルトの名無しさん
2010/03/13(土) 22:40:490998デフォルトの名無しさん
2010/03/13(土) 22:48:030999デフォルトの名無しさん
2010/03/13(土) 23:17:14逆に「豊富な(統計)ライブラリ」以外には魅力は
あまり感じないのは贔屓目すぎかね?
そこまで徹底的に使ってないし Rpy でそれなりに
Rライブラリは利用できるし、そんなに
python+numpyも悪くないと思うけど
グラフの描画については… Rについて語れるほど
グラフィック関係を呼んだことないんだけど
matplotlib と比べてそんなに優秀?
1000デフォルトの名無しさん
2010/03/13(土) 23:34:0210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。