熨斗
from __future__ import braces
乙
>>3 SyntaxError: not a chance
from PIL import Image, ImageDraw img = 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()
7 :
デフォルトの名無しさん :2010/02/04(木) 00:26:30
python2.5 func(name='myname') と同じことを key = 'name' func(key='myname') のような感じでやりたいのですが、可能でしょうか? ※keyとしてではなくnameとして渡したい
func(**{key:'myname'})で早速出来ちゃいました。ごめんなさい
def func(name): print name key = 'name' func(**{key:'myname'})
リロード遅せーぞ>俺
Python勉強しようと思うんだがおすすめの参考書ってない?
みんなのPythonとか変な本買うより素直に初めてのPythonを買う方がいいと思う。
Python本はどれも期待外れ
たぶんレシピブックみたいなのがないからなんだろうな 馬鹿は具体例を見ないと納得出来ない
鉄板なのがたのしいRuby ■ 絶版なのが実践Python ライブラリの作者が書いてるのがRubyクックブック ■ なんかよく分からない人が書いてる以下自粛 でもPythonレシピブックはあってもいいよね
すまんちゃんと見てなかったわ レス見る限り初めてのPythonがいいのかな
>>15 おれまさに馬鹿だから、リファレンス見ても使い方がわからない。urllibとか。smtpとか。
ftpしたいときにはRETRとか書かなきゃいかんということを知って愕然としたとか。
おお、ftpで検索すると、session.storbinary('STOR YOUR FILE',myfile) とか出てくる。馬鹿でも感謝くらいは出来るので感謝。
PyQt4 のレシピブックだれか出してくれないかな
みんpyはかなり初心者向けじゃないの? はじpyとか意味あるの? マジレス、初心者にはみんpy以外は無駄な感じ。
あの丁寧な公式チュートリアルで何が足りないのか聞きたい。 「とにかく大きな本を買っておかないと満足できません」というなら別にそれで構わないけど。
公式チュートリアルはPython初心者向けではあっても プログラミング初心者向けじゃないもの それだけのこと
.storbinary('STOR YOUR FILE',myfile) これはなんでSTORがダブってるんだということで直感的じゃないよなー。
自らの狭い視点でしか物事を考えられない、頭蓋骨の中身が残念な人は、プログラマには向かないと思うんだけど。
cookbookでてんだからそれ買ったら?
はじめて手をつけるなら3.1でいいのかな? おすすめのエディタある?
>>29 2.6のほうがいい。
理由はライブラリの互換性。
おすすめのエディタはemacs pyscripter eclipse notepad++など 左のほうがお勧め度高い
>>27 いや、風呂敷広げすぎると何も作れなくなるのがプログラミング。
趣味グラマならひとつの言語・ひとつのパラダイムで突き進むのが一番幸せ。
そうだね、自分の殻に閉じこもっていたら、一生独身だね。
自己紹介乙
なんか規制が厳しくなったら 滓ばっかり残った感じがする
自己紹介乙
>>31 さり気なくVim厨に喧嘩売ってんじゃねーぞ
pyscripterはデバッガに致命的なバグがあるからお薦めできない Eclipse+PyDevがいいと思う
なんとなくだけど、vim厨ってどんな場合でも理由もなく 「こっちのほうが絶対いいよ!!」みたいに偏執的なことを言う人が多い気がする。
xyzzy使ってるんだけど補完効かせるようにするにはどうすればいいんだろう
デバッガ?そんなもんつかわねーよwいつでもprint
pdb
import pdb pdb.set_trace()
>>41 Python で print デバッグすると Codec 周りで例外出て何のデバッグしてるのか分からなくなるw
repr
例外の中で例外出したら元の例外がなんだったのか分からなくなるよね
なぁ、最近witchとhanterの声が脳内に響いてビクビクしてるんだ・・・ 俺ってやばいのかな
boomer! boomer!
誰がboomerだよ 俺はそこまで太ってないぞ
Pythonスレがゲロまみれだよ
Pythonはリバースする必要ないだろ
100%仕様通りのPythonコンパイラ作りで未踏ソフトウェア受かるかな? 半分できてるんだけど。
半分できてる100%仕様どおりってなんだよ。 Pythonの仕様っていうのも??? そもそも、未踏じゃないし。 98%だけど、〜が新しいって方がいいだろ。100%にする作業は成果にもできる。
>>56 でもPythonコンパイラなんて誰も作ってないじゃん。
理論上俺のやり方だったらPythonコンパイラが作れる。 未実装な機能があるだけで。 これを完全に仕上げるには協力が必要だ。
コンパイラなら、Jythonとか、IronPythonとか、100%っていうのは、CPythonと同じにするという意味か?
CPython,IronPython,Jythonなど既存のものと比べて優れている点があるのかっていう
高速化が目的ならUnladden Swallow, Psyco, pypy, Shed Skinあたりと競合するな
動的な仕様なままネイティブコンパイラを実現したものはひとつもないぞ
ジャストインタイムでのコンパイルや、Pythonインタープリタの内蔵なしにevalやexecが動くというのなら、大変興味深い。
もちろんできるよ
ここでウダウダいってないで公開するなり応募するなりしろよ
もし本当ならいろいろ夢が広がるなあ
ほかの言語にも、応用できそるのでインパクトあるな。
これは期待
あてにせず期待
動的コンパイラとか技術的にはすごいけど、事業化はむずかしいんじゃね。 未踏ソフトは事業化も考慮して選ばれるんだろ。
もし本当だったらLL界に革命が起きるぞw
小林さん、暇なんですか?
1000円くらいなら買ってもいいよ>ネイティヴコンパイラ
ネイティブってライブラリも自分で コンパイルするのかねぇ 俺はPyrexで十分、っつーか 手軽にコード自体を最速にするなら これが一番だわ
>>76 execできるくらいだし、動的リンクもできんじゃね?
emacs23.2でセマンティックがとりこまれるそうだけど pythonもセマンティックは解析してくれるんだろうか 今のemacsはタグジャンプ設定めいんどい
stalinかMLtonでpython書けばいいじゃない
64bit版で使えるライブラリってどれくらいですか?
>>31 eclipseのいいところはemacsキーバインドに簡単に設定できることだね。
>>81 さり気なくVim厨に喧嘩売ってんじゃねーぞ
いや、気にしすぎでしょそれw
>39 を実施しただけという気もするけど
俺の面接ではvi使いは採用のときに減点してる。
>>39 みたいな人が多い気がするから。
なんの会社かは知らんが、vi使えないやつもついでに落としておけよ サーバにアクセスしてemacsどこー?とかどうなのよ
nano
vim厨は協調性が無いんだよねぇ
>>86 それはLinuxの習熟度の問題でしょ。
プログラミングとはあんまり関係ないし、
その程度のことなら1日で覚えてくれるでしょ。
ご、ごめんなさい……。 レンタルサーバにemacs入れたのは俺です。 rootつきのサーバだったんで、つい出来心で……。
>>86 サーバーにemacsない会社なんかこちらからお断りだ。
おれは組み込み屋だが、このまえやった200Mhz, ARMの
OpenEmbeddedで組んだシステムにもこっそりemacs
組み込んどいたよ。
emacs厨うぜ
そんなあなたに ng
vi厨よりvim厨の方が悪質だろ。
viもvimも一緒じゃん アリンコの背比べ
ここでEmEditor厨の登場
vim厨から見るとviは劣化コピーだけど vi厨から見るとvimは迷惑な親戚
スレチだから消えろカス共
ちゃんとpythonのインデントをうまくしてくれたら何でもいい。
Pythonのインデントブロックがなくなるのが一番みんなが幸せになれる未来
>>100 def foo() {
...
}
def foo () do
...
end
さあ選べ
MLスタイルでお願いします
gotoさえあればブロック無しで書けるのになぁ
悪魔の誘惑に近いような
doなくてもendあればいいんじゃね? ていうか、もうpassでいいじゃん。 Pythonはインデントが構文になってしまってる故、 自動で正しいインデントを決定できない場合があるのがめんどくさいのね。
>>105 python のインデントが面倒とか言ってるやつは
実際には python のプログラムをまともに
書いたことが無いとしか思えない
普通に使っててそんなケースに出くわすことはまずないよ
2ch のレスでスペースが見えなくなって困るくらいだけ
貼られたオリジナルのインデントは HTML ソース見れば復元可能
> python のインデントが面倒とか言ってるやつは そういうヤツはそもそも python の存在に気づいても 3分後には他所にいってるはずだから… 100% 釣りだろ
Python だとみんな4スペでインデントするから、 色々なソースを弄るときに都度エディタの設定を弄る必要が 無くなった。 他の言語もインデントのスタイルを強制すれば良いのに。
>>107 if cond:
expr1
expr2
expr3
文脈見りゃ分かることが多いけど、スペースつぶれたのをコピペしたときそのあたり自分で直さないといけないって話。
その点以外では特に嫌なことないから、Pythonも中括弧導入すべきなんていうつもりはない。
YAMLがインデント構文じゃなくなったらおしまい それと同じでPythonも
>>108 俺はインデントブロック反対派だけど、Python使ってるよ。
理由はライブラリの豊富さと導入しやすさ。
インデント以外のブロック記法が導入されたらうれしい。
114 :
デフォルトの名無しさん :2010/02/10(水) 12:35:45
from __future__ import braces
>>110 >>112 だから問題が起こらないとは言ってないだろ
>普通に使っててそんなケースに出くわすことはまずないよ
稀なんだよ稀
そんなのに目鯨たててどうすんだ
見やすいのは def foo(){ ... } かなぁ。
関数定義 foo() ・・・ 関数定義終わり
オウ、ホットなでしこ
なでしこの制御構造はインデントで表現する、とマジレス
キーワードに日本語が使われてるだけでなでしこと脊髄反射した漏れが悪かった マジレスさせてすまん
漏れw
脳みそ漏れてますね
尿漏れとかしてそう
pass
今年になってPythonで書き始めたんだけど、俺も最初はは「は?インデント??」 って思ったけど、実際やったら何でもなかった。元々他の言語でもどうせ見やすさの ためにインデントしてる訳だし。
Pythonプログラムのメモリリーク箇所の調査ってどうやるの?
>>129 処理系のバグだったら知らないけど、それ以外でどうやったらメモリリーク起きる?
いまどきIDEが整形してくれるので、Pythonのインデント依存の文法はあまりありがたみはない。
いちいち{}とかendとか書かないで済むの楽だよなぁ インデントはエディタがやってくれるし
循環参照はメモリリーク臭が多少ある。
PythonのGCって参照カウントだったのか でもマニュアル見たらPerlよりマシっぽいな
>>132 リークとは言えないだろうけど
メモリ食うオブジェクトとか握ったまま放さないとそのうち足りなくなる
wxPythonでポップアップメニュー多用するプログラム書いてて
その都度生成してたらガベコレされなくなってるらしくてメモリエラーになった
アプリ終了して起動しなおしたらもちろん正常に動く
多分自分の書き方が悪いんだろうと思うけど
メニューが画面上から消えていらなくなったタイミングで解放したいんだが
どこで明示的に解放すれば良いのか適切な方法がまだ見つかってないのでバグ放置
Pythonでは参照カウントが0になった時点で すべてのオブジェクトは解放されるから、 明示的に解放とかする必要はないのでは。 import gc gc.set_debug(gc.DEBUG_LEAK) gc.disable() gc.collect() これで循環参照してるオブジェクト表示して、 コード修正すればメモリが足りなくなるとかなくなると思う。
PythonのGCって循環参照は回収してくれないんですか? それじゃあ、GCあんまり意味ないような気がするけど。
循環参照してて__del__メソッド持つオブジェクトは解放されない。 __del__メソッド持ってなかったら、いつかは解放されるけど、 いつ解放されるかはわからない。 だったような気がする。
>>142 >いつかは解放されるけど、いつ解放されるかはわからない。
どうもこれかも知れないんですよね。
weakrefのことも忘れないであげてください
オブジェクトの生成回数 - オブジェクトの破棄回数が一定値を超えると、 1st GC が働いて、循環参照になっているゴミを破棄する。 1st GC で破棄されていなかったオブジェクトは次回の1st GCで 循環参照の検出をスキップされる。んで、1st GCが一定回数 実行された後に 2nd GC が働いて1st GCを生き残った循環参照の うちゴミになった物が捨てられる。 さらに、2nd を生き残った循環参照オブジェクトは 3rd に回される。
循環参照でゴミになってるっていうのは循環部分以外からの参照が無いってことかな
____________ ヾミ || || || || || || || ,l,,l,,l 川〃彡| V~~''-山┴''''""~ ヾニニ彡| 解放する・・・・・・! / 二ー―''二 ヾニニ┤ 解放するが・・・ <'-.,  ̄ ̄ _,,,..-‐、 〉ニニ| 処理系は その時と場所の /"''-ニ,‐l l`__ニ-‐'''""` /ニ二| 指定まではしていない | ===、! `=====、 l =lべ=| . | `ー゚‐'/ `ー‐゚―' l.=lへ|~| そのことを |`ー‐/ `ー―― H<,〉|=| どうか諸君らも | / 、 l|__ノー| 思い出していただきたい . | /`ー ~ ′ \ .|ヾ.ニ|ヽ |l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・ . | ≡ | `l \__ 我々がその気になれば !、 _,,..-'′ /l | ~''' メモリーの解放は ‐''" ̄| `iー-..,,,_,,,,,....-‐'''" / | | 10年後 20年後ということも -―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・! | | \ / | |
参照カウントとかガベコレの動作は実装依存
>>150 うん、そうだね。
みんなはそんなことは十分承知の上で、CPythonの話をしているんだ。
重い処理はCで書いて繋げろ pythonをCで実装 もうpythonやめてCでいいじゃん
アセンブリでいいじゃん
>>152 :ハ_ハ:ハ_ハ:.
:(;゚∀゚)゚∀゚;): シィィィィ ──!!
:(´`つ⊂´):..
と_ ))(_ つ:
ctypes で書いてたら表面だけ python 中身ほとんど C っていうのもありえる
>>139 wxは独自のメモリ管理してるから
いちいちDestroy呼ばんとえらいことに
>>155 でもトライアンドエラーが簡単だから
ついpython使っちまう
そーいやPILってCのI/F持ってんだな
本家の解説のソースがImagingObjectをImagingって
書いてあってけっこーはまった
C上主義者が湧いてきたな
>>156 サンクス
>>139 >wxは独自のメモリ管理してるから
>いちいちDestroy呼ばんとえらいことに
まじか
PyQtに乗り換えるか
PyQtといえば、Nokiaだかその関連の研究所だかが、PyQtと互換なライブラリ作ってる。
http://www.pyside.org/ どうやら、PyQt作ってるriverbankに「オプソ版をGPLじゃなくLGPLにしてくれ」と頼み込んだが交渉決裂して、作ることにしたらしい。
将来的にどっちが強くなるんだろ。
GUIライブラリのラッパーは単純なんだけどAPI等の数が多すぎて日曜プログラマにはきついね。
x API の数が多すぎて o Framework の数が多すぎて
Pythonをコード読むためにざっと文法なぞってて疑問に思ったんだけど、 どうしてswitchやインクリメント演算子が存在しないの? if-elseが連なってるのは効率がすごく悪そうなんだけど あと、str.lenじゃなくてlen(str)なのが地味に気になった
>>162 気持ちはわかります 漏れの 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() かな
慣れの問題
>if-elseが連なってるのは効率がすごく悪そうなんだけど 効率の話だよね
>>163 読みながらいろいろと弄くってきた。
現時点ではPythonの方向性というか、ターゲット層がよく分からない。
とりあえず、
if 0 < a < 128 みたいな条件式が通ったんだけど、一種の三項演算子扱いなのか?
手元の資料だとnotは論理否定の役割しかないそうだけど、if a not in b は別なのか?
多次元配列やハッシュの代入に複数行使った場合、どこまでインデントが崩壊していいのか?
あたりが未解決。
最近の主要言語がC#, Rubyなので、lenやjoinは非常にむず痒い。
面白そうな言語ではあるんだけれども、もう一押し何かが欲しいところかな。
いろいろ動作確認したりでまだ初学用の資料すら読み終えてないので、なんとも言えないけどね。
switchがない理由について検索したけど、
「switchに頼るのはOOが理解できていない証拠!」みたいなサイトが一杯出てきてちょっと引いた。
まあ、仮にswitchが導入されていたとしても、インデントの仕方で誰かが文句言いそうだけどw
>>162 len(obj)
は
obj.__len__()が呼ばれる
なんか評論家みたいな上から目線が気にいらないのでつっかかってみます。 なんでそんな細かな言語仕様が気になるの? 言語が違うんだから他の 言語と記述方法が違うのはあたりまえだと思うんだけど。 switchがあったら便利だというのは同意だけど、インクリメントなんか スクリプト言語には本来要らないよ。i = i + 1とi++では機械語レベル ではたしかに命令数が違う。コンパイラにとってはそれ重要だけど、 スクリプト言語にとってそれがなんだというのか。 結局君は書き慣れた記述法じゃないことが不満なんじゃないの? たとえば「インクリメントが実装されました。Delphi式のinc(i)です」 ってことになったらそれはそれで文句あるんでしょ? それはインクリ メントが欲しいんじゃなくて慣れた記述法にしてほしいってだけのことだよ。 言語が違えば記述方法は違う。それは違う言語を学ぶ際に最低限わきまえる べきことだよ。 それからターゲットはRubyとほぼ一緒だよ。そんなことRuby使ってる んならわかるでしょ。まつもとさんだって「ああPythonあるからRuby いらないかもw」とか言ってるしね。 っていうか「もう一押しほしい」って誰に言ってるの? 君のために誰が 一押ししてくれることを想定しているのか教えてほしい。
>>165 はGoスレあたりのコピペ改変だろうきっと
いいよ、もうみんなS式で書くことにしようぜ。
インクリメントはインプレースな演算なのに対して 数値オブジェクトはイミュータブルだからインクリメントは実装できない という認識は正しい?
>>166 なるほど。そういう実装をしているんですね。
さんくすです。
>>167 ちょっと言葉悪かったですね。失礼。
慣れた記述法が欲しいってのは大体正解です。三項演算子とか大好きですし。
これが全然違う文法ならともかく、似通っているのに「微妙に違う」から違和感を覚え、
その違和感による不満を消すために理由や事情があるのなら知りたいと思うんです。
Pythonは確かに支持されている言語なので、支持されるに足る理由があるとは思っているのですが、
どうにもそれが実感できないので、自力にせよ他力にせよ、Pythonの魅力をはっきりさせたいというのが
もう一息っていう吐露ですね。馬鹿にしているようにも読めるレスだったので、その点は謝罪致します。
違和感があるのはあんたがまだpythonに慣れてないだけ switchとかインクリメントとか野暮な事言うのは 無能なRuby厨かC初心者くらいだろ。
switchもインクリメントも実質的に必要ないし、分かりにくい部分すらある len()は.__len__じゃなくて.lenとか.lengthとか.Lengthとか.countとか.itemcountとか嫌でしょ一種のインターフェースです みたいな話 しかし最近の言語に代入を評価できるのってあるのか?
rubyは実装自体も馬鹿なのか
>>171 >似通っているのに「微妙に違う」
似てねーよ
それはお前の都合だろ
>Pythonは確かに支持されている言語なので、支持されるに足る理由があるとは思っているのですが、どうにもそれが実感できないので 使い込むとわかる つまり使い込まないとわからない w
最初のうちは unicode 絡んでると良くわからなかった
encode() dekode() のネーミング逆じゃね?とか勝手に思ってた
u"ほげ" の内部コード?が必ず UTF-8 で保持されてると思ってた
そんなこんなで exception 出まくりでなんじゃこれ状態だったが
色んな誤解が解消出来た時点でスムーズに書けるようになった
>>165 みたいな初心者には w 敷居は高いかもしれない
>>162 ●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)でいける訳だからメソッドだからどうというわけでもないが
>switchで一回インデント、caseで一回インデントで、二重のインデントになるし Ruby の case 方式にすれば?
他の言語の記法や便利な道具が増える可能性は今後もあるだろう。 昔は += もなかった。sorted もなかった。 tmpKeyList = myDictionary.kyes() tmpKeyList.sort() for tmpKey in tmpKeyList: ・・・ みたいなこといちいち書いてたよ。
>>165 >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的には多態性を勉強するといいかもしれない
>>171 三項演算子
「(A)?B:C」は
「B if A else C」でおk
>>177 なんとなく分かる程度じゃ便利さが見えてこないって感じね。
痒いところに手が届くような感じだとしたら、ちょっと期待したい。
>>178 あー、そこらへんは確かに全然理解できてないかも。
>>179 一応、インクリメントに関しては強く主張する気はないです。三項演算子と一緒でないのが寂しいだけ。
メリットとかじゃなくて気持ちの問題なので、それを押しつける気はないです。
関数に関しては、若干C#,Java,Rubyの影響を受けすぎたかな。
慣れないうちは絶対str.lenとか書きまくっちゃうだろうけれども、違いを意識するように努力してみます。
>>185 玄人向けみたいな先入観が強かったから違和感があったのかな。
等号・不等号は糖衣構文みたいなものだと思っていいのかしら?
申し訳ないけどデリゲートは大好きなんだけどw、
他は確かに慣れれば面白そうかもしれない。素敵な情報をありがとう。
switchに関して調べて出てきたページが、なんというか「Pythonの素晴らしさが分からない奴は馬鹿w」みたいなサイトだったんで、
一時的に嫌悪感が高まって、ついついきつめのこと書いてしまった。本当申し訳ない。
>>183 ありがとう。
でも使いたいのは a = b ? c : d みたいな状況だから、素直に分岐した方がいいかもね。
嫌われがちな書き方だけれども、個人的にはすごく好きなんだ。あくまでも可読性に影響のない範囲でだけど。
静的型付けの C# なら、 ICollection.Count で統一できるんだよね。 Javaだと配列がインタフェースに従ってないから、 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はここら辺どうやって統一してるの?みんな一般的なメソッドの名前を 予約語みたいに覚えて間違わないようにしてるの?それだと、予約語と違って 間違えて使ってしまってもエラーにならないから混乱しない?
184じゃないけど、Rubyならモジュールをmix-inする 不注意でモジュールから引き継いだメソッドを オーバーロードしてしまうかもしれないが それはオブジェクト指向である以上、不可避なのでどうしようもない Pythonの特殊メソッドでtraitsを表す手法は クラスの設計者が自覚的に実装することで 意図が明確に反映できる反面、ちょっと面倒なのも事実 そこら辺のRubyとの違いは思想が現れてて面白いね 話がずいぶん戻るけど、Pythonの行継続は 括弧かトリプルクォートで囲まれるか バックスラッシュで明示的に継続を表すかしかないので ルール自体ははっきりしているよ
>>184 a = c if b else d でおk
三項演算子一応使えるけど書いてみるとコレジャナイって感じがして2〜3行に書き直す俺ガイル
三項演算子入れ子にするとき()使ってる? a = 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)
Pythonは他の言語の類似の機能を 初学者にわかりやすいように単純なルールで実装しているので 逆に他の言語をかじった人が使い始めると 戸惑うところがあるのは否めない スコープに関するクロージャの話とか"".joinとかlen()とか Python使っている人には「またか・・・」とげんなりしてしまう無限ループ状態 FAQが和訳されれば改善されるのかね?
むしろ他の言語をメインに使ってたことがあるからこそ 単純に書けることに感動する奴(俺)もいるっちゃいるんだけどねぇ
for の else なんか目から鱗だよなぁ
それもあるね 俺はリスト内包表記をPythonで初めて知って かなり驚いた それをきっかけにSchemeやHaskellを眺めてみて 世界が広がった気がする シンプルに書けるって点では、最近はScalaやClojureに注目
{ x | x は偶数} みたいなのから来てるんだっけ? 数学に疎いからHaskell本読むまで気づかなかった
Erlang も忘れてやらないでください
そうそう 集合の中の要素の条件付けそのまま 中高生が初めて触るプログラム言語として 数学との違和感のなさから、実はHaskellは向いているのではないか ・・・と妄想してしまうw プログラミングHaskellの訳者の人も、そんなこと書いてたし
自分用に三項演算関数でも書けばいいじゃない
>>186 Pythonでもmix-inを使って、一部の特殊メソッドを用意するだけで
それ以外を自動で用意する事はできるよ。
昔はUserListとかUserDict, 今なら collectionsモジュール内のABC。
だからPythonとRubyの違いは
1. 特別な関数に特別な名前を付けるか、普通のメソッド名を使うか
2. 他のメソッド名と被らない演算子や関数を使うか、普通のメソッド名を使うか
だよね。
Pythonの方が明示的だけど、Pythonの方が面倒と言うことはない。
ウソついた。UserDictやUserListはmix-inじゃないや。 collectionsモジュールが便利なのは本当。
なんだびっくりしたw
>>192 for-elseはたまにしか使わないけど、凄く便利だよね。
try-elseもそうなんだろうけど、使ったこと無い。
for-elseってtry-finallyみたいなもの?
ちょい違う。 else節に行くのは最後までbreakしなかったとき
>>184 a=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)
の方がずっと読みやすい。
>>202 flg=0
for x in リストとか:
if ほげほげ:
206 :
205 :2010/02/13(土) 20:01:29
>>202 ごめ、途中で書いちゃった
flg=false
for x in リストとか:
if ほげほげ:
flg=true
break
if not flg:
むにゃむにゃ
を
for x in リストとか:
if ほげほげ:
break
else:
むにゃむにゃ
で済ませられる。
例えば、全部試してみたけどダメだったよー、みたいな処理いれる。
便利な書き方だけど、直観的な文法ではないなぁ>for-else
簡単な素数計算 for i in range(100): for j in range(2,i): if i % j == 0: break else: print i
>>186 括弧が明示されている限りはインデントを気にしなくていい、と解釈していいのかな?
インデントにちょっとびびりすぎてたかもしれない。さんくす。
>>187 動いた!ありがとう!
三項演算子は消えゆく運命かと思って黄昏れてたので、ちょっと本気で嬉しかった。
>>190 FAQだったのか……すみません。
正直「Pythonは若干ハイレベル」という思い込みと「インデントさえできれば大丈夫」という偏見があったので、
実際に触れてみて、想像と現実とのギャップに戸惑った部分が多いと思う。勝手な思い込みで文句たれて本当申し訳ない。
正直ここでいろいろ言ってもらって、だいぶギャップが埋められたみたいでありがたく思ってる。
>>192 あれは素直に驚きました。
Pythonって、他の言語のいいところを参考にしながらもそれをそのまま取り込まず、 常識にとらわれずに、一番合理的な方法を考えるからな。
それは無い
>>208 だと0と1が入るので一行目はfor i in range(2,100):だな
つい__dict__をいじっちまう
>>209 210みたいなコメントを見ると引く気持ちもわかるが
Pythonの実装は、基本、実用性重視だし
単なる実装の都合上の制限だってある
とりあえず本家サイトのFAQを見るといいよ
http://www.python.org/doc/faq/ General Programming FAQ と Programming FAQ の
目次を眺めると『みんな同じ疑問を持つんだな』と癒されるはず
>>198-199 おぉ、collectionsってdefaultdictだけだと思ってた
この抽象基底クラスのテンプレートはいいね!!
俺のメイン環境は2.5なので使えないけど・・・
便利なものはどんどん真似しあって欲しいね
>>207 直感的だよ
そうじゃないと思うのは今まで for - else の無い言語で頭が毒されて来たからだよ
>>215 英語的には直感的じゃないような気がする。作者もネイティブじゃないが
値がを返す構文は基本的に後置修飾だから 一貫性はあるんだけどね
>>215 直感的にはbreakしたときに実行される気がする。
何時だったか同じ話題が出たときはそんな意見が多かった印象
>>218 一時期日本語ドキュメントもbreakしたときに実行されるって書いてあったw
それはさておき、実際問題としてbreakしなかったときに実行する方が需要あるし、
「最後まで止まらなかった場合に実行する」という意味で try-else と整合性あるし、
やっぱり else は今の仕様が合理的だと思うよ。
というかbreakしたときに実行ってあんまり意味ないよねw breakが1箇所ならその直前に書いとけばいい話だし、複数箇所でbreakすることも少ないし。
>>218 もしその意味なら finaly かな
else だったら誤解は無いと思う
>>221 finaly なら break してもしなくても return しなくても実行される気がする。
いろいろと細かい資料とか読んで
>>210 の言ってることにちょっと納得。
個人的には、クラスの定義方法を見て、今までの細かいとことか結構どうでもよくなった。
これは……慣れるのに相当時間かかりそうな気がする。
他のOO言語から入った人は、特に違和感とかなかった? 自分毒されすぎかな?
>>223 むしろ、違いを見つけてはなぜそうなっているのかを知るたびに
「なるほど!」の連続で楽しかった。
>>222 try:
print 'a'
raise 'b'
print 'c'
except:
print 'd'
else:
print 'e'
finally:
print 'f'
for 中で break することを raise したことに置き換えるなら (
>>218 の言う直観ってそういう意味に取れたから)
except と finally へ行ってくれれば良い訳で
else はあくまで最後まで except へ行かずに済んだ場合の処理ということで直観に従ってると感じる
>>223 元々はアセンブラとか 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 要らなくなってた
三行で要約↓
ワナビーがルビ厨になってPython信者に宗旨替えした
list.sort(reverse=True) これと list.sort() list.reverse() って実際の動作ではやっぱ前者の方が軽い?
試してみればいいじゃな
い
timeit
いっしょだった
比較関数でリバースさせるようにしたらどうなるかな
[::-1]
いっしょってことは、内部的にはreverseの値によってCでの比較関数を変えてるんじゃなく、正順にソートして逆転してるってこと? リストである必要がないなら、reversed(list.sort())でイテレータにするのもアリかなぁ。
list.sort() list.reverse() これだと実際に取り出すまで reverse 始まらないのかもね
ソースを流し読みした感じだと list.sort(reverse=True)とlist.reverse()は内部的に同じCの関数を呼び出してる Python使いが意識するべき速度差じゃないな
つまり入り口が違うだけか
質問書いた者だけどありがとう バイトコンパイルされたファイルはreverse()の方が小さかったから何が違うのかと思ったけど同じなのね
そりゃまあ引数付きのメソッド呼び出しより、引数なしのメソッド呼び出しの方がバイトコードは小さくなるわなぁ。
>>242 それでも list.sort() と list.reverse() 二回呼んでるのは無駄だよね
律速されてるのは C の関数の方だからたまたま影響出ないだけで
どういうアルゴリズムでなのかはよく追ってないが list.sortでreverse=Trueを渡してやると反転処理は2回行われている インタプリタがもう1行余分に処理するのに必要な計算量は知らないけど それらのバランスも含めてPython使いが気にするような速度差ではないと言った
.sortのreverseフラグはソートメソッドで2行使わないためだろ ソースでもreverse=Trueって書いてあった方がわかりやすい。
木を見て森を見ず
乳を見て顔を見ず
あなる舐めてかなる舐めず
sorted とか reversed とかだと違うんだろうか
>>252 a = sorted(a) すると、 a を変更せずに新しくソート済みリストを作った後に
a に代入するから、 a.sort() よりも遅いしメモリを食う。
組み込み関数ってCで書かれてないの?
bltinmodule.cで書かれてる
質問です >文字コードの指定はプログラムの1行目又は2行目に記述された場合にだけ有効です。 と、ありました ・pythonにおいて#はプログラムに影響しないコメントを意味する ・ただし最初の二行の#はプログラムに影響する ・最初の二行において#付きで宣言することはpythonのバージョンと文字コードである と言う認識でいいでしょうか? 他に何か宣言することはあるのでしょうか? 最初の二行に関して言明している記事などあれば誘導お願いします
>>257-258 超速回答ありがとうございます
OSの仕様でしたか。納得しました
あとバージョンは自分の勘違いだったようで
いろいろどもです
どっちも宣言じゃねーよ
エンコード宣言ってかいてあるけど
おまいらもちつけ #!/usr/bin/env python は一行目じゃないぞ # -*- coding: utf-8 -*- こっちが Python から見たときの一行目だ
emacsじゃないので #coding: utf-8 で済ませるな。これでも動くし。
>>262 #!/usr/bin/env python
# hoge
# coding: utf-8
print "あいう"
UTF-8で保存したが「2行目」にある文字コード宣言は無視されてるようだw
import sys print sys._getframe().f_lineno
というかutf_8じゃないにょ?
#!/usr/bin/env python # vim: set fileencoding=utf-8 : import os print u'こんにちは' + os.environ['USERNAME'] + u'さん' vimの場合。短縮形のfencじゃ駄目みたい。'coding'って文字を見てるっぽい。
オブジェクトのクラスを得るにはどうすれば良いですか?例えば class MyClass: pass obj = MyClass() とした時に、MyClassを得るにはどうすれば良いでしょうか
obj.__class__
それって特殊な属性では? アンダーバー付きの属性を直接参照するのってどうなのでしょうか
アンダーバー付きの属性にアクセスしないとクラスの生成も出来ないけど
クラスの生成…? すみません、よく分からないのですが
んじゃ class MyClass(object): pass obj = MyClass() type(obj)
>>271 継承して、コンストラクタ呼び出すとき
class Klass(Base):
def __init__(self):
Base.__init__(self)
ってしない?
そういうときのためのsuperじゃないの?
>>274 親クラスを明示するとtype()の結果が変わる…?!
まだよく解りませんが、とりあえずは動きました
お答え頂き、ありがとうございました
>>275 そもそもPythonではまだ継承自体したことがなかったです…
>>277 >親クラスを明示するとtype()の結果が変わる…?!
というか、Pythonはでバージョンアップでクラスの仕様を変えたのよね。
だから、3.0以前はobjectを継承しないと旧式のクラスになるという仕様なの。
詳しくは「new-style class」でググれ
>>276 super()使ったところで、結局__init__は避けられないのでは?
>>278 詳しい説明ありがとうございます
旧形式/新形式のクラスがある、ということは知っていたのですが
挙動の違いだとは知らず、てっきり
同じ挙動で全然違う記法があるのだとばかり思っていたのです…
…で、その旧形式の記法はきっと直感から大きく外れた奇っ怪なもので
自分の書いている読みやすい記法はきっと新形式なのだろう、と
勝手に勘違いしていたワケです
調べると、まさか自分の書いていたのが旧形式とは…
でもそれを知り、かなり目からウロコというか
今まで「何かおかしいな」と思っていた部分が大半スッキリしました
大変ありがとうございました
if分岐は処理が遅いから、プログラムを書くときは出来る限り減らした方がいいとよくいいますが これって、分岐予測のあるコンパイラ言語でプログラムを書くときだけで Pythonのようなスクリプト言語とは無縁な話ですか?
はい
全く無関係ってことにはならないけど 他にもっと遅い部分があれば目立たないと思う どこで時間掛かってるかを把握しておく方が重要
スクリプト言語はそもそもの処理が全体的に遅いからな 連続ifくらいでは体感出来るほどの遅さにはならないことが多いと思うよ とはいえ、オブジェクト指向的に他の良い書き方がある場合もあるので 連続ifが必ずしも良い方法だとは思わない
MIMEのデコードとかでContent-Typeで処理分けるときとか 連続if以外の上手い方法あったらな〜とは思う
if-elif-elif...と続いたら辞書を使うのがいいよ
加工してdict.get()に渡して関数コールですよ
アスキーアートとか変な日本語コード処理できるようになるのは まだまだ先ですか? そういうのはCでやらないとダメですか?
Pascalでもいいよ
変な日本語コードってなにさ キリル文字?
>>288 CでもPascalでもいいけど、COBOLでやるのが漢ってもんだ。
神代文字だろ
多分アスキーアートのためにロシア語の文字とかつかってること あるみたいで,utf8に変換してもpythonのプログラムを落としてしまう文字がある どれなのかはわかんない 2chのアスキーアート沢山はられるスレのdatに処理かけると必ず止まる
encode / decode の際に ignore または replace を指定していないのかな
>>292 線文字BとかはUnicodeに
あるらしい
a
コード書かずに文句だけ書かれてもなぁ。 cp932じゃなくてshift-jis使っちゃってるとか初心者にありがちなミスだし。
たまにmacの文字が混ざってて変換できないとかはあるなぁ
規格・実装を問わず、全部の文字が1:1でマッピングされてるわけじゃないから 落としてしまうのはしょうがない。 完全なdatを保存した状態で処理したいなら、 バイナリとしてやるか、自分で納得のいくようなカスタマイズをした文字列クラスと 各種処理関数を実装するしかない。 俺は面倒なのでreplaceしてるけど。
2chのdatを適当な正規表現でsplitしたいだけだったけど それだけするならperlでもいいよね
jcode.pl
302 :
デフォルトの名無しさん :2010/02/24(水) 19:01:52
arrayで行列を作成してある行を削除しようとして del(test[row,:]) としたところ ValueError: Can't delete array elements. となってしまいます。どのようにしたらその行を 削除することができるのでしょうか? あとn×7の配列の一番最後に行に1×7の行列を付け足すには どのようにしたら良いのでしょうか?
頑張ってドキュメント書いたやつが可哀想になってきた
マルチポスト先で答え出てるじゃん
arrayって何さ?
ご自分の知識不足を棚に上げ、煽り・罵倒レスで返す方が数多く見うけられます。 そのような方々はスレの皆様を混乱させるだけでなく、 スレの雰囲気を壊しかねないのでお黙り頂き、そのままご退出ください。 また質問者は、リアルで全く役に立たない回答者に知識を披露する場を与え、 優越感と自己満足を感じさせてあげるという、大変貴重な存在です。 故に、質問者を見下した回答、あまりにも儀礼を欠いた回答は厳重に禁止いたします。 忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、 その辺重々ご承知下さい。 以上を踏まえ、各自よく調べ、よく考え、より正確な回答をするよう常に留意すること。
もともと殺伐としている本スレでお前は何を言ってるんだ
誰かが回答してから貼れよ
listならappendとpop使えばいいんじゃないの?
わざわざ array 使ってるんだから空気読めってことじゃん?
import perl でperlを部品として使えたらいいのに
perlで出来ることの大部分がpythonでできるから要らないよ
2年ぐらいプログラミングから離れていて、簡単だと思っていたプログラムさえ簡単に書けなかったw 誰か俺をリハビリしてくれ
>>315 カルネージハート ポータブル
でもやんなさい
Eclipse+pydevを使っているのですが、 """ """で括ったコメントが斜体になってすごく読みにくい。 ググったり設定いじったりやってみたのですが、変更できず。 どなたかえろい人お助けすだせえ。
解決しました!すごく嬉しい! 設定>pydev>Editor>Appearance color optionsで変更したいモノを選ぶ お邪魔しました!
w
eclipseとか使い物にならない そもそもJavaに最適化されてる時点で
.を打って、メンバの一覧と説明がビローンって出るのって、 Eclipse+Pydevの他にある? それないと話にならないし全く使いものにならない。 原始時代じゃないんだよ。
eric4
なんでそんなに挑発的アンド喧嘩腰なの?
PythonWin (標準) PyScripter (ほぼ標準) どっちも出るけど?
>>325 > PythonWin (標準)
これは使った事ないから知らんが、
> PyScripter (ほぼ標準)
できるんか?
設定方法教えれ
なんでjpg?
は?
俺流は、メモ帳で
意味がわからん
>eclipseとか使い物にならない そんなに酷いの?
>>327 あーオレもいんてりせんす欲しいわー。
VisualBASICでいんてりせんすだと、
本当に何も覚えて無くても書けるからな。
334 :
デフォルトの名無しさん :2010/02/26(金) 17:36:34
自分で探せよ
PythonWinひさしぶりに起動したら 日本語通るようになってるな。
PythonWin使い勝手悪すぎわろた
PythonWinってActivePythonに付いてくるやつだっけ? みんなActivePython入れてるの?
pywin32に付いてくるやつだよ
>>332 使ってみればわかるけど特にひどいところはないよ。
むしろwxモジュールを使ったコードを問題なく直接実行できたり(PyScripterでは固まる)
Google App Engine開発向けのプラグインが用意されていたり良いところも多い。
eclipseがいやだって人は起動時間が長いのが不満なんだろう多分。そこで常時起動ですよ。
emacs使いだってやってることだ。
今 eclipse + pydev を入れてみた。 ほんのちょっと触っただけだけど、不満なところは、 既存のプロジェクトを pydev から扱うときの 正しい手順が判らなくて勝手に __init__ を作られたことと、 Ctrl + / でコメントアウトしたら # が行頭に追加されてしまうところと、 既存のファイルを修正したときに、元々の改行文字を無視して設定した 改行文字を使ってしまうところ。 設定したり慣れたりしたら良いんだろうけど、動的型付け言語では正確な コンテキスト補完はできないんだし、やっぱり手になじんだエディタでいいやって なっちゃう。
たぶん今Eclipseに手を出してインテリセンスに依存したコーディングすると 何千行もの関数やメソッドをストレスなく作って後悔するから今のままでいいや
>>322 ,326,327,335
こういった何と戦ってるのか分からない落ち武者が多いところもマイナスかな。
いわゆる統合環境の洗脳
ちょっと文句言っただけで設定出来るだのプラグイン入れろだのうるさいね
>>333 インテリセンス無かったら無かったで対話環境でhelp()使うかマニュアル読むんだが
関数とかメソッドの引数の順番とか暗記するのが普通なの?
>>345 vim のそばで IPython を常時起動。
試しながら、動かしながら書く。
IPythonといえばタブを入力するとワーキングディレクトリのファイル一覧が表示されて困ってるんだがこれはなんとかならないのか?
>>340 そすか
eclipse使ってるんだがそんなに使い勝手悪くないと感じてるから
これが使いものにならないと言い切れる環境って何なのか気になったんだ。トン
>>347 . を書いてからタブを打つと出ないよ。
ある程度空気読んで補完してくれる。
設定でOFFにできるかは知らない。
このIDE厨っぷり、ちんこくさいなぁ
はいはいメモ帳メモ帳
ここの住人はcatしか使いませんよ
354 :
345 :2010/02/26(金) 22:26:04
xyzzyですが何か
>>346 ごめん、helpと同じ類だから例に出さなかったけど自分はそうやってる
何このスレ、CUIじじいばっかだなw 古代技術懐古厨か?(笑) 原始人はマンモスでも倒してろwww
pass
俺は新規コードならtype con > だな 編集は流石にvimだけど
やっぱりちんこだったのか 無能なお前はJavaだけやってろや
CUIじじい
>>343 ,351,358が戦国時代に生きていたら・・・
立派な刀と鎧を持ちつつ精神論を垂れながら、
鉄砲隊に一撃であっけなく倒される役柄www
はいはい、君はJavaでアプリだけ作ってればいいよ 絶対OSやコンパイラみたいなシステムは作ったりしないようにね 迷惑だ
>>355 一度 IPython で動かしながら開発してみたら?
Eclipse+Javaだとメソッドのドキュメントが見えるだけだけど、
IPythonならそのまま実行してみて結果が予想通りだと確認まで
してからコーディングできるよ。
pydevだとメソッド表示はJavaほどにはできないけど、IPythonなら
実際にそのオブジェクトがあるから完璧に表示できる。
関係のない横レスですが、 os.listdir(path)がos.pyに見当たらないんですけど、 どこにありますか?
posixmodule.cかな
py9t4
httplib2ってマルチスレッドじゃうまく使えなかったりする? ThreadingMixInなHTTPServerとあわせて使ってみたけどデータがおかしくなっちゃう
versionは?
httplib2-0.6.0のアーカイブの中のpython2のほう 実行環境はPython2.6.3
えっインテリセンスねぇの? だせーっすよwww
>>359 ゲリラ戦になるだろうな。
サックリと喉を掻っ切られる
Python-x64の環境構成の参考になるサイトはありますか?
mod_pythonのpspモジュール使ってみたんだけど、 どこにpspファイルを配置してみても、カレントディレクトリが "/" になるのは仕様? なにか設定が足りないのかな
CGIにそんな仕様あったか?
>>373 ハンドラに設定したスクリプトが実行されて、そいつがpspファイルを読み込んでるから、カレントはハンドラになるんとちゃうか
>>373 mod_pythonというよりApacheの設定では?
os.chdir()してからpspかければよかったはず。
from mod_python import psp
exec psp.parsestring(xxx)
こんなんだっけ?
>>360 はeclipseがPICとかH8とかの組み込み向け開発にも使われていることを知らないようだ。
pass
eclipse使ってない人は何を使ってるんですか? 参考までに教えてください
秀丸おっおっおっ
じゃあ俺も秀丸
cat
echo
Editra
ed
386 :
デフォルトの名無しさん :2010/03/03(水) 09:31:13
EmEditor+IPython
387 :
デフォルトの名無しさん :2010/03/03(水) 09:46:26
TextMate (Mac限定)
WindowsでPythonコンソールの付いてるエディタと言えば何がある?
389 :
デフォルトの名無しさん :2010/03/03(水) 12:13:06
Editra
379です。どもでした
そういやVimにPythonモードあったな
xyzzy
edlin
copy con
395 :
デフォルトの名無しさん :2010/03/03(水) 16:32:30
unixのtail -fとシェルスクリプトの組み合わせの処理のように、 ラグ無しでログの新規行を取得したい pythonでtailもどきを作ったけど、time.sleepなどでwaitかけてやる分 スマートじゃない気がしてる tail -fのバインディングは存在しない? 良い方法があったら教えて
やりたいことはselectかな
Gemma 2008/01/04 00:40
>もっと賢い方法
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
399 :
395 :2010/03/03(水) 18:06:32
Windows限定ならFindFirstChangeNortification()でFILE_NOTIFY_CHANGE_SIZEを 指定すれば良いと思う
ここ数日Titaniumのデスクトップ版がGUI作るのにちょうどいい気がしてきた htmlとjsわかるやつなら次のコードみるだけで何のことだかわかると思うけど <script type="text/python"> def hoge():window.alert("Python?") </script> こんなのが動く
先生!! hoge() はどこから呼ばれるんですか!!
ああ、最後にhoge() 呼ばないと動きませんね! krollとかいうとってもキモイライブラリがあって、 js/ruby/python/phpで名前空間を共有できて相互に呼び出せるみたい
titaniumって何? インテル入ってる?
俺も丁度Titanium見てた iPhone/Android動かす場合はjsオンリーで書く必要があるっぽいね デスクトップアプリならruby/python/php使えるけど。 スレ違いスマソ
zshのglobが欲しい 再帰検索するためだけにwalkとglob組み合わせないといけないのはどうかと思う
一回書いてコピペでおk
2.6 から可変引数の後ろにキーワード引数が書けるようになったんだけど、
(func(*args, a=1, **kwargs) みたいな。issue 3473?)
ドキュメントが間違ってるぽいんだ。
http://docs.python.org/reference/expressions.html#calls "*" expression ["," "*" expression] ["," "**" expression]
↓
"*" expression ["," keyword_arguments] ["," "**" expression]
誰か英語ができる人、本家に連絡してたもうm(_ _)m
続きは英語板で
もちつけ "*" expression ["," "*" expression] ["," "**" expression] ただしい
positional_arguments ["," keyword_arguments] ["," "*" expression] ["," keyword_arguments] ["," "**" expression] これにマッチするんじゃない?
pythonって配布する場合本体だけでいいの? ランタイムパッケージみたいなのがいるのかな?
py2exe
416 :
410 :2010/03/06(土) 21:57:38
>>412 それだと 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]
じゃないの?
>>414 配布先がLinuxとか*BSDだったらPython入ってるので.pyだけでいいけど
Windowsだったらランタイム同梱が基本。
>配布先がLinuxとか*BSDだったらPython入ってるので.pyだけでいいけど えっ
シェルスクリプトぐらい付けとけよ
>>417 バージョン違ったらどうするつもりなんだ?w
eselect python set 数字 python-updater
419じゃあ無いが、 2.Xと3.Xで互換性が無いの知らずにはまった。 Google Data API のclient libraryが"2.6 or higher"とか書いてあったので 3.Xを使ったらさっぱりインストールできなくて。 2.6.4にしたらあっさり動いた。 てか、Linuxで「配布」するならRPMとかdebとかにして依存関係チェックさせるよなー。
「Linuxで配布」なんて言う言い方やめてくれ 見てるこっちが恥ずかしい
ただでさえ処理の遅いJAVAよりさらに糞遅いPythonなんて 使う意味あるの? C#はゲーム開発もできるぐらいヌルヌルなのに
無いよ C#が世界最強さ!さようなら
>>426 なんとか.py だけ作れば動くのが楽だよ。
でも、なんとか.vbsとかといっしょだなそれでは。
>>426 ゲーム開発しか考えてないC#学生とは違うんです
>>426 ちょっとしたスクリプトにC#使うバカはいませんもの
>>430 なんだ。単なるレス乞食か。
ツマンネ。
>>426 C#も興味はある。VBScript程、糞では無いと聞いているのでね。
なぜ、糞遅いPerlやPHPが沢山使われているのかわからない限りは
永遠に意味は理解出来ないと思うね。
それにゲーム開発するならC#よりC++の方が早いだろ。
なんだってC#なんてどマイナー言語なんか使うんだ? 不思議。
なんだ、この会話のおかしさは。 色々間違えすぎだろ。
>>435 何がどうおかしいか指摘しない限り、
その発言も「おかしさ」の一部になってしまうのだよ。
大多数の住民にとっては明らかにおかしいので あらためてどこがおかしいかなんて指摘するまでもないぞ でも指摘すると C#とVBScript(VB.netではなく)を並べて比較 PerlとPHPはメイン用途では糞遅くない C#はメジャー言語
>>426 がおかしいこと書いてるから
それの意趣返しでふざけたこと書いてるだけだろ
いちいち突っ込んでたらキリがないお
ゲーム作るならC++とか何千年前の化石だよw この分じゃManagedDirectXとかXNAとか全く理解できないだろうな .NETがC#で書かれてるなんて言ったら嘘つき呼ばわりされそうw
>>438 それもそうだね。失礼しました
__init__の第一引数にselfを置く仕事に戻るお
業務アプリはVB.NETで、コピペ&置換とか、 フィールド名を入れると処理用のコードを吐くExcelとかで書いてるけど ハッキリ言って頭脳使ってません!! なので修行のためにPythonとかいじる。 で、定時バッチ処理とか書くのには便利だなとw Excel添付でメール出すとか、30行くらいで書けるし。
つまりC#は文系が使うものだ ユーザ優先な理系はマルチプラットフォームやソースコードの可視性を優先する
Jython最強でAF?
PyPyでいいよ
ここの人ら、頭おかしいの?
ブーメラン
勝ち目はないのに自ら喧嘩を売ってくるC#使いが頭おかしい。 ゲイツの洗脳によって生み出された今世紀最大の異端児
勝つってなにに勝つんだか・・・ よくわからないけどがんばってくださいね
今時Pythonのコードが遅いようなPCなんて無いでしょ そういったポンコツ使ってるなら身の程をわきまえてるだろうし。 むしろwindows、.NETなんてモノを入れれるPCならPythonの速度で悩むことなし
>>442 .NETにも一応Monoはあるし
動的型言語がソースコードの可読性において優位かどうかは大いに疑問があるな
静的型は読み手にかなりのヒントを与えることができる
それと、「ソースコードの可読性」を重視するのはむしろ文系的という気もするが
どうよ
>>450 Pure Pythonで画像をピクセル単位で弄くったり、H264エンコーダでも書いてみなよ
Pythonはインタプリタだから論外な上に、並列計算をしようにもすぐ
GILにつかまるが、C#はC/C++の半分程度の性能は持ってるよ
可視性とか書いちゃう人になにマジレスしてるですか
>>451 まあそういう処理はPythonよりは速いな。
C++の半分程度の性能、ってのはいいすぎだが。
>>451 適材適所って分からないの?
なんでそんなにC#好きなの?
綺麗に書けないの?
>>453 いや、そんなもんだよ
.NETが糞もっさりなのは、起動時にアホみたいにランタイムをロードするのと
GDI+、WinFormなどがうんこだから
>>454 別に俺はC#信者でも何でもないが
C#にはGCも型推論もラムダもクロージャもあるんだが
>>434 が知らないことだけは
疑いようもないなw
VBやPythonぐらいしか使ったことがない初心者は Pythonの良さすら理解できてないと思う
例えばフォームに一つボタンを配置しそれをクリックすると "完成"というメッセージボックスを出すアプリを作るとします C#なら 1.ツールボックスにあるボタンをフォームにドラッグ(2秒) 2.そのボタンをダブルクリック(1秒) 3.ダブルクリックするとクリックイベントのコードの自動で画面が切り替わるので MessageBox.Show("完成");と入力するだけ(2秒) 4.F5を押したらできあがり(1秒) 合計10秒以内にできます 3.の場合 mes まで入力したら自動でIDEが入力してくれるので 実質 ("完成") の部分だけ書けばいいだけですw 初心者でもこの工程を知っていれば同じ速度ですw で、pythonで同じソフト作る場合、どれだけ時間がかかりますかー?
おれは20年くらいかかった
>>459 馬鹿だなあ。
テキストエディタとコンパイラで競争するならPythonが勝つよ。
さあ、SDKとメモ帳で作ってごらん。
言語の話じゃなくてVC#の機能自慢になってないか? from 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()
皆早いだ遅いだ出来る出来ないで言語選んでるのな おいらモンチパイソンのホーリーグレイルが大好きだからpython選んじゃったよ
459はExcell使ってプログラミングとか言ってるのと同類だよ。
趣味プログラマならあれだけど Pythonしかできないなんてやつはいないだろ 必要があれば両方やれば良いだけの話
>>461 あるのに使わないでやれっていうのは無能が言う事
ある道具は使う。もしなかったらなんてのは通用しないよ
適材適所だから対立するようなものでもないしな 俺はPythonが好きだしC#も好きだった
今年の東京マラソンの1位はスバルインプレッサに登場した田中さんです!
>>462 こんだけ打たなきゃいかんというのがね。
. とか打っただけで候補ずらり出るべきw
結局は早くム板にもID機能付けろってことですね
PythonのGUIライブラリの決定版なんて物はないので勝敗は決められません
C#は素晴らしい言語だと思うが、それでもたいていの場合にPythonを使う理由は、
1. 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#メインになるかもな。
>>470 インタラクティブシェルで動かしながら書いてるんで、 . 打ってタブ押したら
候補がずらりとでるけどね。
武蔵がプロレスしたのと同じ 場違いスレ違い
そういやあるC#の本読んだらサンプルコードが同人ゲーでストリーキングだった
//←PyQt4で作成して保存する作業時間が省かれてます from 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
pythonのコメントの書き方すら知らない奴が語るなよ
>>461 正直手書きでも大して変わらんと思う
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);
}
};
480 :
479 :2010/03/07(日) 15:36:24
うぎゃインデントぐちゃぐちゃだw
どうでもインデント
>>477 >ボタンが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_()
>>479 そんなど素人みたいな書き方しませんしw
わざわざ見にくく書くなんて陰湿ですねw
インデントも自動でやってくれるのであんな感じにはなりません
わざわざある道具を使わないで
全部手書きで各意味あるんですか?w
その中で実際に手書きする部分は
MessageBox.Show("完成");だけ
それ以外は自動で生成するでしょw
>>477 >//←PyQt4で作成して保存する作業時間が省かれてます
PyQt4で作成してという意味がわからないけど、テキストエディタ開いて保存する時間は、
VC#を立ち上げて新規プロジェクトを作成する時間よりも早いと思うよ?
み、みんなアイロンパイソンやろうよ
486 :
479 :2010/03/07(日) 15:47:07
>>483 喧嘩を売る相手を間違えてないか?君
まあいいけどな(どうでも)w
相手のもっとも得意とするところでわざわざ勝負してやるPythonスレに萌えた
>>482 ただボタンが並んでるだけじゃないw
そんなアプリみたことありますかー?w
489 :
479 :2010/03/07(日) 15:49:36
>>488 君は知らないかもしれないが、ダイアログエディタで静的にGUIを生成するのではなく
動的にGUIを生成するように実装されているプログラムは結構ある
例えばfoobar2000を触ってみるといい
ID欲しいと思ったが誰が誰か分からないのもある意味面白いな
>>485 IronPython使ったら
>>473 の利点が無くなるから、別にC#で良いんだよ。
>>459 IronPythonでIPythonが動くようになって、Windows.FormsがLinux上でも
Mac上でも完全に動くようになって、.NET製のコマンドラインツールがコンマ1秒で
起動できるようになってから出直して。
>>488 一応言っておくけど、Qtにはマウスでダイアログやフォームをデザインする
VC#みたいなツールもついてくるからね。もちろんGTKにもwxにもある。
起動してマウス握るよりもvim上で書いた方がストレス少ないし2chに貼りやすいから
あえて全部プログラムで書いてるだけ。
多くのユーザーが利用できるアプリを作れても 糞UIじゃ誰もやりませんよw ほんと個人でほそぼそとやる程度w だったらクロスプラットフォームもクソもあったもんじゃないw Pythonの利点てなんですか?まったく見えてこないんですけど PCユーザーの大部分がWindows使っているのに ほんと1%のlinuxユーザーのためにわざわざPython覚える意味あるんですか?
来週の日曜はWindows PowerShellとのセメントマッチをお送りします
>>493 デスクトップマシンの99%がWindowsでも、キミがブラウザや携帯電話から
利用しているサービスはLinuxで動いていることもあるんだよ。
仕事や趣味で普段からLinuxやMacを使っている人には、Windows以外では
手足を縛られる言語は魅力的に見えないんだよ。
Javaで言うSwing GUI ビルダー的な物ってPythonにはないんだっけ?
>>491 起動が遅いってpcショボイんじゃないのw?
起動が早くても処理が遅いPythonのほうが
ストレスフルだわw
>>496 つまり仕事でやってるひとだけでしょw
WudowsユーザーやPC初心者の人がPythonやる価値なしとw
Pythonの利点は色んなことが出来る、に尽きるね。 まぁGUIの静的なコンポーネントをいちいちコーディングするのはマゾくらいだろうけど
Python以外は色んなことが出来ないのかい
そうやって勝手に脳内変換しないでよ。 Pythonを習得することで色んなジャンルの開発に手を出せるってこと。
from PyQt4 import QtGui, QtCore app = QtGui.QApplication([]) mb = QtGui.QMessageBox() mb.setText(u'完成') btn = QtGui.QPushButton(u'押せ') btn.connect(btn, QtCore.SIGNAL('clicked()'), mb.show) btn.show()
WidowsPCしかもっていない 会社でもwindowsの人で プログラミングはじめようとしている人に どの言語を勧めますか? というより、Pythonやっている人で 上記のような人いますか?
>>498 はいはいそうですね。ずっとWindowsしか使わないで良いと思ってる初心者が
デスクトップアプリを始めるにはC#の方が適していますね。
俺はLinuxもWindowsも使うんで現状ではデスクトップアプリ作るのにもPython
使ってるけど、.NETがLinuxでもマトモになってIPythonのC#版が出れば
デスクトップアプリもC#で作るかも。
あと、Pythonの処理速度の遅さがストレスになる事はないよ?
画像処理とかCPU食うところは全部C言語で実装されているor実装するから。
>>502 PyQt4.7になって、シグナルの使い方がPythonicになったよ
btn.clicked.connect(mb.show)
でいける。
>>503 GUI作りたいとかじゃなきゃ迷わずPythonかRuby
なんか2ch復旧してから副作用で規制甘くなったよね 基地外が涌いてうざすぎ
>>504 それはわかるよ
linuxも使っているならおれもPythonやるだろう
移植作業なんて面倒だからな
で、linux使っているならPC初心者ではないわけで
初心者にわかりやすい言語としてPython勧めるなんてどういうこと?
って思うんだよ。英語も理解出来ないとまともにプログラミングできないしね
>>504 1000のテキストファイルから正規表現で文字列検索するなら
Windows上でC#とPythonどっちが速いですか?
PyQtいいなあ使ってみたくなったわ
Pythonってわかりにくい言語か?
最近は日本語でいくらでも情報があるぞ ある限度を超えると英語ができなきゃいけないのは.NETもPythonも一緒
>>508 PC初心者じゃなくてもプログラミングは初心者という事はあるでしょ?
あと、プログラミングに興味を持っている初心者には、Windows以外の
OSに興味を持っている人も居るでしょ。
あとは、やっぱりIPython。
ドキュメントを読むだけじゃなくて、実際に動作させて結果を確認しながら
プログラムを書けるのは、初心者にも易しいし、初心者じゃなくても慣れてない
大きいライブラリを使うときに楽。
Windowsオンリーのユーザーにとって C#を捨ててまでやる価値が果たしてあるのかということが知りたいわけ ここにいるひとは日常趣味として どういうソフトをPythonで作っているのか知りたい ・ファイルや文字列検索しそのファイルを開くアプリ ・他のソフトを操作するためのAPIを利用したアプリ ・吉里吉里みたいなアプリ ・UMLチックなメモ的なアプリ ・画像ビューアー ・CravingやIrvineのような動画、画像ダウンローダー 例えばこういうソフトをWindows用オンリーで開発することになったとして C#とPythonの2択だったとしてどちらの言語使いますか?
ちなみに、WindowsはGUIとスレッドに制限があるから、IPythonを使うときに ipython -q4thread みたいにしないといけない。 wx なら -wxthread, gtkなら -gthread。 Linuxなら普通にipythonでおk
連投規制もなくなってるんだな
>>513 俺はPythonに慣れているし、いろいろなAPIの挙動をIPythonで手探り
しながらじゃないとWindowsアプリ書けないから、やっぱりPythonかな。
でも、その条件で他人に勧めるならC#だよ。
いや捨てるっつうか、両方出来るほうがよりイイんじゃない? いわゆるアプリはもちろんC#で書くだろうな。 Windowsとプログラム言語の距離が小さいのがC#で、 頭脳とプログラム言語の距離が小さいのがPythonなんだよ多分。
いい加減この板ID必須にしようぜ
>>512 実行しながら〜
実行中でも変更〜
ここがPythonの利便性についてよく語られているけど
それがよくわからないんだよね
C#でも小規模なら一瞬でコンパイルできる
まあ1+2がすぐ表示されたのは感動したけどね
C#なら
Console.Writeline(1+2);
だから
C#はちょっと書かないと文法忘れちゃうんだよな
Pythonなら半年触らないでいても書けるだろうけど
どっちもいい言語だから片方とかいわず両方やったらいい
んで使い分けたらいい
>>520 WriteLineじゃね
PC初心者になんて誰も勧めてないよ。 プログラミングの初心者に勧めてるんだよ。 最初にGUIをIDEしちゃうと、ループ処理すら書けないポンコツプログラマになっちゃうんだよ。 なによりpythonは学習用言語としての実績があるし、GoogleからBitCometなんてのもPython使ってるし。
BitCometはC++じゃね?本家のBitTorrentがPythonで。 いまじゃDropBoxの方が有名だけどな。 あとはバージョン管理システムで今人気の git, hg, bzr のうち二つはPythonで 書かれているとか。 C#で書くと、コマンドのレスポンスが遅くてコマンドライン派に受け入れられなさそう。
そうか じゃあとりあえず、もうしばらくPythonの勉強してみるわk 非常に参考になったから またくるわノシ
pass
CとPythonどっちが良いって言い方に変えるとこんなに白熱しない不思議
で、実行の速さのためにPython使ってる人がどこにいるって?
Pythonじゃ我慢できないほど遅い処理は、どうせC#でも遅いからC++で書く。
>>508 >1000のテキストファイルから正規表現で文字列検索
grep使えば。
速度なんて書いてみないと分からんが、どっちもそこまで大きな差はない気がするぞ。
>初心者にわかりやすい言語としてPython勧めるなんてどういうこと?
わかりやすくないか?
ツールにだっこにおんぶしてもらわないと簡単なGUIすら作れない人がいるような難解言語よりは。
>英語も理解出来ないとまともにプログラミングできないしね
その程度の英語すら読めないとか、バカなんじゃないの?
ていうか日本語ドキュメントもそれなりには充実してるし、ある程度以上になると英語ドキュメント当たらないといけないのは大抵の言語で一緒だろ?
日本語ドキュメントが一番詳しそうなのは、Rubyとなでしこくらいだろ。
もう今日はお客さん帰ったからお開きでしてよ
ていうか、もうこなくていい。 今度来たらRuby勧めてみる。
オウム返しで相手の好きな奴薦めた方が早いな どうせ話聞かないんだし
Small Basicでも勧めとけばいいよ
20年前で知能が停止しちゃってるここの人って・・・
オブジェクト指向大嫌いな俺はPythonもそれほど好きではないが、ライブラリが豊富なので使ってる。
こんどはこっちで暴れてるのか いい加減マルチするのやめれ
型付けがないって 変数名にintとかstrつけちゃうわけ? 名前空間がファイルごとって 大規模な開発になったら変数名がものすごく長くなりそうw
WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10 をディスるのはやめろ
>>536 変数自体に型がない。値には型がある。
C言語ではint i;という風に宣言したらiにはint型の値しか入れられないが、
pythonでは型宣言は不要でiに整数の値を入れた後に文字列の値と置き換えることもできる。
名前でどんな値を入れるか工夫するようなスタイルとは全く違うw
pass
>iに整数の値を入れた後に文字列の値と置き換えることもできる 動的型だからってそういう頭の悪い使い方をするのは感心できないな。 自分の場合、 インターフェース重視のプログラミングをして、行き着く先がTypeErasureみたいな黒魔術なんだったら 最初から静的型などいらぬ、ってノリだなぁ。
静的型付けと動的型付けが混ぜられるのが理想だから、C#はわりと理想に近いんだけど、 もっとMonoにがんばってもらわないとまだPythonの置き換えにはならないな。 遠い将来にはIronPython+C#がCPython+C言語よりも便利になってるかなぁ。
>>541 あんたは啓蒙本の読みすぎw
もっと手動かしなさい
>>540 Type Erasureって何かと思ったらboost.functionで使ってる技術なのか
確かにC++はboost.functionみたいなものを使ってようやく
C#のデリゲートに似たことが実現できる言語だからなあ
静的型でも、OCamlやHaskellだと、C++系列のnominalなsubtypingとはまた全然
違うんじゃないかな
python のリファレンスマニュアル見てて糞だと思うのは 関数やメソッドのパラメータの型が判らないことにいらつく 書かれている動作の説明からどんな型のデータを渡せば良いのか推測するしかない ちゃんとどんなオブジェクトを渡されることが期待されているのかを明記するか サンプルソースでも付けてもらわないと結局色々試行錯誤しなきゃいけない
引数も返り値もちゃんと型書いてると思うけど…
Pythonで2chブラウザ作ってよw
どこまでも他力本願
ファイラが作れるくらいだから2chブラウザ作るくらいなら出来るだろ。 作ったからどうする、ってなるから作らないわけで。
>>552 Pythonのドキュメントがそんなによく書かれてるとは俺も思わんな
もっとも、その手のはREPLで試してdir()とかhelp()とかtype()とかやれば大抵は十分だ
まあ最後はソースだがなw
そういう意味ではコメリカではともかく日本で教育用とはまだまだ言えないのか
初心者用、教育用と言うには2.X系はUnicode絡みがどうにもな 3.X系でJavaや.NETと同様の方針を採ったのですっきりしたが いずれにせよ今はタイミングが悪い 経験的にはドキュメント/仕様からのトップダウンじゃなくて REPLで試すなりソース読むなり、手を先に動かしたほうがよっぽど早いな Pythonの場合 付き合い方がよくも悪くもハッカー的というか
>>552 Pythonのマニュアルらしい書き方じゃないか
上から順に読み物になってるからParserクラスに書かれてる説明をちゃんと理解しないとメソッドは使えない
理解したところで使っていくうちによく分からないことが積もり積もってソース見て親クラス直接触ったり自分で実装しないと痒いところまで手が届かない
urllib, urllib2おまえのことだ
C#でできることをPythonでやるのは時間がかかるな C#なら一行でできるようなことがPythonだと どっかからモジュール落としてきて 英語読んで書き込まなきゃならない 勉強がてらにC#で作ったクリップボード監視するソフトを 移植しようとしたが即効で詰まったわww 一体何に使えるんだよwwこの糞言語w
>もっとも、その手のはREPLで試してdir()とかhelp()とかtype()とかやれば大抵は十分だ >まあ最後はソースだがなw 結局色々試行錯誤しなきゃいけないだろ
>>560 .NETってCRC32すら入ってねえのかよwwwしんじられなあいwwww
まで読んだ
cgi, urlparseも入れてやって下さい
>まあ最後はソース >試行錯誤 RubyもPythonも初心者むけじゃなくて 実際に動作させて結果を確認しながら プログラムを書ける人むけ
チュートリアル1ヶ月かけて読んだけど、 糞言語ってことだけわかった .netに帰りますノシ
自分が使いこなせないだけで糞言語認定ですかそうですか
ほげ言語でもやってろよ
さっさと巣に帰れw
Cをやってた人間からすると、実際に動作を確かめたとしても それが仕様なのか処理系依存なのか未定義動作なのか不安が拭えないんだけど、 そういうのはPythonではないの? それにドキュメントに書いてないことに依存するとバージョンアップで互換性無くなりそうで怖いんだけど
どんどん訳が分からなくなっていきますw
こんなクソ言語に頼るしかない マカやlinuxユーザーがかわいそうですw あれやるにはあれインストールしろ これやるにはこれインストールしろ importimportimport wwwwwwwwwwww めんどくせww C#なら初めからオールインワン^^ 何でも手軽にできちゃいます! しかも実行速度はC++の8割ほど確保できます
>>569 心配しなくても互換性なんか担保されてないし
バージョン3は思いっきりbreaking changeだ、安心しろ
>それが仕様なのか処理系依存なのか未定義動作なのか不安が拭えないんだけど、 Cをやってたら分かると思う
>>564 ちょっとづつ実行しながらじゃないとプログラミング組めないなんて
キャパが足りない低脳向け言語だね
C#もライブラリやDLLあるだろ
>>573 彼が言いたいのは、REPLで動作確認したからいい、でいいのかってことじゃないのかな
まあ10年20年のスパンで自分のコードを活かし続けたいんなら
Pythonなんか使うな
それは間違いない
ロングスパンでコードを生かしたいならCかC++あたりか。 C++とBoostとICU+どこかのGUI入れればある程度のことはできるよ。
win32clipboardなんてどこにあるんだよw どこからインストールできるんだよw そんな情報どこにもないしw あーめんどくせ、やめだやめだ! こういうプログラムと関係ないところで時間かけなきゃならないって 糞面倒くさいことやってらんねーわw それに比べてC#なら即効でチュートリアルが大量に見つかるし 何もインストールする必要がない こうなったら極力w32APIを使わないような リファレンスに乗ってるしょぼい関数使ったアプリを作るしかないな あーつまんねw まさかクリップボードすらまともに使えないとわなーw
>しかも実行速度はC++の8割ほど確保できます おまえさっきまで5割っつってただろ
GCを持ってる言語は遅いよ。ないとお掃除大変だよ
C#とPythonの諸刃使いたる俺への
>>579 の見解が聞きたい
IronおっPython
>>582 クリップボードはGUIライブラリについてないか
Python標準添付で無いだけで
あと両刀じゃないかと
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
python製のファイラってなんて言う名前?
ipython使うぐらいならC#使うわw
好きにしなはれ
あふをリスペクトしたっていうパイソンファイラがあったような希ガス
遅レスだが、
>>552 それは若干日本語訳の問題だな。英語なら message object と書いてあって、
同じパッケージにMessageクラスであることを表現している。
日本語訳するときには「Message型のオブジェクト」とするべきだけど、
まぁ日本語化プロジェクトは人手不足なので多重チェックとかされてないから、
どうしてもこういうのが残ってしまう。
同じように「Foo型のオブジェクト」というべきところが「フーオブジェクト」と
翻訳されてしまっている部分は幾つかあるから、それが判っていれば日本語訳でも
大体なんの型なのか理解できる。
>>563 cgiのFieldStorage・・・というかmod_pythonは鬼門だったなぁ
>>572 互換性は担保されているよ。
アンダースコアで始まっていない物はパブリックAPIだから、いきなり無くなったり
挙動が変わったりはしない。
3で print "sdd" とやるとエラーがでるが?
でるが?
ここはGoogle App Engineとか扱わないの?
>>593 もちろん同じメジャーバージョン内での話だよ。
10年に一回くらいPythonicじゃなくなったゴミの掃除をさせてやれよ。
>>584 GUIライブラリ?なにそれ?
どこにあるの?
どうやってインストールするの?
もうね、こんな初歩的なところで時間がかかるのなんて
やってらんない
キチガイさんはC#の庭の中で引き篭もっててください
pywin32っていまどきANSIなライブラリのような気がしたのだが 気のせいだっけ
>>602 だいたいのAPIは、unicode文字列を渡したらW系APIを使って、str文字列を渡したらA系のAPIを使うようになってる。
引数で区別できないAPIなんかは、〜Wと〜Aの2種類あったりする。
>>603 ああ、それは頑張ってるな
というか、本体のosモジュールと似た実装か
python 3.1 idle ちょっと教えてほしいんですけど class hoge: def msg(self): print("") このあとにインスタンス化するために class gora(hoge): と書きたいのだけど、クラスの定義から抜ける方法がわかりません どうすればいいんでしょうか?
pass
3.1って(object)とかいらないの?
改行したらずっとprintの高さのままなんですが・・・ 再び>>>が出るようにしないと次のコード書けないんですよね?
610 :
607 :2010/03/08(月) 03:01:03
>>609 うーん、俺の環境では改行で行けたんだけど。。。バックスペースもムリ?
>>608 うん、 old style class が無くなったから、 class foo: は class foo(object): と同じ意味。
うまくいきました エラーコード書いていただけでした
pythonやってみた感想 簡単な数式を計算する電卓としては使える
1÷2=0になる電卓をどう使うのか詳しく
1.0 / 2 とする努力も工夫も無い奴に教えることなどない
>>> 1/10.0 0.10000000000000001 なるほど、実に便利だ Lispなら有理数が扱えるが、xyzzyのオマケの電卓は中置記法が使えるので Lispを知らん人でも使いやすいぞ
Pythonの有理数は組み込みじゃなくてライブラリだな。 rationalだっけ?
というかlispからpythonに移行した人多いでしょ
>>>x:704=640:480 これだとエラーがでる
Lispはライブラリがあんまりないもんネ
>>613 >>> 1/2
0
>>> from __future__ import division
>>> 1/2
0.5
役に立たないくせに妙に教えたがりな電卓、かw
凡人は凡人なりの
この言語はデスクトップアプリの開発には向いてないの? 個人でちょろっとしたもの作るだけなんだけど
>>624 汎用言語だから、十分向いているよ。
PyQtかwxPythonがおすすめ。
rubyはWEBアプリ開発用みたいでデスクトップアプリには向いてなくて PythonもWEBアプリ開発用として紹介されているけど Pythonの位置づけってどういう感じなんでしょうか? VB6.0にオブジェクト指向が追加されたものと考えていいのでしょうか?
質問する奴はフシアナしろ!!!!!
>>626 いやどっちも汎用言語で、別にWeb用ってわけじゃないが……
例えばASCIIのRPGツクールはRubyだしな
とは言えこの手のスクリプト言語がWebで多用されるのはそれなりに理由があって、
再コンパイル無しで多くのプラットフォームで実行できて、文字列処理が得意で、
パフォーマンスが大して重要でない(というか、ボトルネックは他にある)ことが
多いからだろう
VBとは全然別物
ボトルネックって どこ?ネット? でも最近では重い処理もサーバでやるからネットもボトルネックにはならなくなってきたよね。 どこ?データベース? でも分散memcacheみたいなのがあると相当早いからボトルネックにはならなくなってきたよね。 どこがボトルネックなんだろう??
>>629 そうマトモに受け取られると困るがw
一般論としては、CPUとメモリの中の計算よりI/Oのほうが比べ物にならないほど
遅いでしょ
たとえそれがローカルディスクであってもだ
もちろんどれぐらいの計算をやるかによるのであって、
「大した計算は自分ではやらない」と仮定しての話だ
>>630 よく考えたらpythonみたいな低速のインタプリタ言語を使うのはUI部分だけだよな。
バックグラウンドはHadoopみたいな分散処理系を使って
UI部分だけpythonみたいな使い分けが重要だな。
632 :
626 :2010/03/08(月) 17:11:09
簡単な言語で探しているとsmall basicが見つかりました インテリセンスで単語候補が出たり デザインのよいIDE、豊富なドキュメント すぐにできるグラフィカルな処理 Pythonはこれ以上簡単なのでしょうか?
>>632 とりあえずその言語で2chブラウザ書いてからまたおいで。
むしろもう秋田から来るなと
フロントエンドのPythonはずっと使われるだろ
Pythonを避けるというより、これからのGoogleはGoを推していくんだろ
Goって碁っていう意味なんだろ
Pythonオワタ
Pythonハジマタ
tkinterをimportしてダイアログを表示するプログラムを作った場合 その機能を1つにまとめて、新しくプログラムを作るときに 一行で表示できるようにすることはできますか?
GoはPython3が無いと動かないよな
フロントエンドもGoogle規模になったらコンパイル型言語とPythonの速度差が 無視できなさそうだな。 でも、Google内部で使う開発支援ツール群はPythonのままだろう。
2.xから3.xへの変化を見て Pythonってノロノロ歩きでC#の辿った道を歩いているように思えるな
それよりGoogleがpython高速化プロジェクトを立ち上げて欲しいな goなんていらんからさ
え?
ん?
Goに入らばGoに従え
PythonのよさはWin環境でもLinux環境でも使えるところだろ。 強制インテンドはすばらしぃ
でも細かいところでwindowsとlinuxは違うところがあるから 実用アプリを作ろうと思ったら環境でコードを分けることになる。 結局のところ、ある程度複雑なアプリの場合は他の言語と同じって事だ。
つまりC#最高ということですね
ploneの使い道がわかりません
>>651 まあ同意なんだが、ネイティブバイナリとそうでない言語には結構差があると思う
早い話が、ネットワーク共有されたディレクトリに置いたプログラムコードを
ホストOSを問わずそのまま実行できるというのは、管理上ものすごく便利だ
>>651 アプリケーションが複雑さと、環境依存の部分のコードの比率との間には相関がない。
だからアプリケーションが複雑になっても「他の言語と同じ」にはならない。
Mercurial, Bazaar, Dropbox, TaskCoach, etcetc... がCygwin 無しでもWindowsで動いている。
a=10 def msg(): a=1 print (a) msg() これでエラーがでない言語なんて怖くて使ってられない
OOあるから環境依存部分は切り替えれば済むだろ なんのためのOOだ
使わなければいいと思うよ
え?何かおかしいか?
>>656 global-aを生成してmsg.aを表示してるだけじゃん。
>>660 そこが問題なんだよ
ローカル変数とグローバル変数が同じ変数名で定義できるなんて
恐ろしいことができてしまうなんて・・・
>>656 Pythonユーザがそのコードを読むときは、msg()の中の
a=1を(set! a 1)ではなく(let ((a 1))と読むので
意図は伝わらないだろう
663 :
662 :2010/03/08(月) 21:09:06
と、思ったが勘違いだったか
>>661 君が使っていて、それが「できない」言語を教えて欲しい
Cでもできるが
みんな動作確認しないの?
def setAge(): a=12 a=21 setAge(): print(a) はわわわわ・・・・
>>661 Name Hidingがある言語の方が普通だろ?
ローカルとグローバルで名前被ったらエラーとか勘弁してくれ
>>667 それが はわわわ だと思ってるのはお前ぐらいだから
一年後に読み返して赤面する前に巣に帰ったほうがいいぞ
>>667 動作確認してないけどこれで動くだろ
def setAge():
global a
a=12
a=21
setAge()
print(a)
はわわ・・・直った
global文ってキモいよね Cのプラグマとか MFCあたりで昔多用されていたUSES_CONVERSIONマクロみたいに見える もちろん意味も役割も全然別物だが
>>670 そうすりゃできるのはわかっているが
グローバルとローカルが
ソースの見た目上明確に区別されてないなんて・・・
大文字でも使っときなさいよ
>>673 いやあんた、Cでもグローバルとローカルの区別は
関数の中で定義したかどうか、そんだけだべ
うーむ、値だけを保持したメソッドのないクラスは作れないのか・・・
超マイナーな商用科学計算ソフトだけどPythonのラッパーが用意されていたことに感動した
>>676 2.6からだけど、namedtupleとかじゃダメかな?
>>673 def setAge() {
a=12
}
a=21
setAge():
print(a)
こうしたらどう?
一応インデントで明確に区別されてるのよ
まぁ Perl の my とか JavaScript の var 的なものが欲しいと思うことはあるけどね
そのsetAge()の例は、Pythonの仕様を理解してしまえば特に困ることはないよ 困るのは、以下のような単純なケース bar = 123 : : var = 456 # barのつもりだった
それって、もしかしてvarやmyの必要性を訴えてるの? varやmyを付け忘れて意図せずグローバル変数にアクセスするバグのほうが遥かに確率高いと思うんだが
>>681 PerlやJavaScriptのように、varやmyを「つけなくてもいい」、
「つけなければグローバルになる」言語ではそうだね
つ単体テスト
静的型な人間は、コンパイル時に処理系にエラーが早期摘出されるほうが いいに決まっていると考えるし 動的型な人間は、どうせ単体テストは必要なのだから同じだと考える 両者が相いれることは無いだろうな
仕事だと静的で単体テストって感じが好き
はわわ・・・・・・ def msgShow(): class Tako: def msgShow(self,msg): print( msg) Ika=Tako() Ika.msgShow("oreIka") def msgShow(): ←ここは何? print("CanITalk?") msgShow() >>>oreIka msgShow().msgShow() error
>>686 msgShow()内で使えるmsgShow()関数
def f(): pass f.a = 'Hello' print f.a
あ、なるほど
class hoge(object): def f(self): pass def a(self): return "hello" c = hoge() print c.a()
def f():print'a' f() f.__call__() def g():print'b' f.__call__, g.__call__ = g.__call__, f.__call__ f() f.__call__() del f.__call__ f.__call__() なんかワクワクしてきた
うにゅ〜字下げされていないとわけわからんw
おいおい・・・まじかよ・・・・ x=1000 def mymoneyis(): return x*2 money=mymoneyis() print str(money)+"en"
それのどこが問題なのかはっきり言えよ
グローバルと宣言しなくてもグローバル変数として 処理しちゃってるじゃん・・・
えっ
そういえば初めの頃俺もそれで迷ったことが有った。 今はなんとも思わんけど。
いちいちモジュールもglobal宣言すんのか
global文なんてあんまり使わないと思うけどなあ。なんのための関数なんだよ、と
まずチュートリアルで勉強したからglobalでは迷わなかった。
確かに不思議仕様だが、実に合理的な素敵仕様でもある。 書き込み時にglobal宣言しなければならないのは、 globalで同じ名前の変数が宣言されていることを知らずにglobalに上書きしてしまうのを防ぐため。 というか、プログラマは自分が見たくも触りたくないglobal変数については、そもそも知っている必要がない。 あるいは、globalを作る人が、別の関数で既に使われている名前の変数を作ってしまっても問題にならないように。 これも、プログラマは関数の内部でどんなローカル変数が使われているかなんて、知っている必要がない。 ローカル変数を明示的に宣言する文法にしてもよかったのだけど、 globalに書き込む必要があるときよりも、ローカル変数だけで済ませられるケースの方が圧倒的に多いので、 特別な処理が必要な場合にだけ、わざわざ宣言しなければならない。 読み込み時にglobal宣言しなくてもよいのは、 プログラマは自分の作っている関数については把握しているべきだし、 そしたら、ローカルで宣言していない変数を読んでいることはプログラマ自身が自覚しているはずだから。 わざわざ明示しなくても、スコープ内にない変数を読んでいるのは外のスコープにあるからに決まっている。 だから、わざわざ明示する必要はない。
別の言語なら、なんたらかんたらが1行でとか言ってる奴に言いたい。 pythonならローカルCGIサーバが1行で立てられる。 多分、そんなことできる言語、他にあんまりない。 けど、1行で書けるなんてのは、偶然用意されてるライブラリに偶然やりたい処理があるってだけだ。 ちょうどその機能だけを使いたいのなら、その言語を使えばいいさ。 Python大好きな俺だって、ちょうど別言語で1行でできる処理をやりたくて、それを今後拡張する意志もなかったら、別言語使うさ。 言語のよさってのは、1行でできない処理を書くときにどれだけ楽に書けるかで決まる。 その答えがPythonかどうかは分からないが、1行で書けるからこっちの言語のが偉いとか言うのは馬鹿げている。
>>703 つまり、プログラマはクラスの内部も
関数の内部も把握してプログラミングしなければいけないということですね
それって小規模ならいいが規模が大きくなるほどものすごく大変な作業
テレビの内部構造を理解していないとリモコンもおちおち触れないなんて
ものすごい言語ですね
どの関数が勝手にグローバルの関数や変数の値を
拾っていったか探しながら、気をつけながらやらなければいけないなんて・・・
君の使ってる言語のある関数は内部であんなことやこんなことをしているかもしれないぞ そういう物騒なことをしないと担保するものは何か考えたらよろし
その場合はコンパイラがエラーを吐いてくれる Pythonの恐ろしいのはエラーを吐かないこと
標準出力に吐きますが?
>>705 どの関数がグローバル変数を書き換えるか、にくらべると、
どの関数がグローバル変数をひろったか、は重要じゃないから
合理的だろ。
だいたい、Pythonにとってはクラスも関数もモジュールもグローバル変数だ。
import os
def foo(): pass
def bar():
global os
os.listdir('.')
global foo
foo()
なんていちいち必要だなんてゾッとする
global変数なんて使わなきゃいいだけや。
たくさん使ってメモリ産業に貢献しなさい
global変数って何ですか?
静的型言語の構文が魔法みたいに実装者の意図しない挙動を防いでくれるって思ってるのが若干一名いるな
すべてpublicでどこからもアクセスできるのが問題 しかも型宣言もないから意図しない動きをする プログラムのどこからでも書き換えられる危険性があるなんて やってられないわ
どんまい
プロパティもないしな いちいちメソッドでアクセスなんてめんどくせ
__
C#4.0についていけそうにないからってPythonスレに来てわめきちらすのはやめてほしいです
property()も知らないとか 型宣言あっても誤動作上等だし ダックタイプ最高!!! 硬いだけが売りの言語とかゴミですwwww
@property def x(self): return self.__x @x.setter def x(self, value): self.__x = value
最近使いだしたデコレータ
デコレータは美しくないから嫌い 言語の構文はごくシンプルな少数のパーツから構成されるべきだと思う
うーん、確かにデコレータはRubyのブロックみたいに 「これ一つあればなんでもできるよ」って感じのオールインワン臭がするから、 見ようによっては微妙なのかもしれないね。
なんかさ、どの言語も満足できない・・・ 俺言語作っちまうか。
どの言語も満足できないからLispでいいや
俺も趣味プログラマだから schemeでいいや 楽しいし
Lispなめんなよ リストしか無いんだぜ
俺ホワイトスペースでいいや
Lispはlinuxでしかまともに使えない
Lisp・・・ニヤニヤ
おっと、Lisp vs Python戦争勃発か
Prologも入れて下さい×
まあ正直Prologさんは孤高すぎて勝てる気がしない 何気に影響力あるし
言語オタやRuby厨を排除するために、クラウドの話でもしようぜ!
クラウドといえばerlangだろ
時代はπ計算ですか
実はパイ計算流行らせてるのは俺
またruby厨が自演してるのか
Smalltalk
もうJavaScriptでいいよ
でいいってなんだよ
もうJavaScriptがいいよ
ラッパ作るなんて面倒臭いことせずに どの言語からでも呼び出せるライブラリ仕様ができたらいいのに
>>746 JVMとかCLRはわりとそんな感じじゃないか
Parrot
腐ってやがる、遅すぎたんだ。>Python3
腐ってんの?
きもちわるいなー
752 :
デフォルトの名無しさん :2010/03/09(火) 22:39:40
なんでidでないんだここ
IDないから書き込めるんじゃないか。
754 :
デフォルトの名無しさん :2010/03/09(火) 23:00:09
定期的に基地外が現れるから困る
きょうはここだったか
>>705 規模が大きくなっても、クラスや関数を分けないのならそうなる。
Pythonは簡単な言語だが、どうしようもない馬鹿のための言語ではない。
OOじゃない関数型のelispはclassname-action-about-localname みたいな 伝統だけで棲み分けがなされててある意味すごい まあ、たまに同名の関数作る人がいて衝突してるが
関数ってwまだこんな言語やっているやついるんだなw
Pythonはデータ構造が貧弱だな
list, dict, set, deque, heapqの他に何が欲しいの
>>761 肝心要の関数的consリストと末尾最適化が無い
pyLINQ なんてないすか
末尾最適化ってデータ構造なのか
>>766 違うが、consリスト「だけ」あっても意味が無いからな
もうだめだこのスレ
私女子中学生だけど このスレきもちわるい
772 :
395 :2010/03/10(水) 13:15:56
女子中学生はまだ女になってないだろ
>>770 代数的データ型ってなんぞ?
Rational型みたいに、演算子オーバーロードした値型を作るのじゃだめなん?
>>773 ダメダメ、全然ダメだ
Haskellの代数的データ型が強力すぎるのかもしれないが。
>>774 代数っていうから演算子による演算が定義されることかと思ったよ。
さくっとWikipediaを読んで、動的型付け言語には向かない機能だと思った。
オブジェクト指向的なメソッドのオーバーライドで解決するのに比べて、
新しい機能を取り込む明確なメリットがある?
メリットが判りやすい例を示して。現在のPythonicな方法と比べて、明らかな
メリットがあるんだったら Python idea で提案できるから。
>>770 ではないが
代数的データ型はパターンマッチ&再帰的アルゴリズムとの合わせ技で
初めて力を発揮するもんだと思うが
リストや木のような再帰的データ構造を表現するのが非常に得意で
当然再帰的アルゴリズムとの相性が良い
Haskellでコンパイラのようなものが書きやすいといわれる所以だろうな
パターンマッチでは、大雑把に言えば
subtypingによるポリモーフィズムを使わず
Pythonで言えばisinstance()で分岐させる形になる
そんだけ取れば泥臭いんだが、帰納的で、形式として数学表記に近い形になる
別に静的型じゃなきゃ意味が無いってことは無いんじゃないのかな
Lispみたいになんでもリストってんじゃなくて
Pythonは動的だが型付けはむしろ強い言語なのだしな
あれもこれも取り込んでダイナソー化して身動き取れなくなるのはいやだ 「あれがないじゃんプギャー」って言う人には理解できないんだろうが
Wikipediaにあった例を試しに実装してみた。 冗長だけど、やっぱり構文の構成要素を増やしてまでほしい機能じゃないな。 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())
Pythonって宣言型言語の影響は強くないし 取り込んでもしっくりこないからいらないね
コード貼るならリザルトも貼ってよ インデント直すの面倒なんだよ
OO的に実装するとこういう感じか。 データ構造と操作を分けたいなら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()
>>781 あー、インデントは変換してから書き込んでるんだけど、一応結果はどっちも
3
0
ね。
784 :
782 :2010/03/10(水) 14:32:29
うぉ、
>>782 で継承するの忘れた。
ダックタイピングだから忘れてても動くんだな。
786 :
782 :2010/03/10(水) 16:09:12
文字列扱いなのが残念だけど、文法として定義されてない以上無理なんだよね。 もう少しHaskellっぽいパターンマッチとか取り込んでくれると面白いんだけど、 既存のクラス型とうまいことマッチしないか。
やはり自由度の高さではC#だな
いい加減その荒らしは飽きた。 Pythonしか荒らさないあたり、実は中身はRuby信者なんじゃないかと穿った見方をしてしまう。
C#であぼんするぞ 汚すなよ
>>787 すでに
>>782 や
>>779 みたいにして同じことが実現できるから、滅多に使わない
方法をちょっとカッコ良く書くためだけに構文の追加はムリだろうね。
ちょっとかっこよく書くための方法がダメなんだったら デコレータとか導入してないと思うが
>>792 デコレータはすごく広く使える一般的な仕組みで、利用場面が多い。
それに比べると代数的データ型は訴求力が弱い
>>792 ,793
代数的データ型は単なる便利機能じゃないよ。
その言語の型システムの基盤となるようなものだよ。
だからこそ、Pythonに入るとも入れるべきとも思わないけど。
文字列処理だけperlにまかせるpythonプログラミングスタイルってないのかな perlのモジュールをpythonで制御するような感じ
>>794 Haskellとかにとってはそうなのかもしれないけど、すでに動的型付けOO言語としての
型システムを持っているPythonで後付の代数的データ型を追加するとしたら、
>>779 みたいなコードと等価なコードを簡潔に書くための単なる便利機能にしかならないよね。
>>795 正規表現とかいうPythonicから程遠い代物よりも
パーサコンビネータっぽいものが綺麗に書けると嬉しいんだけど
マルチパラダイムでどんな書き方しても同じ速度でライブラリが豊富でexe吐ける言語があれば言うこと無し
C
文字列処理ならRubyでOK
>>798 マルチパラダイムはできたとしても、どんな書き方しても同じ速度は無理だな。
.NETみたいに、一つの言語にとらわれずに、多数の言語から同一の中間コードを生成するってのが、現実的かなぁ。
>>800 簡単な書き捨てテキストフィルタなら実際Rubyで良いな
ただ大きなコードはRubyで書きたくないなあんまり
大きなコードはやっぱPerlだよな
それは指定されたら書くけどさ…
数値計算、グラフ描画はpythonが一番楽 テキスト処理とwebはperl 数式処理とか複雑なのはlisp 問題はこれらをうまくくっつける方法がないこと
>>805 何いってんの、数値計算・グラフ描画はR最強なのは揺ぎ無いだろ。
数式処理もRかMathematicaだな。
pythonってテキスト処理に向かないの?
Perlは6が出たら死に絶える言語
全部Assembleすればいいじゃん。
Rの数式処理関連のライブラリ数は尋常じゃないからな
>>808 正規表現リテラルがなかったり、Rubyにあるような文字列内で #{} で文字列の展開がないのは寂しいと感じるな。
#{} は便利だから取り入れてほしい。ちゃんと括弧内に式がかけるような感じで。
本格的なPythonプログラマは嫌がるのかもしれないけど
"foo"[0]の型がstrなのは違和感がある (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(....)で逃げられるけど、あまり美しくない
お前の身勝手な「違和感」で勝手に型変換しないでくれよ。
>>> '\\' '\\' >>> print '\\' \ ↑この差はなんなんだ?どうにかなんないのか
>>814 型変換って?
シークエンスに対して__getitem__を呼ぶと、str以外ではシークエンスではなく
シークエンスの要素が得られる
strの場合は、意味的に要素ではなく、シークエンスのスライスが得られるわけで
そこに違和感がある
mapも、入力と出力のシークエンスが対応するようになっていると便利だったろう
という話
まあジェネレータも受け入れる関係で無理なのだろうけれども
もうこのスレは気持ち悪いね。
>>816 >strの場合は、意味的に要素ではなく、シークエンスのスライスが得られるわけで
それもお前の身勝手な「違和感」が生み出す「意味」じゃないのか(www
>>818 うん、身勝手かもしれないし、よくわからないのでPythonユーザとして
素人にstrのことを教えてほしい
「strはシークエンスである」→真
「strはXのシークエンスである」→?
「strはstrのシークエンスである」→?
最後のものは自己言及のループになってしまうので、strの定義としては
採用できないように見える
>>819 str は 文字 のシーケンスである
文字とは長さが1の文字列である
>>820 多分そうなるんだろうと思うが、
2行目の「文字列」とは、つまりstrのことだよね
そのstrをどうやって解決するの?
>>815 なにに混乱しているのか判らないけど、
>>> print repr('\\')
してから、 repr() と str() の違いをリファレンスで確認したら良いと思うよ。
インタラクティブシェルで表示しているのは str() じゃなくて repr() だからね。
そうじゃないと、 '3' と 3 の区別がつかない。
>>821 解決って何?何でそんなことする必要があるの?
例えば「文字列は文字の配列である」という言語があったとしたら、
文字はどうやって解決するの?
>>823 その定義は全然ループしていないし、文字は文字列とは別ものだから、
単に別のところで定義されるのでは?
上の例だと、strの定義としてはループしているだけで何も解決されないよね
>>812 変数展開は何度も出てるけど、コンパイル時に分解する仕様だと
gettextみたいに動的な文字列に対しては使えないから、限定した状況で
のみ使える仕様を増やすよりも汎用的に使える機能一つで色々カバーする
という方針のPythonでは受け入れられないんだよね。
代わりに、 .format() と template が入った。
strは長さ1のstrのシークエンスである →strは長さ1の(長さ1のstrのシークエンス)のシークエンスである →strは長さ1の(長さ1の(長さ1のstrのシークエンス)のシークエンス)のシークエンスである 本当にこんな定義なの? 変な言語だね まあ「身勝手な」感覚なんだろうけど
>>824 たぶん、"シーケンス"を誤解しているから違和感があるんだと思う。
シーケンスとは、イテレート、要素の取り出し、スライス, といった幾つかの操作が定義されて
いる事を言っているのであって、配列型という意味はないし、「要素型」も要求していない。
だから、「YはXのシーケンスです」という言及ができる型もあるけれど、それはYの定義ではない。
整数型が単独で整数型であるように、文字列型は単独で文字列型なの。
まあC言語にも、関数はいくらでもデリファレンスできるという愉快な仕様があるし、 そんな点のひとつやふたつはどんな言語にもある。
print r'\\'
Cにはlongjumpもあるぜ
>>831 ごめん、説明が足りなかった やりたいのはその逆なんだ
\単体を文字列として(つまり'\'みたいなのを表現したい)扱いたいんだが無理かな
>>833 なら、 "\\" で \ が一つの文字列だよ。 repr すると \ がエスケープされて \\ と表示されるだけ。
>>813 map()はともかく、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]。
こんなところで言語議論かと思ったら基本ができてない質問の話だったでござる
>>835 ''.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難シス
map(str.isalpha, "this") が "TrueTrueTrueTrue" だったらおかしいと思うが
>>837 >>> bytes is str
True
>>> bytearray([1, 2, 3])
bytearray(b'\x01\x02\x03')
>>838 そうすね
第一引数が型を保たない変換である場合は、止むを得ないと思う
>>837 実行時間のオーダーが変わる場合には違うものとみなす、というか、
見た目の統一感を壊してでも速いのを用意するというのがPython流だと思う。
たとえば、
a.extend(seq)の代わりにmap(a.append, seq)と書くようにすれば、
list.extendは不要。でも前者の実行時間はn log n、後者はn。
Python2 ではまだ bytes = str を文字列として動かさないといけないけど、 Python3 では完全にバイト列と文字列を区別するようになったから、 bytes の挙動を変えたんだよな。 Python2 がごちゃごちゃしてしまったのは、 unicode が後付けだから 仕方無い面もある。
そもそも、 sum() は数値型の合計を求める関数だから、 リストやタプルを入れるのも良くないんだよな。 明示的にチェックしてrejectしているのが文字列型というだけで。
だめだわかんね print使わずにブログラム中に'\\'と記述しても、そのまま'\\'として処理されるのはなんでだろ
コード全部書けよ
>>844 あー、インタラクティブシェルの罠にはまっているな。
インタラクティブシェルは、入力された文の結果の repr() を毎回表示している。
だから、
>>> print "foo"
foo
で foo を表示しているのは print 文で、
>>> "foo"
'foo'
を表示しているのはインタラクティブシェル。
foo.py の中に
print "foo"
"foo"
と記述すると、後ろの "foo" は何も出力しないので、print による foo 一つしか表示されない。
setも sum([{1},{2},{1,2,3}], set()) っていうふうに書けないよね。 和集合に + 使えないのは、あえてそうしているの?
>>847 {1} って書けないからエラーになってるだけじゃない?それともPython3使ってる?
そもそも、sum() が
>>843 の言うように数値型しかサポートして無くて、 sum([[2], [3]], [1]) が
できること自体ただの偶然だからね。
sum([[2], [3]]) してもエラーになる。
>>845 ライブラリとか、著作権面で怖いので全部はちょっと
outmes = '\\'.join(['', 'x90', 'x3c', 'x64'])
>>846 printで何やってるかわかればいいんだが
みんなありがと、もうちょっと勉強してくる
>>849 それで、
print outmes
したら、ちゃんと "\\" が \ と表示されるはずだよ。
バカはからかって楽しむべき
>>848 > sum([[2], [3]])
これがエラーになるのは、単にsum()の第二引数のデフォルト引数が0だからでは?
> できること自体ただの偶然だからね。
この根拠は?
随分いい加減な言語だね
あ、根拠はhelp(sum)見りゃわかるという電波を受信しますた
855 :
848 :2010/03/11(木) 23:51:10
>>853 ただの偶然ってのは言い過ぎた。
でも、sum()が数値型を期待して設計されているから、数値型以外の動作で一貫性が無いという指摘が
的外れなのには変わりない。
数値型プロトコルの+演算子は合計を返す、シーケンス型プロトコルの+演算子はconcatenationを返すと
決められていて、C言語のAPIレベルでも PyNumber_Add と PySequence_Concatenate で分けられている。
もちろん、同じ + 演算子を通して利用している以上数値型を期待して合計しようとしているsum()に
シーケンス型を渡したら結合するのがスジで、sum()で文字列型が許されていないのは
「"".join() の方が効率良いからそっち使え」という啓蒙の意味しか無い。
>>848 実は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に+メソッド欲しいよう。
>>856 だから、数値型のための sum をコンテナ型に使おうとするなって…
Number の sum としての + と Sequence の concatenation としての + 以外に、
組み込み型のsetがNumberでもSequenceでもない独自の+を実装してしまうと
混乱するだろ。 | の方が合ってるし良いじゃないか。
set().update() でいいじゃん。
ちなみに、reduceを使いたいなら、 functools.reduce(operator.or_, iter_of_sets) だな。 operatorモジュールでも、 operator.add (Number の +) と operator.concat (Sequence の +) は 区別されて別に定義されている。結局は __add__ が呼ばれるから concat の代わりに add が 使えることには変わりないんだけどね。
最初から++をconcatに割り当ててれば良かったんだがなあ まあ今更だけど
operator.addやoperator.or_がLispの+やorのように可変長引数対応なら こういう単純なケースではそもそもreduce()すら要らないんだけどな わざわざモジュールインポートしてタイプ数も長いんだからもっとがんばれ! sum()は正直なにがしたいのかわからん ダックタイピング言語で同じオペレータを割り当てているという意味づけを reduce()の劣化版であるsum()という関数では否定してるわけだよな
>>857 setが | の意味以外の + を定義したらそれはそれで混乱するような・・・。
RubyのSetは + と | の両方同じ意味になってる。
>>851 それはできる
この結果と同じ文字列を、printを使ってコンソールに書くのではなく内部的に処理したい
>>807 Rが数式処理できるのは始めて聞いた
たしか少し前にRからmaxima使う方法とか話題になってたような気もするんだが
>>862 内部的にも \ なんだって。
インタラクティブシェルが出力する形式だと、 \ 一つを \\ と表示するだけで。
>>861 set が | の意味以外の + を定義したら混乱するのは激しく同意
なおかつ、 | と同じ意味の (数値型プロトコルでもシーケンス型プロトコルでもない) + を
わざわざ定義しないといけない必然性も無い。
あとはポリシーの問題。Rubyは必要が無くてもやり方がたくさんあって良いね、Pythonは
必要最低限のやり方だけあるのが良いね、という言語。
>>860 operator.add や operator.or_ みたいな operator モジュール内の関数は、
インタプリタ内部の PyNumber_Add(), PySequence_Concatenate() という低レベル関数に
ダイレクトにマップされていて、言語上の演算子一つを置き換えるためだけの関数だから、
可変長引数に対応するのは違う気がする。低レベル単機能なビルディングブロックであって、
単体で何かをするための便利関数じゃない。
複数引数に対応するのは .update() や .union() みたいな高レベル関数で良いじゃないか。
sum() は、文字列以外では
>ダックタイピング言語で同じオペレータを割り当てているという意味づけを
否定していないよ。PyNumber_Add() は数値プロトコルが実装されていない型なら
ちゃんとシーケンスプロトコルの concat に fallback している。
春休みですね。
>>865 > sum() は、文字列以外では
> >ダックタイピング言語で同じオペレータを割り当てているという意味づけを
> 否定していないよ。PyNumber_Add() は数値プロトコルが実装されていない型なら
> ちゃんとシーケンスプロトコルの concat に fallback している。
でも文字列のconcatだけは否定したいわけでしょ?
他の型も受け入れるつもりなら、デフォルト引数0ってのもいかにも筋が悪いし
>>865 operator.add〜やらの部分
実装がそうだろうというのは想像はつくけど、使う側の感覚として
(+)(1, 2)
reduce((+), (1, 2, 3))
これぐらいlightweightなら別にそれでいいんだけどな〜という感じ
mapやreduceのような基本的なビルディングブロックだって使いやすくなるし
モジュールインポートして
operator.or_
ってLL言語の「基本的ビルディングブロック」っていうには冗長
例えば[1,2,3]形式で表現されたベクトル3つ以上足すときに、operator.addは つかえないわけだよね こうは書けない map(operator.add, [1,2,3], [4,5,6], [7,8,9]) まあ、数値の加算の場合だけならsumでいいけど
それぞれに存在意義があるわけで そういった討論はバカのすること つまりその調子で続けてろ
>>867 だから、Sequenceを入れても同じ+演算子だから一応動くようにしているというだけで、
基本的に数値のsumを取るために用意された関数だからデフォルト値0なの。
文字列に関しては、 ''.join() を使わせるために禁止しているだけで。
数値の為の sum() について、数値以外の引数を入れたときの挙動について
ゴチャゴチャ言う方がどうかしてる。
>>868 mapや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 ウゼーってなるだけだ。
>>871 なんかよくわかんねえなー
sum()の仕様がすっきりしないとは1ミリも思わんの?
数値用だっつーんなら、それこそ数値限定にすりゃいいわけじゃん
[]は受け入れるが文字列はダメ、デフォルト値は0とかいう
意味不明な仕様じゃなくてさ
他の型も受け入れるんなら、本来第二引数はデフォルトつきの引数じゃなくて、
reduceの第三引数と同じで(オプショナルな可変個引数)にすりゃいいわけでしょ?
sum()がビルトインでreduce(), operator.add()が外モジュール
(reduce()に関しては3.Xか)とかこの辺も意味不明だわ
sum()のほうがoperator.add()より基本的なの?
874 :
873 :2010/03/12(金) 12:03:15
ああ、
>>872 にレスが書いてあったw
リロードしてなかったyo
>>873 Duck-typing 言語として、ユーザーが自分で + 演算子を定義したオブジェクトを
サポートしない訳にはいかないから、ホワイトリスト方式で数値型オブジェクトのみを
許可するのは無理。
で、文字列だけに関しては、 ''.join() という計算量が軽くて簡潔な書き方があるから
そっちを推奨するために特別扱いで拒否しているだけで、リストの場合は [].join() が
無いから計算量が大きくても簡潔な map() という選択肢をあえて制限する必要は無い。
春休みですね。
>>875 相変わらずよくわからん
''.join()がstrのconcat専用なのだから、sum()が数値のaccumuratorだと
言いたいのなら、そう実装すればいいだけのように思えるけど
[]を制限しないのがデザインとしての選択なら、デフォルト引数0は明らかに
まずいしね
いちばんダメなのは、 set の update が複数引数を取るのに、 list の extend が引数一つしか取らないことだと思う。 L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。
いちばんダメなのは、 set の update が複数引数を取るのに、 list の extend が引数一つしか取らないことだと思う。 L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。
いちばんダメなのは、 set の update が複数引数を取るのに、 list の extend が引数一つしか取らないことだと思う。 L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。
春休みですね。
882 :
878 :2010/03/12(金) 12:38:58
連投スマソ。なんか接続が悪かった。
>>877 strを受け付けないのは ''.join() を推奨するため。それ以外については、基本的に
+演算子を定義していればOK。
デフォルトの数値がゼロなのは、sumが基本的には数値型の為のものであるから、
sum([]) の結果をゼロにした方が都合が良いから。 (reduceの場合はエラーになってしまう)
Pythonは「一般的な動作をするためのものを引数のデフォルト値に採用する」という
言語だから、[]を制限しないけどデフォルト引数が0なのはマズくない。
0 + X がサポートされない X を使いたかったら、Xのゼロ元を書くというのは合理的。
> sum([]) の結果をゼロにした方が都合が良いから。 ああ、確かに0要素のシークエンスに対応したければデフォルト引数が要るね sum()が美しいとは全く思わないけど、そういう設計方針なのだということは 理解したよ
GvRさんが関数型プログラミングが好きじゃないみたいだから、 その辺の仕様がおざなりなのはしょうがない。 reduceなんかとうとうitertoolsに追い出されたし。
functoolsね
「美しさ」ってなると、Lisp的な reduce(add, seq, 0) の方が美しいんだろうな。 sum(seq) の方がLisp的美しさが無いけど判りやすい。 「よく使う物をデフォルトに」という方針も、一部の物を他の物より優先するのは 美しくないかもしれないが合理的だ。 Pythonは美しさよりも合理的な方向を目指しているから、Lisp的に不細工な 部分があるのは仕方無いよ。
このスレを全部読んでいるのは、全世界で3人位です。
888 get ずさー
3人の中に入れて光栄です
あと一人誰なんだろう.
>>849 よく分からないけど outmes が "\x90\x3c\x64" (バイナリで 90 3c 64) になる事を期待している?
>>894 >>891 の言っているような事をしたいのであれば、
>>> "903c64".decode('hex')
'\x90<d'
とかになるけど。
まだおまえさんが何をやりたいのかの全体像が見えない。
"\x90\x3c\x64" は3文字の文字列だけど
>>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
897 :
895 :2010/03/12(金) 18:54:58
"\\x60" (\, x, 6, 0 の4文字)というエスケープされた文字列を "\x60" (16進で60になる1文字) に変換したいなら、string_escapeで変換する。 >>> "\\".join(["", "x90", "x3c", "x64"]) '\\x90\\x3c\\x64' >>> "\\".join(["", "x90", "x3c", "x64"]).decode('string_escape') '\x90<d'
C#なら簡単に一行でできるのにねw かわいそw
>>898 >>897 で一行でできていますが?
string[] foo = {"x90", "x3c", "x64"};
をC#の一行で変換して下さいな。
できてないじゃないw もともとの本題わかってから言えよカスw
>>900 もともとの本題とやらが判ってるの?
あれだけの情報で本題を掴むなんてスゲーなおまえ。
俺らにも判るようにもともとの本題を解説してくれ。
>>898 Pythonic'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で実行可能ですか?
それはコンパイラ・リンカなしで実行可能ですか?
それはさまざまな環境で維持できますか?
お前が答えられないならば、その比較はファックだ!クズ!
今時Unicodeで悩まされるなんてかわいそw
春休みだねえ
パイ君1号:1おつパイ パイ君2号:自演します パイ君3号:(w
>>897 でできた
まさに言ってる通りなんだ
説明下手ですまんかった、本当にありがとう
C#ならこんなところで立ち往生しなくて済んだのにね かわいそ
俺もC#使いだがさすがにウザイ
C#も4.0でダックタイピングできるようになるんか なんか凄い勢いで進化しとるなあ 最初はJavaに毛が生えたような言語で、そういう客層だったろうに 皆ちゃんとついてってるのか
LINQやラムダ式辺りから付いてきてない人大勢いるわ 俺もF#やるまでラムダ式?おいしいの?って感じだったけど
3.0で既に脱落者多数だったからな
名前付き引数が使えるようになったし、 無名型を使って手軽に複数の値を戻り値にできるし。 本当に良い言語だよね、C#は。 現時点でメジャーな静的型付け言語の中では一番だよ。 あとは、Monoがもっとがんばってくれれば…
みんないいかげんRuby使えよ
>>915 いやだよ。PerlとPythonがサーバー全部に入ってるのに、なんでRubyまで
インストール&メンテしないといけないんだよ。
Pythonに比べて利点が少なすぎる。
確かに ruby はもういらなくなったと感じる
日本語とユニコードがあつかえてgrepもつかえればOK 処理がほしければboostとつないで使えばいいし。 cgiもあるからpythonで十分
pythonもっと普及したら使うんだけどな。
欧米ではGoogleが使うほどに普及しておりますがこれでは不十分でしょうか?
今TIOBE indexみたらPHPが3位でわろた
GoogleはGoに移行するんじゃないのか?
GoはC++かJavaの対抗じゃないの
goでpythonのモジュールが書ければいいのに
pythonもphpもjavaも根本的な部分はcで実装されてるんだよね
JVM は C++ だお
2.x>3.xに移行、もしくは3.x>4.xに移行せずにGOにシフトするなんてことはないの? GOOGLEの戦略ってどういう見解なんだろ 大規模はGO 末端はpythonてな感じで分けるつもりなんだろうか
googleは全てnoopになります
大規模はPythonだろ GoはGoogleOSやAndroidに内蔵するつもりなんだろう
goでpythonのモジュールが書けるのに
すみません 専門用語的に何と言うのかはわかりませんが s1 = 'a+b' s2 = 'c+d' のような入力があるとき s3 = s1 * s2 を実行すると s3 が 'ac + ad + bc + bd' になるような計算をしてくれるモジュールってあるのでしょうか?
何のことかと思ったけど、数式処理ってことか。 Mathmaticaみたいな。
s1 = "1+2" s2 = "3+4" exec("s3=%s+%s"% (s1, s2)) >10
>>934 たぶんそうです
Mathmaticaを使わずにpythonだけで出来れば
>>935 馬鹿は返事しなくていいです
numpy
使ったことは無いがSAGE, SymPyあたりに数式処理の機能があるらしい SAGEはどっちかっつーとCythonで有名かもしれない…… Mathematicaほどの高機能は期待しないほうがいいだろうとは思うけど
>>938 俺にも煽られても仕方ないレベルに見えたけどな
>>939 ありがとうございます
>>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
>>> from sympy import * >>> a,b,c,d = symbols('abcd') >>> expand((a + b) * (c + d)) a*c + a*d + b*c + b*d
ボンクラーズやろ うちはちゃうけどな
>>947 LtU や Hacker News でも一時期話題になった有名な話だからな。
Unladen Swallow を支援しているけど、速度は問題だよねというお話。
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘ おっぱい!おっぱい!
>>943 >>> 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
C#なら独自の演算子作れるから 一行でできるのに・・・ かわいそw
a**2 - b**2 = (a + b)(a - b) になるとは限らないしな。 乗算に関して交換法則が成り立たないといけない。
>>> expand(factor(a**2 - b**2) / (a-b)) a + b
>>955 いやだから
s3 = s1 * s2
と書けばいいだけ
s3がac + ad + bc + bd
になる
C#ならねw
>>> sympy.factor(a**2 - b**2) (a + b)*(a - b)
>>> sympy.factorint(111111111) {3: 2, 333667: 1, 37: 1}
猿は覚えたてのオナニーを死ぬまでやるって言うな
ライブラリがなければ何もできないバカばっかw アルゴリズムぐらい自分で考えろ
>>961 おれならGSL使ってパパっとやっちゃうね
4つ引数取るクラス作って a*c + a*d + b*c + b*d の計算させればいいだけじゃんw 何が難しいのよwww
なんかもうスレが幼稚園と化しとるwww 会話のキャッチボールが全く成立しとらんwwww
192のせい
じゃあ、次スレタイはPython幼稚園だな
園児に失礼
たった3人でもできることがある。
献血か
千秋楽だろ
>>958 Rubyならそんなこと簡単にできるのに...
みんなRuby使いなよ
もうそういうの飽きた
せっかくのLL言語なんだからインプリメントすればいいじゃん
>>956 え?そうしたくないときでも、そういうふうになっちゃうの?C#だと。
それくらいならいいけど、
(a+b+c+d+e)**10
なんて計算をする度に必要なくても展開されるとか恐ろしくて使えない。
>>> sympy.simplify((a**2 - b**2)/(a-b)) a + b
a_1 + a_2 とか添字と配列処理も混合できるなら乗り換える
C#くらい使える言語になったら乗り換える
Whenever they needs .NET Framework
そうなのか。知らなかった。
用途によってはC#より使えるけどな
ないないww
C# も UN*X に標準搭載されたら試してみても良いんだけど…
rubyでさえ載っていないのにC#が載る訳がなかろう
じゃあ意味無いじゃん…
UbuntuにはMonoが標準で入ってるな。 Earlangも入ってるけど、Rubyは入ってない。
CentOSもmonoがあるね。 iphoneもmonoが動くし、ゲームも出回ってる。
>>989 >iphoneもmonoが動く
クローズドで有料なんじゃなかったっけ
つまりC#最強
開発環境は有料だね。安いと思うけど。 monoも有料なんだっけ?よーわからん。 どちらにせよApple様の縛りがあるんだよなぁ。 何で独占禁止法で訴えられないんだ。
993 :
デフォルトの名無しさん :2010/03/13(土) 21:28:30
iPhoneはMonoが動いているわけじゃないだろ…
>>989 >CentOSもmonoがあるね。
デフォで入ってたっけ?
VMwareから拾ってきたのに入ってたんだが、ヘンなの掴んだのかな・・・
だったら「入ってたよ」って答えればいいじゃん
Rubyはバージョン変わると互換性ないからなあ
RubyはC++の熟練者が暇を持て余してやる遊びの言語
>811 逆に「豊富な(統計)ライブラリ」以外には魅力は あまり感じないのは贔屓目すぎかね? そこまで徹底的に使ってないし Rpy でそれなりに Rライブラリは利用できるし、そんなに python+numpyも悪くないと思うけど グラフの描画については… Rについて語れるほど グラフィック関係を呼んだことないんだけど matplotlib と比べてそんなに優秀?
かみちゅ!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。