おっPython
6 :
デフォルトの名無しさん :2010/08/06(金) 03:05:06
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
ウノウがZyngaに買収されて、gumiは脂肪なの?
ウノウって見辛いよね 検索もいい加減だし
PythonのIDEで人気な物ってなんでしょうか? FedoraとWindows使っているのでクロスプラットフォームのものがいいです。
eclipse
NetBeans
pidle
Mr Beans
うんこなう
gvim
17 :
デフォルトの名無しさん :2010/08/08(日) 22:37:01
ぼくらの西尾さんが本を執筆中らしいぞ
Jython本並みに売れそうな予感。
Jython本って売れてたのか。俺もその本買ったけど積んだままだ。 Jythonって結局なんだったんだろう。今も使ってる人いるの?
売れてたよ java-ja脳の内部では
開発が止まってバージョンが上がらなくなってたときは失望してたけど、 今は使ってもいいかなという気分。
あるクラスの中で自分自身の参照をしたい場合 定義中に is not defined を出ないようにするには どうすればよいのでしょうか?
23はダメな子。 22はやればできる子。
>>26 is not defined
こうなったらどうする?
そう、定義すればいい
ああ、こうやったら出るのか。 class Klass: klass = Klass class Klass: pass Klass.klass = Klass でいいんじゃないのか?
ついさっき、python始めました。 文字列の連結で、+じゃなくて、,(カンマ)で連結するとスペースが入るんですが これは、特別な意味があるんですか?
カンマは改行させたくないときにのみ使う
たまに hoge("foo" "bar") って間違えたときに"foobar"とくっついて送られてビックリする
それは普通
32 :
27 :2010/08/10(火) 12:47:56
未経験者 ばかりです ¥(^o^)/
Jython本はPython初心者にとって良い本だよね
良くも悪くもPythonの本じゃなくてJythonの本だからなぁ
Jython本を良い本なんていうのは、メンヘラ女くらいだろ
女がいるのか
九州にPythonはありますか?
Pythonはあなたの中にあります。
西尾さんが執筆した本はすべて良い本だよ。Jython本が代表。
41 :
デフォルトの名無しさん :2010/08/16(月) 02:50:32
ユーザ毎の設定ファイルを置く場所は UNIXやLinux だとホームディレクトリ化のドットファイルだったり 最近のWindows だとAppDataの下だったりと プラットフォームによってまちまちですが、 その違いを吸収してくれるようなライブラリは有りませんか?
ありがとうございました
44 :
デフォルトの名無しさん :2010/08/19(木) 16:57:45
age
weakrefってどんな風に使うのかな?かな?
46 :
デフォルトの名無しさん :2010/08/21(土) 18:54:51
とあるゲームを作成しており、二次元配列に盤面の状態を保持しています。 REDO機能を実装するため、すべて盤面の状態を保持しておきたいのですが、 再帰関数の引数に二次元配列を渡すと、参照渡しになっているため 関数の呼び出し先で状態を書き換えると上書きされてしまいます。 この場合、値渡しにすればよいと思うので、copyモジュールの deepcopy()を使おうと思っていますが、ほかに何か方法はありますでしょうか? よろしくお願いいたします。
そもそも参照渡ししかないんだってw なんでdeepcopyじゃダメなの?
>>47 モジュールを使う以外に、標準的なやりかたがあるのかなあと思いまして。
ありがとうございました!
>>> a = [[1, 2, 3], [4, 5, 6]] >>> [x[:] for x in a] [[1, 2, 3], [4, 5, 6]] こんな感じでコピーして渡せばいいはず。一次元配列のほうが楽だけどな
プログラマでもないのにクォータニオンを使って 任意軸を中心とした回転がどうのこうのを作って言われて Pythonも超初心者なもので頭どっかんばっこんすぱーーーーーんな状態なんですが なんか簡単にやるためのモジュールとか無いでしょうか
つーか何者?
今中学です。夏休みの宿題でどうしても必要で。
最近の中学生はすげえんだな…
クオータニオンは4元数だっけ、3Dゲームでジンバルロック回避して任意軸での回転させるのに使った覚えある Pythonと超複素数どっちもわからんなら、どっちかからある程度やっていく必要あると思うけど 適当に結果だけ理解して進めるならググってC++なんかのコードを参考にやってみるのがいいんじゃないかな そもそも3Dやるんなら、自前でやらずに3D系のライブラリのPython用インターフェスを探したほうがいいな
pythonで3dゲームて
俺もググった以上の説明はできんから、他にこのスレで分かる人いなさそうなら、 Python以外は他にあたったほうがいいかもしれんな。3Dプログラミングスレとかあるんじゃないの。 俺は数学好きだったが、高校時分に当時3Dグラフィックス数学だったか、あと超複素数の本読んでも その部分はさっぱりだったな。 相当前の話しだけど
Rubyで3Dゲームほど珍しくないと思うけどな。 海外のフリーで使えるような主要な3D EngineはPythonから使えるの多いし、 Panda3DとかPythonを組み込みスクリプトとして使う3Dエンジンもあるくらいだw 商用は殆ど無いと思うけどね(Panda3Dは商用でも使われた例ある。元々そういう用途だし) ゲーム用途じゃなかったら、3DのオーサリングツールはPythonで制御するのとか拡張するのばっかりじゃね?確か
58 :
50 :2010/08/22(日) 05:23:07
>>54 色々とありがとうございます。
使用目的はゲームではなく
映像制作においての3DCG制作ソフト内にて
ルービックキューブ回転のアニメーションを付けるという
とても単純な作業を求められているのですが
その中で
>>54 さんのおっしゃる通りジンバルロックの問題等が回避できず
聞き回ってみた所、ルービックキューブ全ての頂点を
クォータニオン?の任意軸を中心に回転させることが必要だとのことで
以前2chの3Dプログラミングスレのような場所でも聴いてみたのですが
ソフト毎に違うから使用ソフトのスレに行けと言われましたが
私の使用ソフトであるMayaのスレッドは、質問すると喧嘩になるばかりで
返答が返ってくることが少なく、特にこういったプログラミング関係の詳しい話では盛り上がりません
おそらく回答してもらえることはないと思われます。
Maya内で使用できるPythonのスレならばと思い質問させて貰いましたが
解決しそうにないのであれば、諦めるしかないようですかね…。
正直自分でも
>>50 はバカな文章を書いてしまったと思いました。
Maya内のプログラムはMelという言語も最初からあって最近Pythonが使えるようになったとのことで
移行してきたのですがどう質問すれば皆さんに答えて貰えるか分からないと思った結果
頭がこんがらがってあんな風になりました…。
Mayaのことなら、Mayaのコミュニティが他にもあるんじゃないの?2ch以外に 掲示板とかMLとか知らんが 日本にないなら海外で検索だな
四元数か。 三次元の回転をジンバルロックとかの問題無しに解決してくれる魔法と思って、 中身のことを気にせず(気にし出すとよくわからなくなる)行列の変換に使ってやればよい。 回転の中心軸と回転角から四元数を求めるのは公式通りに。 日本語で読める、プログラミング寄りの(数学寄りでない)解説書が工学社から 出てたと思うけど、自分は読んでないので内容はわからない。
Mayaのスレッドは、質問すると喧嘩になるばかりで 返答が返ってくることが少なく
CG板はマ板とム板がごっちゃになったような所だからなあ
C++でやったほうが良いと思いますけど
64 :
デフォルトの名無しさん :2010/08/22(日) 11:08:19
パイソンスレでジンバルロックが出てくるとはおもわなんだ。
>>58 理解すべきはpythonやmelとかいう言語のことじゃないだろ
マスマスマスマスマスカルポーネ
Mayaスレッドで質問するのはまずいからここでするしかない、というのはわかるが・・・
68 :
デフォルトの名無しさん :2010/08/22(日) 13:45:32
69 :
デフォルトの名無しさん :2010/08/23(月) 10:25:25
Google appengine がJava対応して AndroidもJavaだし(バイトコードは違うけど) GoogleはJavaシフトかと思ってたんだが Oracleに訴訟起こされてPythonもまだ 使われ続けそうだな。 まぁGoogleがどうこうってのはあまり Python界にはあまり関係無いのかも知れないけど。
ほとんど関係ない
オラクルがオープンソースの敵であることだけは確実
MySQLこの先どうなんの?
My SQuL, Your Beats!
>>69 実際のところはプロダクトではGoogleのバックエンドほとんどJavaで
むしろ、Pythonはほんの少しって聞いたけど・・・
この話、どっかにソースないかな?
>>71 OracleがGoogleのように競合をどんどん買収しておいて潰す(矛先が結果としてオープンソースプロダクト)
みたいなことになったら阿鼻叫喚じゃ済まないな・・・
ORACLEは金のためならなんでもする会社
Oracleを嫌って飛び出した元Sunの開発者は沢山いるよね
もっとも、Sun自体が保守的になって、過去の技術指向の会社ではなくなっていたから、 技術者の流出は数年前から既に始まっていたけどね。
SUNがどうあれORACLEがオープンソースの敵であることは間違いないけどね
オラクル関係者が必死すぎて可哀想
>>75 googleが潰したオープンソースプロダクトって?例えば?
Oracle関係者は糞過ぎるからPythonを使わないで欲しいです
>>81 嘘を蔓延させたり,訴訟を起こしてまで金儲けしようとするのがオラクルの手法
>>83 ライセンスだけで食ってる会社って最後はそうなる運命
''.encode('utf(*´∀`*)8'.decode('cp932'))
コマンドの返り値がabcだとして select = コマンド select.replace('ab','cc') これだと上手くいかないのは何故
オラクルが糞過ぎるからだよ
>>> help("".replace) Help on built-in function replace: replace(...) S.replace (old, new[, count]) -> string Return a copy of string S with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.
でけた >>> 'abc'.replace('ab','cc') 'ccc'
>>81 >>75 じゃないが、(Googleがサービス買収して競合をつぶしたように)OracleがOSSを潰すのでは?ということじゃないのかな
>Googleがサービス買収して競合をつぶしたように kwsk
93 :
デフォルトの名無しさん :2010/08/25(水) 12:38:05
>>86 コマンドが何を意味するのか分からないけど、以下のようにしたらできたよ。
>>> select = 'abc'
>>> select.replace('ab', 'cc')
'ccc'
>>> def コマンド(): return "abc" >>> select = コマンド() >>> select.replace("ab", "cc") 'ccc'
2chでバカを矯正することは不可能だと思うけど、OrkutはGoogleオリジナルのサービスだし潰れてないよ。
なんでいちいち癇に障る言い方をするんだw Orkutってどこかの会社を買収して手に入れたわけじゃなかったんだね。勘違いしてたわ
性格
ぱいぱい はあるのに ぱふぱふ がないのはおかしい
ばいばいおさるさん
つくればいい
おらくるがじゃましてつくれない
ワロタ
Apple Oracle Microsoft IBM Google Intel この業界トップ6のクローズ度順
>>86 Pythonでは文字列型は数値型とかと同じでimmutable(変更不能)なので、新しい文字列を返すメソッドはあるけれど、文字列そのものを変更するメソッドはない。
だから、replaceも置換結果に変更するのではなく置換結果を返すだけ。
math.sqrtがそういう動作だったり、tuple.sortが存在しないのと全く同じ理由で。
httplibのBadStatusLineってkeep-aliveのタイムアウトで出るエラーだったのね 分かりづらいわー
>運用が手軽 > > * 開発環境でテストもちゃんとできる まともに使ったことあるひとなら これが嘘だと知ってるんだけどな
出たよ自称識者w
自己紹介乙
開発環境でもテストはできるよ。 範囲が限られるだけ。
それを「ちゃんと」と言えるひとって
どうみても気休めです ほんとうにありがとうございました
108で喋ってる人と109のブログを書いてる人は同一人物だよね? 数字が違うのはなぜだろう。
叩きたいだけなんだろうけど
>108 Googleのサイトつくってるのか、すごいな
そんなにGoogleがバカな訳ないじゃん 開発者が楽になるようにPythonを取り入れてるだけで 負荷のかかるのはC++、Java、WEBならPHPのが楽だし
くやしいのう(wwWwwWWwwwwWwW くやしいのう(WwwwWwwWWwwWWWw
何その死語
高卒レベルの煽り
ぼるけいのうwwwぼるけいのうwww
IDでNGしてーよ
Webでパフォーマンスが必要ならJava一択だろ。 PHPとか何の冗談だよ?
javascript最強ですねわかります
Pythonスレに貼られたリンクを踏むときが一番慎重になる
ニコ動とようつべのリンクなんて踏まないわ
いちいちくだらねえんだよ いい加減にしろよ高卒!
学歴に劣等感でもあるの?
だろうなw
夏が終われば糞専門・大学生が沸くのか ここで燻って何か利益があると思っているのか
136 :
デフォルトの名無しさん :2010/08/31(火) 09:26:19
2.5しか使ったこと無いやつなんだけど、 マルチスレッド対応はどうなの? まぁマルチスレッドと言うよりは ノンブロッキング処理をしたかっただけなので、 ネットワークアプリでもないのにtwistedの リアクターで回してたけど、OSの持ってる スレッド機能がそのまま使えるなら使いたい。
ぼるけいのうwwwぼるけいのうwww
threading.Thread
139 :
デフォルトの名無しさん :2010/08/31(火) 10:27:51
マルチスレッド処理用のモジュールがあったのか、不勉強だった。 マルチコアを使い切りたいという用途だとGILがあるから 何か別の(popenするとか)工夫が必要なのだろう。
>>125 Googleならサーバー増やしたほうが早くね?
いや、逆か。Googleほどになるとサーバー多いから、ちょっとでもパフォーマンス挙げたら
かなり違うか
やはりRubyのほうが優れている言語らしいな。
Ruby使うぐらいならPerlの方がよっぽどマシだな
GILが必要なのはPythonオブジェクトを操作するときだけだから、 zlib.deflateとか、Cで書かれた重いロジックを実行中はGILを開放できる。 Pythonで書かれたアプリでも、画像処理とかCPU食ってる場所がGILの外なら マルチスレッドでマルチコアを使いきれる。
つまりどういうことです?
もうperlでいいやと思ってKENTの本を買った
>>136 multiprocessing とか livevent + gevent 使えばよいと思うの
PythonのスレッドはGILだけでなくそもそも効率悪いから大量に使うようならば設計を見直した方がよいかもね
大量ってどのくらいですか
6つくらい
そんくらいで重くなったりすんの?
GILの取り合いが激しい状況でオーバーヘッドが大きくなる問題があるから、 スレッド6つでも、全スレッドがCPU100%で動こうとするとGILによるオーバーヘッドが 1割を超えるかもしれない。 Python 3.2 ではこの問題は解決される。
Rubyを使うと最初から解決されてるよ。
XRCedを使おうとしたのだがfoldpanelbarのエラーが出て鬱陶しいので 一つ戻してみたら出なかった。(2.8.11.0→2.8.10.1)
そうだね。JRubyはいい実装だとおもうよ。
>>154 Ruby1.8のスレッドは重すぎて使い物にならない。
100スレッドで並列にHTTPリクエストするだけでCPU100%食う。
Ruby1.9のスレッドはPythonと同等。
Ruby1.9は既にPython3を越えているよ。 Ruby2.0ではもはや追いつけない。
検索したらこんなのでてきた
・em-http-request は環境にもよるが 200 並列ぐらいから急激に遅くなる(あるいは落ちる)ので 150 並列ぐらいまでしか安定運用は出来ない
・thread と Net::HTTP で並列アクセスをする場合、 request および response の組み立てはスケールしないが純粋な HTTP 部分だけはスケールする
・thread を使う場合 8,000 並列ぐらいまでは順調にスケールする。それ以上は req と res の組み立てがあるので無駄になる事例が多い。相手のサーバーの速度と req と res の組み立てコストから最適解を計算しよう
・Ruby 1.9 でスレッドを 3000 個ぐらい作ると止まる。 Ruby 1.8 では 16,000 個ぐらい作っても止まらない
Ruby どうでもいい知識シリーズ - 口内炎延焼
http://d.hatena.ne.jp/ssig33/20100728/1280287755 > ・Ruby 1.9 でスレッドを 3000 個ぐらい作ると止まる。 Ruby 1.8 では 16,000 個ぐらい作っても止まらない
> ・Ruby 1.9 でスレッドを 3000 個ぐらい作ると止まる。 Ruby 1.8 では 16,000 個ぐらい作っても止まらない
> ・Ruby 1.9 でスレッドを 3000 個ぐらい作ると止まる。 Ruby 1.8 では 16,000 個ぐらい作っても止まらない
> ・Ruby 1.9 でスレッドを 3000 個ぐらい作ると止まる。 Ruby 1.8 では 16,000 個ぐらい作っても止まらない
> ・Ruby 1.9 でスレッドを 3000 個ぐらい作ると止まる。 Ruby 1.8 では 16,000 個ぐらい作っても止まらない
どうでもいいけど、コア数個しかないのに並列処理どのくらいいみあるんだろ
ssig33 wwwwwそんなペテンのエントリ持ってこられてもwwww
Rubyとの比較よりperlとの比較はないのか
Rubyのスレかと思った
RubyスレPython支部
>>159 HTTPならIO待ちだから、1個1個のリクエストを十分高速に処理できて、
スレッド切り替えも高速なら、数千並列が可能。
Rubyの場合、1.8のスレッド切り替え時間の遅さと、GCの停止時間がネック。
165 :
デフォルトの名無しさん :2010/09/01(水) 12:30:12
どれが本当の話なの?
phpでいいじゃん
167 :
デフォルトの名無しさん :2010/09/01(水) 12:42:20
ペテンわろた
169 :
デフォルトの名無しさん :2010/09/01(水) 13:01:26
Pythonで3000個とか16000個くらいスレッド動かしてくれる人を期待age
PythonはGCの停止時間も(循環参照を作りまくらない限り)ないし、 64bitマシンなら普通に数千スレッド使えるよ。 import threading, time def foo(n): while True: time.sleep(n*100) print n threads = [threading.Thread(target=foo, args=(n+1,)) for n in xrange(4000)] for t in threads: t.start() 実メモリ2GBの64bit Linuxで、仮想メモリは31.4GB使うけど実メモリ(RES)は83MB。
>64bitマシンなら普通に数千スレッド使えるよ。 time.sleep(n*100) しかしてないからじゃね? 普通はQueueに入れたり出したり色々処理すると そっちの競合で渋滞になるっしょ
>>171 のをちょと改造してみた
sleepが1秒で、1万スレッドが切り替わりまくっても、Core2Duo 1.86GHzのCPU使用率は1%だった。
スレッド全部作り終わるまでは、1秒sleepなのに1.05秒以上かかるケースがちょろちょろあったけど、
スレッド作り終わった後は安定してる。
Ruby1.8で同じ事やったらスレッド切り替えだけでCPU100%使うだろうし、Ruby 1.9でもやっぱり
GCのせいで安定した応答性能を実現できないだろうな。
import threading
from time import time, sleep
def foo():
while True:
t = time()
sleep(1)
t = time() - t
if t > 1.05:
print t
for _ in xrange(10000):
t = threading.Thread(target=foo)
t.daemon = True
t.start()
print "100000 threads are created."
sleep(1000)
お前がRuby最高と思うならそうなんだろう、お前ん中ではな。
File "C:\Python25\lib\threading.py", line 434, in start _start_new_thread(self.__bootstrap, ()) thread.error: can't start new thread
だれがいい加減なことを言っているのだろう
>>176 32bitマシンでやってない?
メモリ空間が広くないと、ネイティブスレッドはたくさんは作れない。
その場合、stackless pythonなり、greenletなりの、マイクロスレッドを使わないといけない。
>>178 ありがとうございます
32bitでした
でも1000個も作れれば充分なのでこれでいいです
っていうかこれだけ作っても常時CPU10%も行かないので満足です
(生成中だけは一時的に増えますが)
>>176 threadingのstack_size()でスタックサイズを変更すればいいじゃない
183 :
182 :2010/09/01(水) 21:09:30
スレッドのメモリ管理を今すぐ勉強するんだ!
>>173 PythonにはGILもんだいがあるから関係あるだろう
実質1スレッドしか同時実行できないのに各スレッドが重い処理を行えば悲惨な結果に・・・
>>184 「Queueに入れたり出したりの競合」は、GILじゃなくて普通にオブジェクトのsynchronizeだよね?
GILが問題になるのは、CPUぶん回すようなGILを開放しないコードが複数スレッドで動くとき。
そっち方面には全然詳しくないけどthreadよりmultiprocessing使えって なんかに書いてあった気がす
Ruby試しに使ってみたけど、速いねこれ。
Ruby信者w
Rubyが速いとか(笑
>>185 別に反論するつもりじゃないけど
外部に作用しないPython環境内で収まるコードのがレアじゃない?実際
>>191 >>185 は、
>>184 に対するレスで、
>>172 が例に挙げているQueueに対する出し入れは
GILが無い言語でもスレッドセーフを守るために同期するからGILが問題になる例として
ふさわしくないという反論をしたうえで、GILが問題になるケースを挙げているだけ。
>>174 の実験結果が、Pythonで沢山のコネクションをスレッドで裁くサーバーを作っても
実用になる事を示しているのはちゃんと理解できる。
だれかが勝手にGILの話をし出して混乱させていることは分かった
>>192 >Pythonで沢山のコネクションをスレッドで裁くサーバーを作っても
>実用になる事を示しているのはちゃんと理解できる。
GILがある限りそれでは実用にならねーよ
↓では実用にならないサンプルを
>>194 が晒してくれます
>>172 の
> time.sleep(n*100)
> しかしてないからじゃね?
はその通りじゃないの
>Queueに入れたり
とか微妙なことを言うから混乱するんであって…
GILを開放する
time.sleep(n*100)
のかわりにピュアPythonでなんか処理をやってれば、
そこで刺さって直列化されるわけでしょ
197 :
196 :2010/09/02(木) 10:36:38
ああ、「数千スレッド使えるかどうか」の議論には確かにGIL関係ないね 直列化されようが、使えるには使える ただ直列化されてしまうなら、そもそも並列化する意味は無い ってことだよね
>>197 そもそもこの話題
>>136 から始まってるから、
>>192 が結論で、
GILが邪魔になるケースならmultiprocessingを使うってのは
>>143 から既出なんだが。。。
複数のIO待ちを並列に処理したい、あるいはC言語でかかれたルーチンを並列で動かしたい場合は
スレッド、GILを開放しないピュアPythonコードをマルチコアで高速化したいならmultiprocessing
特定の条件だけ挙げて「GILがあるからPythonは並列処理できない」という主張はFUD。
>>197 それを「使える」と表現するか「使えない」と表現するかの違いだろう
まともな技術者なら使えない・使い物にならないと言うだろうな
まともな技術者(キリッ
>>198 >特定の条件だけ挙げて「GILがあるからPythonは並列処理できない」という主張はFUD。
だれもそんな事いってないのにな
熱中症か?
どうみてもRuby信者です ほんとうにありがとうございました
おわり
204 :
デフォルトの名無しさん :2010/09/02(木) 14:32:17
スレッド周りは詳しくないんだが、 スレッドって並行処理させるのが目的なら、コアが数千もないのに数千スレッドってまともに処理できなくない? デスクトップOSで動いているたくさんのアプリみたいに、軽い処理もしくは短時間の処理後に待つ時間が多いならいいのかもしれないけど
>>204 並行処理といっても、「処理」がCPUコアを使うものとは限らない。
例えばクローラーだったら、並列に1000サイトからページを取得するという事が考えられる。
Hyper-Heading-Hexadecimal is assured Intel inside. Intel get started 256 Core Processor at 2005, first surprised in 2007, next will be at 01.01-2011 But it is not available, least is coming in 20-years later. You will be still alive? Don't worry, HHH Tech will be release on time.
>>204 read/writeなどブロッキング処理がブロックしている間他のスレッドを実行できるからI/O関連に限ってはそんな事はない
純粋に計算をさせる場合は同時実行できるコア数以上にスレッドを作ってもパフォーマンスは良くなるどころか悪くなる
208 :
デフォルトの名無しさん :2010/09/03(金) 12:21:05
そうか、IO待ちしたり、CPU使う以外でもスレッド立てるのね
209 :
デフォルトの名無しさん :2010/09/03(金) 18:41:07
>>209 selectモジュールと、asyncore, asynchat モジュールを見ると良いよ。
211 :
デフォルトの名無しさん :2010/09/03(金) 19:06:11
関数の再帰呼び出しの時は、関数名を記述したくありません。 そのような方法はありますか?
>>212 import types, inspect
def factorial(n):
if n == 0:
return 1
else:
return n * types.FunctionType(inspect.currectframe().f_code, globals())(n - 1)
>>214 やってみた。
import types, inspect
print (lambda n:1 if n==0 else
n*types.FunctionType(inspect.currentframe().f_code,globals())(n-1))(10)
3628800
>>212 できないことは無いが、Pythonicではない。
自己満足オナニーコード以外では、名前で再帰しな。
217 :
デフォルトの名無しさん :2010/09/05(日) 02:58:09
mac osx10.6でmysql-python1.2.3を入れたいのですが、ビルドすると長い警告とエラーがでてしまいます。 ちなみにエラーの最後は error: command 'gcc-4.2' failed with exit status 1 となっています。 原因は何でしょうか? linuxだとpython-develがないとおきるとあったのですが。
原因はリソース不足だよ 大抵の場合おつむの容量が足りていない
警告が出てもそのまま続行
そうだな、若いうちにおつむのリソースを十分 拡張してなかったことに気がついた時にはもう サービスインしてるので、拡張する余裕がないんだよな。 警告が出てもそのまま実行するしかない。 そのせいで隣のプロセスもとも連れで落ちたりするが 実行するしかないんだ。
221 :
デフォルトの名無しさん :2010/09/06(月) 02:37:10
new style classオブジェクトはtypeクラスのインスタンスですが、 classic classオブジェクトは何のインスタンスなのですか? __class__を参照するとエラーが出るので困っています。
types.ClassType
typesはビルトインじゃないので違くないです?
違くないです
typesをimportしなくても旧スタイルクラスを生成できるんだから違うでしょう? それだと読み込んでもいないクラスのオブジェクトを生成してることになりますよ
知らない人だけ質問してください
ドジャンゴに怪しい外人や自称カリスマやうさんくさいヘッドハントが集まってくるのは何で?
向こうはdjangoには何であやしい日本人が集まるんだろうと思ってるだろうな
Pythonコミュニティ = 温泉の人たち = 内輪での結束力が異常 = 排他的 という印象がある。中に入りづらいというか。
同意 だけど無理に仲間になる必要は全く無いからご安心ください
あれはPythonエンジニアのグループだろ コミュニティなんてネット上にいくらでもあるしここもそう
いや、温泉はpythonつーよりdjango。
ジャンゴというよりケツマンコぼるんたす
あるクラス X のオブジェクトを生成するには、Python では X() とします。 このとき X.__call__() が呼ばれると思ってたんですけど、違うんでしょうか。 自分で X.__call__() をクラスメソッドとして上書きしたのに、X() の挙動はかわりませんでした。 >>> class X(object): ... @classmethod ... def __call__(cls): # X() のとき呼ばれるはず ... print 'hello' ... print 'cls=%r' % cls ... >>> x = X() # 挙動はかわらない >>> x() hello cls=<class '__main__.X'> なぜでしょうか。
235 :
デフォルトの名無しさん :2010/09/07(火) 00:29:50
クラスのインスタンスが生成されるときはコンストラクタ __init__ が呼ばれる インスタンスを関数みたいに使うとき(?)に呼ばれるのが __call__
>>235 __init__() は __call__() 内部で呼ばれているだけだから、今回の話にはあまり関係ないですよね。
X.__call__() をクラスメソッドで定義したのに上書きされないのはなぜ?という話なので。
>>> help(classmethod) It can be called either on the class (e.g. C.f()) or on an instance....... らしい。だからクラスでもインスタンスでも呼べるメソッドという扱いになるからちゃんと __call__(cls) はクラスメソッドになってる。 インスタンスから呼べないようなものは staticmethod を使う。
238 :
デフォルトの名無しさん :2010/09/07(火) 00:47:53
__init__ ではなく __call__ で処理しなければならない理由とは?
>>237 クラスメソッドの定義方法を質問したんじゃありません。
あとstaticmethodはインスタンスからも呼べます。
>>238 挙動を質問しているだけなのに、理由が必要ですか?
理由をあえていえば、Pythonでは X() を実行すると実際には X.__call__() が
実行されるというふうに聞いたのですが、
実際に上書きして試してみたけど上書きされなかった、のが理由です。
X.__call__() と X().__call__() は違う X.__call__() はクラスオブジェクトの __call__ で X().__call__() はインスタンスの __call__ が呼ばれることになる だからインスタンスの関数呼び出しをエミュレートする __call__ をクラス定義内で上書きしても無駄なんじゃない よく解らないけど
メタクラスでググれ
>>240 >X.__call__() と X().__call__() は違う
それはわかってます。だから class X のクラスメソッドとして __call__ を定義したんじゃないですか。
234のコードをもう一度見てみてください。
>>241 メタクラスもあまり関係なくないですか?
X() を呼び出したとき、実際には X.__call__() が呼び出されるはずだけど、
実際に上書き定義してみたけど挙動が変わんないよという話です。
メタクラス、関係ありますか?
>>> X() # 1 hello cls=<class '__main__.X'> >>> X().__call__() # 2 hello cls=<class '__main__.X'> >>> X.__call__() # 3 hello cls=<class '__main__.X'> >>> X() # 4 <__main__.X object at 0x02850C30> xにX()を代入しxを呼び出せば、1ではなく2 X()あるいはx = X()とすれば4となる 3は本来のclassmethodの呼ばれ方。
>>245 すまんtypo
>>> X()() # 1
hello
cls=<class '__main__.X'>
>>243 そこのページにも
> ようするに、
> obj = Class()
> obj = Class.__call__()
> は同じ意味である。
と書かれてありますよね。
しかし X.__call__() を上書きしてみたのに、X() を実行しても
上書きされてないので、質問してるのですが、わかってもらえてますか?
>>244 だから、X() を実行した時に、X.__call__() が呼ばれるはずなのに
呼ばれてないのはなぜですか、という質問なんですけど。
X()を実行したときにX.__call__()が呼ばれるってのは間違い
X()を実行するとまず__init__が処理される、__call__は関係なし。
x = X()で、x()を呼べば__call__が呼ばれる。
つまり
>>246 にあるX()()のことで、__init__を無視し__call__を呼ぶには以下
X()() # 1
X().__call__() # 2
X.__call__() # 3 (classmethod)
__call__をclassmethodとして定義しても#3が使えるようになるだけで、X()は関係なし
>>248 >X()を実行したときにX.__call__()が呼ばれるってのは間違い
これは何を根拠に言ってますか?
できれば公式のドキュメントでそう書いてある箇所を教えてください。
なおPythonのドキュメントでは、
http://www.python.jp/doc/2.5/ref/callable-types.html > x(arg1, arg2, ...) は x.__call__(arg1, arg2, ...) を短く書いたものに なります。
と書いてあります。
> X()を実行するとまず__init__が処理される、__call__は関係なし。
__init__ はインスタンスメソッドなので、まずインスタンスオブジェクトを作成する操作があるはずです。
__init__ が呼ばれるのはそのあと。
そして、インスタンスオブジェクトを作成する操作を、__call__() の中で行ってると思ったのですが、違いますか。
>>250 ドキュメントにもxって書いてあるじゃん
このxはどう考えても、x = X()の時のx
>>251 x() では __call__() が呼ばれるけど、X() では呼ばれないということですか。
なんか一貫性に欠けた仕様ですね。
じゃあ
>>243 のページに書かれている
> ようするに、
> obj = Class()
> obj = Class.__call__()
> は同じ意味である。
というのは間違いということですか?
#間違ってるなら紹介しないでほしい
x()でユーザ定義のx.__call__()が呼ばれるのはインスタンスのみだと思うけどどうなんだろ
>>> class Meta(type): ... def __call__(self, *args): ... print "hello" ... >>> class X(object): ... __metaclass__ = Meta ... >>> X() hello
結局、
>>243 のページの説明は間違っている、ということでいいんでしょうか。
別に間違っちゃいないが __init__と__call__の違いがわからなければ 理解できなくて当然のハイレベルな機能なので特に気にしなくて良い
って、よく読み返したら全然違うじゃん…… 多分obj = Class.__init__()の間違いだと思うよ
正確に言うと、 X: 当該クラス instance: Xのインスタンス metaX: Xのメタクラス Xに定義された__init__ -> X(): コンストラクタ Xに定義された__call__ -> instance(): C++でいう関数オブジェクトみたいなものを作る時に使う。 Xに定義されたクラスメソッドの__call__ -> X.__call__(): X()では呼び出せない。 というかclassmethodの効果はドット「.」でメンバアクセスする場合のみ メタクラスとかはマニアックな仕様なので無視の方向で。
読み返したらmetaXいらないな……なんか疲れてるな
>>257 >多分obj = Class.__init__()の間違いだと思うよ
それはないでしょう。
だって __init__() はインスタンスメソッドであり、インスタンスがないのに呼び出せないでしょ?
obj = Class()
obj = Class.__init__() # TypeError
そっちこそ __init__ と __call__ の違いが分かってるの?w
あー、いきなりメタクラスの話がどうのとか言い出したのは metaX.__call__がX.__init__に相当する(同じタイミングで呼ばれる)って話か。 そりゃあ関係ないわな。X.__call__の話なんだもの。
>>258 >Xに定義された__call__ -> instance(): C++でいう関数オブジェクトみたいなものを作る時に使う。
「Xに定義された__call__」って何ですか?
ん、じゃあtype.__call__(X)か。 なんかわかんなくなってきたぞ
そもそも__call__メソッドをクラスメソッドにするのが意味不明
もう、なにがなんやら。256みたいなのがいるから混乱するけど、
結局、
>>243 のページは大間違いということでいいんだよね?
3.4.5. Emulating callable objects¶ object.__call__(self[, args...]) Called when the **instance** is “called” as a function; if this method is defined, x(arg1, arg2, ...) is a shorthand for x.__call__(arg1, arg2, ...).
なんで極端に合ってる間違ってるって決めたがるの? 適応性なさすぎ、仕様がスマートじゃないPythonには向いてないよ。
>>239 の
>理由をあえていえば、Pythonでは X() を実行すると実際には X.__call__() が
>実行されるというふうに聞いたのですが、
誰に「聞いた」のか知らんが、それが嘘でした、で終了でしょ
呼ばれるというのは嘘なんだから、いくら頑張ってそこ弄っても挙動変わらないのは
当たり前
何が疑問なのかさっぱり分からん
x = X() とするときに呼ばれるのは
メタクラスの__call__()
-> Xの__new__()(性的メソッド)
-> xの__init__()(インスタンスメソッド)
が正解のはずだよ
なんで
>>243 が正しいと思っちゃった人は
どこの馬の骨かわからんサイトに書いてることを信用するんだろう
>>270 正しくない根拠は?
君こそどこの馬の骨かわからないよね・・
272 :
デフォルトの名無しさん :2010/09/07(火) 14:28:43
>>250 そのページにまんま書いてあるのだが
>__call__( self[, args...])
> インスタンスが関数として ``呼ばれた'' 際に呼び出されます;
よってクラスオブジェクトが関数として呼ばれた際には呼び出されない
これは高度の再帰型質問ですね
話題に乗り遅れたから__call()__/__init()__ 論議の結末をだれかまとめくれ
実務でプログラミングしたことないキチガイが自演を交えて暴れただけ
ドジャンゴでは怪しい外人や自称カリスマやうさんくさいヘッドハントが集まってポルンタスってことでFA?
ダンジョーはゲイの会
ダンジョーなのに男ばかりとはこれいかに
X() では type(X).__call__(X) が実行される。 Xがインスタンスオブジェクトの場合、これは X.__call__() と同じである。
281 :
デフォルトの名無しさん :2010/09/07(火) 19:18:13
In [16]: class Foo: pass ....: In [17]: classobj = type(Foo) In [18]: classobj Out[18]: <type 'classobj'> In [19]: Foo() Out[19]: <__main__.Foo instance at 0x853124c> In [20]: classobj.__call__(Foo) Out[20]: <__main__.Foo instance at 0x85316ac> In [21]: Bar = classobj('Bar', (), {}) In [22]: Bar Out[22]: <class __main__.Bar at 0x859295c> In [23]: type(classobj) Out[23]: <type 'type'> In [24]: Baz = type(classobj).__call__(classobj, 'Baz', (), {}) In [25]: Baz Out[25]: <class __main__.Baz at 0x859298c> ふむ。
>>266 その章題にもあるように、それは、callableの説明であって、classの説明ではない。
callableなオブジェクトxに対して、
x()はx.__call__()の短縮形として解釈される。
一方、classであるXに対して
X()はインスタンス生成の記法であり、オブジェクトが生成された後、そのオブジェクトの__init__メソッドが叩かれる。
以上、メソッドとコンストラクタの概念の違いがわかっていれば、
たまたま記法が似ているけれども意味論的には別々のものだということがわかる。
つか
>>234 は公式、公式いうんならちゃんとリファレンスを読むべき。
特に3. Data modelの部分を100回音読しろ。
クラス(new-styleクラス)はcallableで、クラスのstatic methodの__new__が呼ばれる。
Classicクラスは直接インスタンスを作って__init__を呼び出す。
クラスインスタンスは「インスタンスメソッドの__call__」を持っている場合だけcallableをエミュレートできる。
で、ここからはメタクラスの話。
クラスってのはメタクラス(type派生クラス)のインスタンスだ。
だから、(インスタンスメソッドの)__call__メソッドを作ってやれば呼ばれたときの挙動を変更できる。
ただ、
>>234 の考えた、@classmethodでクラス(のインスタンスメソッド)を上書きできると思ったのは残念。
typeの実装は、「クラスメソッドの__call__」でクラスの呼び出しをオーバライドしない。
だから、クラスのインスタンスメソッド__call__をクラスメソッドで上書きするメタクラスを書く必要がある。
@classmethodでクラスの(インスタンス)辞書をオーバライドできる、って発想は惜しいんだけどな。
実際はtypeの実装が、インスタンスメソッドの特殊メソッドを見つけてディスクプリタを書き換えてるだけなんだよ。
クラス辞書をオーバライドしてディスクプリタを書き換えようとするのは逆なんだ。
そんな引っ張る話題じゃないだろ そもそも間違った認識と推測と仮定で話進めて何が楽しいんだか
すまん、この手のメタクラスな話題は好物なんでつい食いついた
PythonってRubyのRailsみたいなメタクラスFWあるの?
ORMとかは大体メタクラス使ってんじゃないか
Django.dbとかSQLObjectとかGenuisとか
290の引きこもり度は100%
「RailsみたいなメタクラスFW」を存じているPythonicがこのスレに居ると?
Pythonicは形容詞的に使うんだぜ。
メインのデスクトップマシンのpythonを2.6から2.7に上げるのはまだまだ先のほうがいいのかなあ
2.6から2.7ならほぼなんの苦労もなくいけちゃうんじゃない? 2.5から2.6(Python3準拠)はそれなりに面倒だったけど
>>297 基本的に主流のLinux(Ubuntu, Fedora, OpenSUSE)に入ってる
Pythonのバージョンを使えば問題ない(ライブラリやオープンソースなどがほぼ有効なため)
今はPython2.6.5で様子見状態、おそらく2.7はなくて3.xに飛ぶはず
Python2の資産を切り捨てるなんてできっこないよ
漏れまだRuby1.6.7使ってるもんな
>>302 どこのスレの住民か知らないけどよほど嬉しかったんですね
TDPL日本語版出るといいね
「RailsみたいなメタクラスFW」を存じているPythonicがこのスレに居ると?
>>303 いや
一応Python対応強化って書いてあったからね
GNUは宗教です 教祖様であるRMSこそが真の英雄であると教え込まれます Rubyの教祖様より自意識が強くLinuxはカーネルを指しGNU OSだと言い張ります。
307 :
デフォルトの名無しさん :2010/09/09(木) 13:35:08
あまりガタガタ言っているとRailsスレに透過されてる自動投稿爆撃スクリプトの目標にされるぞ
おおこわっ(w
初心者スレから質問失礼します。 echoサーバーをselect使って書いています。 アクセプトしたソケットがクライアント側で切断された場合にサーバー側でそれを感知することはできるでしょうか?
はい
>>311 できれば、どんな感じでやるのか教えてくれませんか
import
はいじゃないが
316 :
310 :2010/09/09(木) 22:22:03
定期的にデータを送ってもらって確認するしかないのでしょうか?
for ... in使えば多くの場合はリストのインデックス使わなくても何かできるし、 たまに必要なときもenumerateで事足りることも多いんだけど。 例えばこういうのを、range使わないで書く方法ってどんなのがある? a = get_some_list() b = [a[i-1]+a[i] for i in range(len(a))]
318 :
317 :2010/09/09(木) 22:26:21
ごめ、 > b = [a[i-1]+a[i] for i in range(len(a))] じゃなくて b = [a[i-1]+a[i] for i in range(1, len(a))]
[x + y for x, y in zip(a, a[1:])]
>>309 ストールマン会ったことあるけど意外と小さい人だった
160cmくらいか
そういや、リストのスライス作ったときって、毎回リストオブジェクトが作られるのかな。 lst = range(1000) lst2 = lst[1:] としたとき、lst2 は 1000-1 個の要素を持つリストだよね。 だから
for (var i = 1, n = lst.length; i < n; i++) var v = lst[i] と比べて for v in lst[1:]: は長いリストを生成する分、メモリ的には無駄のように思える。
323 :
デフォルトの名無しさん :2010/09/10(金) 01:01:24
[1, 2, 3, 4] があったときに [3, 5, 7] が欲しいのだから reduceじゃダメだろ
えっ
スライス作るのが嫌なら イテレータを使えばいいじゃない
327 :
デフォルトの名無しさん :2010/09/10(金) 01:29:28
リストのスライスはコピーされる(2.6までは) 2.7とか3以降も同じかどうかはしらない
>>321 作られる。
巨大なら、xrangeか何か使うといい。
けど、lst[1:]をジェネレータ化しようと思ったら
(x for i,x in enumerate(lst) if i != 0) # 毎回条件分岐が入ってCPUの無駄
なので、
(lst[i] for i in xrange(1, len(lst)))
になってしまう。rangeとかxrange使うのに抵抗なんかしても仕方ないのかなぁ。
it = iter(lst) it.next() it # lst[1:]相当
>>322 こうか?
reduce(lambda ls,x: ls[:-1]+[ls[-1]+x, x], a, [0])[1:-1]
lambdaの中にif文とか書きたいなあ
家の猫が読めないので暗号みたいなプログラムは書かないで下さい お願いします
reduce()はある意味万能だけど、この問題なら
map(operator.add, a[:-1], a[1:])
でいいと思う
>>319 のほうが読みやすいけど
it = iter(a) it.next() [x + y for x, y in zip(a, it)]
>>334 いやmapのが早いし
Listのindex理解してればそっちの方がパッと見で理解できる
337 :
デフォルトの名無しさん :2010/09/10(金) 20:57:55
>>332 〜 if 〜 else 〜 とかじゃなくて?
mapとかlambdaとかreduceとか、他と毛色違いすぎるんだよぉぉぉ しかもよく分からんが、えらいパワフルなしかけで必習っぽいのが困る
mapはリストない方があるから不要(速度とかの問題とかで使うくらい) lambdaはdefとほぼ同じなので分からんほうが変 reduceは紳士の嗜みで必修ではない
×リストない方 ○リスト内包
map過小評価しすぎだよ map(int, ...)のかわりに[int(e) for e in ...]とかするのやだよ
処理がいくら等価でも簡潔で見やすい方がいいけどな。 なんで内包表記はありだけどlambdaは使い所が見えない。 仕事でコード書いてるからかな。
>>341 >map(int, ...)のかわりに[int(e) for e in ...]
[(2*int(e)+1) for e in ...]
の場合
map(lambda e: 2*int(e)+1, ...)
と書く以外に簡単になる?
mapに渡す関数が定義済みである場合を端的に示すのにintを使ったので そういう例を出されて反駁されても困っちゃう
特殊な場合だけ便利な例を持ち出して 過小評価(キリ とか笑うしかないだろ
>>335 が好きだなぁ。リストのコピーが生じないし。
>>338 他ってなによ?C/C++のこと? haskellやらlispのこと?
>>341 確かにそれ、やだなぁ、って気になってはいたんだがmap使えばよかったのか。
他にこれといった使いどころがないから存在意義の微妙さは変わらないが...
じゃあ笑えばいいとおもうよ あんまり実のない話しだし
mapは配列群を引数として関数を再帰的に呼び出し返り値を配列にする関数 それは単なるループではないし、スマートかつ高速なコードを書けるわけだ。 リストの内包表現はただ単なる、lambda的なforであって複雑ならforでいい、可読性が失われる。
>>349 "再帰的に" というのは、間違いだと思うよ。
map は sequence の各要素に対して関数を呼び出すだけなので、
再帰呼び出しは発生しない。
間違ってるから突っ込んだんだけどな
352 :
デフォルトの名無しさん :2010/09/11(土) 09:23:53
現在2.6使いですが、結局その後 raw_input はどうなったんでしょうか? 少なくとも2.6.5ではinputがまだあり、inputではevalされます。
input()がraw_input()相当になるのはPython3から
そうか…まだしばらく2.xに留まりそう… Google App Engine のアプリも作ってるし。
3は黒歴史にして2.xの正統後継言語である4を早くリリースしてくれないかな
Pythonに型定義を導入して今の10倍は速くしてください
つBoo
関数の型を決め打ちする糖衣構文はほしいなぁ。 def foo(arg: int): pass を def foo(arg): if not isinstance(int): raise TypeError に置き換える感じの。
ごめ、間違いまくりでぐだぐだ。 誤 関数の型 正 引数の型 正しいコード def foo(arg: int): pass def foo(arg): if not isinstance(arg, int): raise TypeError
Pythonの勉強をしたいのですが、 購入する書籍に迷っています。 初めてのパイソンやみんなのパイソンが評判良いようなんですが、 どちらがいいのでしょうか。 自分はプログラミング自体ほぼ初めてで、 覚える目的は、PC上のテキストの編集などを自動化したいからです。 なので職業プログラマーほどの知識はいらないかもしれません。
恥パイでいいよ そしてPython学習において本が重要でないこと WEBにある情報やチュートリアルの方が優れていること これをわきまえて買わないと酷くソンをすることになる。
>>362 そうなんですか
それなら値段高めの初めてのパイソンを買うのはちょっと抵抗があるような・・・
というか、今後のためにも3対応のものが良いのかなと思うので、
そうしたらPython入門―2&3対応 という書籍しか選択肢にないようなのですが、
こっちのほうが良いですか?
この本をベースに、わからないことはwebで調べていくことにするとか
>>363 はじぱいは
恥ぱいと
初ぱいの
2種類あるから
間違わないように気を付けて!
実践Pythonだけ買ったけどLib以下のソース見たりdir()使うのが一番参考になってるわ
>>358 overloadもできないのに型を決め打って嬉しいことなんて、これっぽっちもないだろ。
>>368 決め打ちには反対だが
少なくとも関数の定義だけみても
各引数がどの型を期待しているのかが判らないのが面倒
もちろん判ってしまえば問題ないんだが
その点マニュアルも100%記載されている訳ではないし
あ 戻り値についても同様ね
duck typingの見通しをよくする工夫はしてもいいかもな。 docstringの中で、各パラメータが実装しているべきメソッドを挙げたり。 もちろんチェックはしないが、ソース読んで参考にはなるという形で。
duck typing時の必須メソッドのチェックと言うと、継承よりもC++のconceptだな
例えばJavaのInterface型は動的型とも相性がいい。
エディタのインテリセンス機能を強化するための俺ルール。 型の合わない変数までインテリセンスで表示されると鬱陶しいので。 def __init__(self, userid, name): #userid:int,name:str# self.userid = 0 #:int# self.addrport = None #:(str,int)# self.users = {} #:{int:UserDefClass}# 上から下まで一行ずつ読み込み、#〜#で引っ掛けるという手抜き技。 構文解析する腕は持ってない。 あとはPython本体を改造して10倍早くするだけだな。 来年こそは
クラスで型を指定するのは最悪だから、やめようよ。
メソッドのチェックというとES4のlikeとかgoのインターフェースみたいなものかな?
>>364 じゃないけど、以前 pyExcelerator のソースを読んだら Deco.py ってのがあって
@accepts (引数型チェック) @returns (返り値チェック) みたいなデコレータを定
義していた。(xlutils にはなかった...)
>>364 >>378 アイディアは良い感じなんだけどな
pythonの場合
def hoge(arg, *args, **kwargs):
ってよくやるからな
ちょっと難しいかもな
というか PEP-318 の accepts/returns をそのまま使ってるだけだね。
PEP 3107 -- Function Annotationsで定義されていて, Python 2.6へbackportされていないので, 利用するにはPython 3.0以降が必要になります。
アノテーションを活用しているライブラリとして,anntoolsを紹介します。 anntools は関数の引数や戻り値が想定している型や値になっているかどうかをチェックしたり, 期待している以外の型のオブジェクトが渡されたときに自動で型変換したりしてくれたりします。 Python 2.6以前にも対応しているので,関数アノテーションのある・なしでどう変わるか見ていきましょう。 BlogなどのWebアプリケーションで,記事を編集するリクエストを扱う関数を想定してみます。
この豚だれだ?
# Python 2.7 Windows installer (Windows binary -- does not include source) # Python 2.7 Windows X86-64 installer (Windows AMD64 / Intel 64 / X86-64 binary [1] -- does not include source) 公式のダウンロードは、これとこれどっちをダウンロードすればいいんですか? 2.7と3.1.2ではどっちが良いんですか?
2.6.5が一般的です 3.1.2が最新版です 2.7が人柱版です 32-bitが一般的で互換性があります 64-bitが人柱版で互換性がないです
64bit linuxでも32bit版のpython動いた?
LinuxとWindowsは大分違うからな Pythonをインタプリタで動かすにも64bitだと互換性の問題が出てくる Linuxは別に問題ないけど情報量が少ないしOS自体が人柱なんだよな
2から3へは将来的にあと何年くらいで主流が入れ替わるの? あまり難しいことはするつもりはなく、テキスト処理くらいでいいんですが、 今から覚えるなら3にしておくべきでしょうか。
何が将来的だとか主流になるとか、大きなプロジェクトでも作るの? 2から3って言っても中核部を変更したから互換性の問題があるだけで 普通にマイナーチェンジ程度、数回コード書けば慣れるレベルの変更だよ でも実用性では2.6が圧倒的だし情報も少ない3を使う意味はないと私は思うよ
そうですか、なら2にしておきます。
2.6というのは、公式にある
Python 2.6.6 (August 24, 2010)
をダウンロードすればいいんですね?
>>388 さんのいってる2.6.5はどこにもないんですが
2.7を避けて2.6を選ぶ理由ってあるの? Windowsは使って無いから詳しい人教えてよ
pythonはプライベート属性もない欠陥言語らしいね
はい
そんなものは飾りです えろいひとにはそれがわからんのです っていうか一応 _hoge とか __hoge とかの紳士協定はある
Pythonに慣れてくると他の言語が冗長でイヤになってくる セミコロンとか付け忘れるし
動的言語だと、privateのチェックも動的に行わないといけない。 クラスをオーバーライドした後に親クラスの属性を書き換えたときの挙動等、 言語仕様も大幅に複雑になる。 それだけのコストを支払って private を導入する価値があるかどうか? Pythonが実際に中規模以上のアプリケーション開発に利用されているのがその答えだ。
言語オタクが煩わしいとこを端折って LispやHaskellの良い所をくっつけて作った言語 逆にLisp系の俺用処理系の鬱陶しさを配慮してPythonが首位を取った
怪しい外人はネラーか?
404 :
デフォルトの名無しさん :2010/09/14(火) 23:56:43
>>400 記述が冗長かどうかより、単に面倒で億劫に感じる。
C++とかC++とかC++とか、もうやりたくないよ。
おりものに見えた
>>391 もう遅いかもしれんが…
外部ライブラリをバリバリ使うなら別として、単なるテキスト処理だったらpython 3を使った方がよいと思うよ
文字列とバイト列がちゃんと区別されていて、自分でUnicodeにデコードしてから処理するなんて作業をしなくていいし。
右から帰らなくてもいいんだよ?
412 :
デフォルトの名無しさん :2010/09/17(金) 08:18:13
重い画像処理などとネットワーク経由のやり取りを非同期で やりたいとき、twisted のリアクタを別スレッドで回せば いいんじゃないかと思ってるんだけど、なんか落とし穴ある? 今までtwistedを使ったことはあるけど メインのスクリプトの最後でtwistedのリアクタをぶん回して 放置って使い方だったので、それを別スレッドでやって さらにメインスレッドでは別の処理を継続なんてことが できるのかどうか確信が持てない。
右から右から、何かが来てる〜僕はそれを左へ受け流す〜
>>412 重いCPU処理があるとtwistedはイマイチな気がする。
むしろ重いCPU処理は別プロセスにやらせたほうが
GILにやさしいシステムになると思われ。
415 :
デフォルトの名無しさん :2010/09/17(金) 13:05:41
multiprocessing か…2.6からなら使えるんだっけ? popenくらいしか使ったこと無いけど調べてみる。
自称カリスマとかVとか怪しい外人とかその他ゴミムシとか、ダンジョーにはなんで自己愛満載の勘違い君ばっかり寄ってくるの?
418 :
デフォルトの名無しさん :2010/09/18(土) 13:20:06
PythonでAtomフィードのXML文書を生成するには
どんなライブラリが標準的なんでしょうか?
http://trac.defuze.org/wiki/atomixlib がヒットしたので見てみると
This project is now dead and deprecated
in favour of bridge which is a much more generic XML toolkit.
I will no longer update atomixlib.
とあるので他に標準的に使われているものが
有るのかと思っているのですが…
Python 2.6 を使っています。もしかしたら
Python 3.x では標準のものが有るのかも知れませんが、
まだ調べていません。
419 :
デフォルトの名無しさん :2010/09/19(日) 11:42:24
>>414 GILはPythonオブジェクトを走査するときだけ働くから、画像処理なんかはGILを開放するようにすれば、
ちゃんとマルチスレッドでも性能出るよ。
>>412 Twistedにはワーカースレッドのスレッドプールで重い処理やブロックする処理を実行するための仕組みがあるよ。
>>420 CやC++作った動的ライブラリを呼場合はGILは自動的に開放されるの?
それともGILを開放するようにあらかじめ作る必要があるのかな
>>421 動的ライブラリを呼ぶ場合って、具体的に言えばctypes経由?
ctypesは、FUNCFLAG_PYTHONAPIというフラグを指定しなければ、GILを開放する。
ctypes以外の場合は自分で調べて。pywin32とかだと、たぶんAPIごとにそのAPIが
ブロックするか否かなどを考慮して、GILを開放するかどうかを決めてると思う。
>>422 thx
ctypeは面倒だったからスレで以前紹介されてたswigを使ってる
けどswigのドキュメントにGILの扱いは書いてないなあ
もう少し調べてみます
初めてPythonを学ぶものです。 C言語の心得は多少あるのですが、Pythonは初めてです。 一冊体系的に学んでおきたいのですが、初心者にお勧めの入門書を教えてください。
公式のドキュメントでおk
とりあえずのチュートリアル。あんまり面白くないけど
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
429 :
デフォルトの名無しさん :2010/09/23(木) 07:13:58
ctypes とか swig が出てきた流れで聞くんだけど、 boost::python はどうですか? どうですか?っていうのも余りに抽象的すぎるんで、 数値計算のためのOpenMPを利用したC++クラスライブラリがあって それをPythonで使いたい、あわよくばmatplotlibで 可視化はPythonでやれればいいな、という用途に boost::python はどうよ?って事なんですが。 C++とBoostの機能の一部とテンプレートプログラミングには 慣れているつもりです。
430 :
423 :2010/09/23(木) 10:07:46
swigでGIL開放する方法見つけた → 17.5 Using SWIG-Generated Modules in a Multithreaded Environment Python CookBook 2ndEditionに乗っている筈が何故か日本語版は未記載だった・・・
431 :
423 :2010/09/23(木) 11:48:11
でもそこに乗っている方法はswig1.1の古いサンプルみたい swig1.3以降(2.0も)は %exception { Py_BEGIN_ALLOW_THREADS $action Py_END_ALLOW_THREADS } こんな感じでおkっぽい
おっぱいさんくす
>>429 俺が使ったのはboost-1.34くらいのときなので、ちょっとあれですが
悪くはなかったよ。
あまり過大な期待をしない限りは、ってところだったかな…
Python例外とC++例外を対応させられる、とか、結構便利だったと思う。
その時は俺的にはswigも検討したけど、swigよりはいいな、と思った
記憶がある。
個人的には、もう一つの選択肢としては、Cでブリッジ関数書いて、
それをctypesで呼び出す、というのもあって、概ねこの2つのいずれかを
当時は使っていた。
boost::python は C++ のクラスライブラリをPythonから触るのには向いてるな。 swigはCのライブラリのバインディングを作る CythonはPythonのクラスライブラリを拡張モジュールで作るのを簡単にする。 それぞれ得意分野が違うな。
C++と相性のいいのはSWIGとboost::python 機能の充実は SWIG >= boost::python だな ctypesはCのみ
C/C++からPythonのモジュールを触るのに向いてるのはないの?
swig は python だけでなく C# とかにも展開できるんで使っているけど、 typemap あたりがマニアックで使いにくいかなぁ...
どの方法も一長一短があるよねー 自分のスタイルに最適な物を選ぶしかないけどそんなに情報が充実してない pythonからC/C++を利用する: C++ なら SWIG/boost::python Cなら ctypes/SWIG C++からpythonを利用する boost::python Pythonっぽい構文でCの外部モジュールを作る(pythonから利用) Cython 他にもツールはいろいろあるけど自分の知っている範囲ではこんな感じかな ただ、どのツールもそれなりに熟練する必要があると思う >typemap あたりがマニアックで使いにくいかなぁ これは同意せざるを得ない
とりあえず boost::python 使っておけば安心っぽいですね ほんとうにありがとうございました
numpy Numeric Numarray のそれぞれの用途とか違いについて教えて下さい
ところで削除したアプリのレジストリーの設定項目っていつになったら消えるんですか?
>>441 以前使ってみたけど殆どパフォーマンスは上がらずおいおいって感じだったけど
最適化の余地はまだありそうだしGILはなくなるという話だし、生暖かい目でみてるよ
Unladen Swallowに対抗して OPython (おっぱいそん) を作ろうとしたら 糞中国人がその名前使ってやがった 断固抗議する
assert( 1 == 2, "hoge" ); >SyntaxWarning: assertion is always true, perhaps remove parentheses? なんで?
それだと assert 文にタプルを渡してることになるよ
assertに()つけちゃまずいの? printはOKなのに? 仕様がよくわからん・・・
printは関数にしてもほぼ意味が変わらないけど assertには「コンパイルオプションを変えると評価されない→実行時間に影響しない」性質が必要になるから
いや、ぜんぜんちがう >>> print 'abc', '123' abc 123 >>> print('abc', '123') ('abc', '123') Python は式と文をはっきり区別するので なんでもかんでも式のように書くのはよろしくないと思う
python3のことじゃないの?
Python使ってみようと、Python2.7とPyScripterを入れたんだけど。 PyScripterって、Python2.7に対応して無いのかな? Python23.dllが無いと言って動いてくれない。(´・ω・`)
For compatibility with Python 2.6 and Python 3.0, since version 1.9.9.5, PyScripter requires the latest C++ Redistributable Package. This is automatically installed by Python 2.6 and Python 3.x. If you do not have any of these versions installed, then you need to download and install it manually.
vimがいいよ 漢はみんなvimだよ
男はみんなedだよ
あいだを取ってEmacsでいいよ
vimユーザーの俺が言うと自虐的だがemacsはed, vimより上位レイヤーだろ...
emacs + slime + scheme
統合環境は好きになれない いつでもどこでもどんなときで使えるvimを極めると 電車の中でもトイレでも会議中でもセックス中でも プログラミングできるようになる
ごにょごにゅ中に素数を数える代わりに頭の中でコード書いたことはある
PyScripter改造したいんだけどビルドした人いる? 次から次に必要なモジュール(←Delphi用語知らない)が出てきて困ってる。
PyScripterってDelphi製なのか
>>455 ども。
ろくすっぽ更新してないサイトからのリンクから、ろくすっぽ更新してないサイトに置いてあるPyScripter1.7.2をダウンロードしてました。
ああぁ…でも、ググってたらEclipseの方が絶対良いと言ってるサイトが出てきた。
もう、いいや。_| ̄|○
どうせ、必死で使う訳じゃないし…
ごちゃごちゃ言ってないでコードかけや
ワシ、Emacsのキーバインドを覚えられへんのや… Vimならなんとかやっていけてるでー
>>467 なんで、お前なんかに命令されなきゃ成らないんだよ?
コードかいたら、対価に金くれるんか?
あ”?
お子様の落書きに金を払う物好きはおらんがな
>>468 C-x C-c だけ覚えとけばええねん
C-z しちゃうんだよね
vimがemacsのようにシェルにもなればいいんだがな
>>468 M-xだけ覚えておけば割となんとかなる
こういう時に
>>473 みたいなことを言い出す輩はたいていemacsもvimも使ってない
emacsユーザーもvimユーザーも妙な使い込みをしてるので自身のエディタにそんなに不満がない
pythonの統合開発環境ってEclipseもPysSripterも微妙で結局エディタに戻るよな
ていうか、vimだかemacsだかに慣れてしまうと他のどのエディタも微妙に感じてしまうんじゃないのか。
emacsは設定が面倒だけど 単純なコーディングだけでは最高な環境なんだよな。 実際に動かしながら書けるってIDEや大規模じゃ難しい WinでNotepad++とDOS窓でやったけど気が狂いそうだった。
JavaとかC#なら迷わずIDEだけど Pythonはたしかに微妙だな
emacsもviも使いこなせたらさぞかし便利だろうと思うけど、なかなか…大変だな
windowsで育った人間は、仕事か研究かで必要に迫られなければ わざわざ使い方入門なんてしないだろうとは思う <unix由来の二つ
大学の授業で強いられる
強いられると思ってる間は駄目だな
自分から使おうとは思わないよ
気が付いたらダメな感じのヲタ
やりたくないことを無理してやることないよ
PythonにもメタプログラミングRubyっぽい本が欲しい つまりPythonの言語仕様や考え方をとことん詰め込んだ本
import this の逐条解説から始まる本なら知ってる
>>488 エキスパートPythonはもう読んだ?
>>488 Django のソースとか読んでみたらどう?
どっちもPythonの思想を知るには役に立たないけどね
リバースエンジニアリングpyrhonによる〜はもう読んだ?
リバエンは良い本だけどpythonと直接は関係ないぞ
計算機プログラムの構造と解釈とschemeが直接は関係ないみたいなもんだろ? でも良書の言語になるのは良いじゃん
リバエンってPythonの言語仕様や考え方をとことん詰め込んでたっけ?
はい
それってライセンス以外にPyQtよりいいことあるの?
501 :
デフォルトの名無しさん :2010/10/10(日) 01:03:34
Dive into ppythonの日本語訳をPDFにしたものってどこかにある?
./hoge.py ./hage/fuga.py 上記のディレクトリ構造で、 fuga.pyからhogeをimportしたい場合はどうすればいいですか? 今はsys.pathに"../"を追加してるんですけど、これはpythonの流儀的にOK?
パッケージ構成見直した方がいいよ(__main__をimportしながら)
配布とか考えないで、単純に複数のファイルで構成されたスクリプトとして使いたい場合であれば、
>>502 の方法でOKだよ。
ただし、 "../" はカレントディレクトリからの相対パスなんで、
import os
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
っていう手もある。
単純に1ファイルimportしたいだけなら、パスを設定する代わりに imp.load_module を使うという手もある。
>>502 メインプログラム(?)はhoge.pyかまたはhoge.pyと同じディレクトリにあるんでしょう
だったら、fuga.pyがモジュールで単独実行しない限り fuga.pyの中で import hoge でOKじゃない?
テストなどで fuga.py を単独実行させるのなら PYTHON_PATH を設定すればいいと思う
至る所に付いて回るselfが気持ち悪い。。。吐き気がする。。。
self.sex = onani ですよね
モルダー貴方疲れてるのよ
モルダーの性別=オナニーってことか Xファイル懐かしいな
ついて回るも何も、ただの引数じゃないか。
生まれついてのモノだし気にするな
バカって勝手に自滅するから見てて面白いよね。
MySQLdbでテーブルを端から1レコードずつ読んでは整形して 出力するだけの簡単なプログラムを書いたらテーブル内容を 全部メモリに読もうとしてプロセス太りまくって死亡w デフォルトが全部メモリにためこんでからとか作った奴馬鹿か?
515 :
デフォルトの名無しさん :2010/10/13(水) 11:58:43
>>514 connection から excute しろよ馬鹿
あと、MySQLdbには数ヶ月前まで、テキストをUnicodeにした場合にcodec周りで参照の開放漏れがあった。 最新版のMySQLdbとカーソルオブジェクトをちゃんと使えば大丈夫なハズ。
MySQLはUTF-8で使うもんだろ常考
518 :
デフォルトの名無しさん :2010/10/13(水) 17:45:52
数値入力の仕方が分からん raw inputじゃ文字列はいけても、数値はダメみたいだし 方法を教えてけれ
文字列の入力までできてるんなら、あとはその文字列を 数値に変換すればいいんじゃねーの?
521 :
デフォルトの名無しさん :2010/10/13(水) 18:14:23
>>519 わざわざ変換なんていうプロセスを入れないとダメなの?
Cなら簡単なのに
>>520 できた
dクス
scanf()じゃないかなたぶん
scanf() だったら手間は
>>520 と違わないだろ
INPUT "名前を入力してください。";name$ INPUT "年齢を入力してください。";nenrei な時代が長かった。
>>524 scanf()なんて恐ろしくてとても使えません
528 :
デフォルトの名無しさん :2010/10/14(木) 01:23:35
scanfとか今時ねーわ
10年近く前に、Cのスレでそんな書き込みをいっぱい見た。 結局、ネタに飢えたキチガイの書き込みでしか無かった。 今だにそんなキチガイが生きてるんだなと思った。
昔は使っちゃいけない関数の代名詞だったんだけど、今では大丈夫になったんだっけ? >sscanf 実際、%sは危険かもしれないけど%dは便利だったし、使ってはいけない関数じゃなくて使いどころ次第だった。
>>531 一応今は scanf_s というのがあって %s でも安全に使えるようにはなって
いる。(普通は fgets 使うだろうけど)
普通は scanf だとエラー処理が難しいので fgets して sscanf するわけで、
手間は Python と変わらない。
>>516 エキスパートさんお疲れさまです。参考になります。
>>531 %s
がgets()のように危険だけど
%[255]s
のように使えばいいので、scanf()はgets()とは違ってセキュリティ上の
問題を回避不可能な関数じゃないよね
素人が陥りやすい罠はscanf()の戻り値を見ないことなんだが
getc()やfgets()だって戻り値を見ないで回せば無限ループになるだけなのに
なぜかscanf()は戻り値を見ない初心者向けのサンプルが横行していた
scanf()でのエラー処理ではrewind()しろ、などという環境依存の対処法が
横行しているのも特徴だ
こういう色々な理由で「馬鹿には使えない関数だから使わせるな」
といわれていたのがscanf()
ま、そんなわけだから、
>>527 や
>>528 のように思われているぐらいがいいのかもな
あー ×%[255]s ○%255s だね、ごめん
sscanf(buf, "%.*s", size, str);
python 用の Mersenne Twister のモジュールはありますか?
>>537 Python\Lib\random.pyに
General notes on the underlying Mersenne Twister core generator:
と書いてある
>>535 これだけ偉そうに語った
>>534 ですら間違える書式指定。
馬鹿には使えないのは確かなようだ。
ふと覗いたPythonのスレでCの勉強が出来るとは・・・Pythonistさんありがとう・・・
ネタレスしたかっただけだろ。w 馬鹿か。w Pythonの変態仕様に、今頃喰いつくなよ。w
その文の最後についている"w"にはなんの意味があるんですか?
セミコロンと同じ意味なんだろ もしくはインデント
ネタレスしたかっただけでは・・・?
書き込むときは"w"、読み込むときは"r"
。の後ろに草生やすと変な感じだな
print("書き込むときは\"w\"、読み込むときは\"r\"")
549 :
デフォルトの名無しさん :2010/10/16(土) 01:12:44
>>304 >>305 >>306 thxです
このプログラムはライブラリとして書いてて、
hoge.pyがメインモジュールです。
hoge内で、fugaをimportしてるのですが、
fuga内からもhogeを参照する必要がでてきてしまいまして・・・
さらにfuga.py内に
if __name__ == "__main__":
Test();
みたいな単体テストコードも書いてて、
fuga.pyだけで動かしたい場合に困ってました。
とりあえず../を未だに使ってますが、
リリースする際とかはまずいですか?
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
ArchLinuxの/usr/bin/pythonがPython3になったぞー
ubuntuが3になったら本気だす
勝手に3にしないでほしいな
558 :
デフォルトの名無しさん :2010/10/19(火) 18:06:47
Pythonを勉強しようと思うのですが、おすすめのサイトはありませんか? C言語とPerlの基本文法は覚えて、小さなツールを作っている程度の知識です。
公式のチュートリアルとPEP8
無駄に分厚い恥Pyだけはやめておいた方がいい
561 :
558 :2010/10/19(火) 18:26:39
>>561 PEP 8 のチェックツールとして pyLint はなかなかよい
その辺、次スレからテンプレ入りっすかね。 まぁ、馬鹿はテンプレ見ないっすけど。w
まあ、2chも落ち目なのでまともな奴はこんなスレ見ないっすけど。w
2ch落ち目なのか んじゃ今一番ホットな場所ってどこなの?
中国
ほっともっと
俺みたいな初心者には2ch価値あるよ。 始めて数週間だけどPython面白いな。
落ち目のところは面白い人が見限って去った後なので面白くない ホットなところは新規がどんどん入るから厨臭い 楽しめない奴はどこだって楽しめないものさ
pass
577 :
572 :2010/10/20(水) 08:56:14
ん?なぜ俺?最近始めただけでよく知らないんだけど。 俺はとりあえず2.6で読むよりは主にコードを書いてた(他の言語やってたので)。 期間は2週間ほど。その間の情報収集は日本語のWeb情報のみ。 何となく分かったので今はエキスパートPythonプログラミング読んでる。 英語もたまに見る。
なんでお前が答えてんの?
何か変なのが棲み付いてるな……
>>575 散々既出な質問だが...
「何のためにPythonやりたいのか?」それに尽きる。
2.xの方がライブラリはずっと充実しているので、実用的な目的でPythonやるなら2.xがいい。
ただし文字列処理は3.xでは完全にUnicode化されていて日本語が扱いやすいので、
ライブラリはあんまりどうでもよくて(or 3.xでも対応してて)文字列を扱う処理が多いときは3.xでもいいかもしれない。
何が出来るとかどうでもよくて、プログラミング言語を習得したいのなら、3.xでいい。
このレスに書いてあることがよくわからないなら、2.xにしとくといい。
最後の一行で楽しくなったのは初めてだ。
3.x は人柱
584 :
575 :2010/10/20(水) 15:09:26
>>581 ありがとうございます。
> 何が出来るとかどうでもよくて、プログラミング言語を習得したいのなら、3.xでいい。
2.x にしとこうかな…
3.xを積極的に使う理由は皆無
blender2.5
Archerの漏れが颯爽と通り過ぎますよ
Luaに居場所を削られてく。。。
ネットより本派なのでみんなのパイソンを入門書として買おうかと思ってるんですが良書と言えそうですか?
>>590 Webだけで十分だよ
注意すべき点は・・・
・代入は値のコピーでなく参照するためのラベルを付ける行為
・クラスのアトリビュートとミュータブルなオブジェクトの関係
この2点に気をつければ他の言語を理解できる人が躓く事はないと思う
unicode で躓いた orz
>>592 注意すべき点の一点目は実は全部ポインタで扱ってるってことですか?C的な意味で
>>593 具体的に
>>594 Pythonはいろんなもの(文字列や数値やクラスのオブジェクトだけじゃなく、
クラス、関数、モジュールも)がオブジェクトで、変数はオブジェクトへの参照を
格納してる。
a = [0]
b = a
a[0] = 1
print b # [1]
print a is b # True aとbは同一のオブジェクトを参照している
c = [1]
print a == c # True aとcは同じ値
print a is c # False aとcは別のオブジェクト
a[0] = 2
print c # [1]
この挙動はJavaの非プリミティブ型と同じなので、Javaの人であれば「プリミティブ型が
無いJavaの変数」と言えば理解が早いと思う。
Javaに比べると、 equals() が == に、 == が is になった。
>>595 なるほど、詳しい説明ありがとうございます
はじめのほうで説明欲しい事実ですね
>>595 嘘が書いてあるWebサイトを信用してたから
u'ほげほげ' と書けば utf-8 になると思ってた orz
>>595 java
System.out.println(1 == 1.0); // true
Integer i = new Integer(1);
Float f = new Float(1.0);
System.out.println(i.equals(f)); // false
python
>>> 1 is 1.0
False
>>> 1 == 1.0
True
>>598 だから、「非プリミティブ型」の == や is だって。 1 や 1.0 はプリミティブ型だから違う。
== が同一性チェックで、 equals が同値チェックっていう意味で、それぞれPythonの
isと==だと言った。
FlaotとIntegerで1と1.0を同値として扱うか扱わないかはまた別の問題。
結果だけ見ないで、意味を考えて。
Integer i = new Integer(1); Float f = new Float(1.0); System.out.println(i == f); // コンパイルエラー
Integer i = new Integer(1); Integer j = new Integer(1); System.out.println(i == j); // false System.out.println(i.equals(j)); // true >>> 1 == 1 True >>> i = 1 >>> j = 1 >>> i is j True >>> i == j True
>>591 理由もなく他者をおとしめたとしても、売れない書籍が売れるようになるものなのでしょうか。
None以外のimmutable型をisで比較するとか、ソース読まずに実装を探りたい以外に用途が分からない。
>>594 うん
もっと近いのは参照(リファレンス)みたいなもの(C++的な意味で)
もちろん
a = copy.copy(foo)
b = copy.deepcopy(bar)
でいわゆる「値をコピーして代入」=「値をコピーして新しいラベルを作成」も可能
ついでに2番目は説明が面倒なので対策だけ書くと
・mutableな要素はインスタンスのアトリビュートで生成する(一般的には def __init__(self): とかで・・・)
・(予期せぬ結果を防ぐため)クラスのアトリビュート(クラス変数)にmutable(変更可)な要素を指定してはならない
>>> class Hoge(object):
... foo = []
...
>>> hoge1 = Hoge()
>>> hoge1.foo.append("I'm hoge1.")
>>> hoge2 = Hoge()
>>> hoge2.foo
["I'm hoge1."]
こんな事が起こっちゃう
C++の参照って代入は値のコピーだからポインタの方が近いと思うんだが
C++を知ってるんなら、shared_ptrが一番近いな
>>604 それは、クラス変数の期待する結果だと思うが。
608 :
590 :2010/10/23(土) 12:23:09
みんパイの評価はあれでしたが勉強する前に他の言語との注意するべき違いが良く分かって良かったです。皆さんありがとうございました。
Python初心者お断り
他の言語とか知らなくても参照とmutable/immutableさえ ちゃんと説明してある本なら平気 ただ参照渡しとかうっかり書いてある本だと死ぬ
>>610 つまりJython本最高ですねわかります
本とかちゃんと読んだことなくて初心者質問で申し訳ないんだが
>>610 > 参照渡しとかうっかり書いてある本だと死ぬ
のはどうして?
型によって値渡しと参照渡しが変わるという認識なんだけど、例えばどんなことで死ねるの?
>>612 俺も
>>607 と同意かな
他の言語の経験者相手の話なら、クラスフィールドがインスタンス間で共有されるのは
言うまでもない当然のことで、mutable云々は余計なお世話
> 型によって値渡しと参照渡しが変わるという認識
それが間違っているから、でしょう
参照渡しなんてほとんどなくね? だいたいは値型の値渡しか参照型の値渡し
>>615 もっと勉強しろよ
あきらかに経験不足だぞお前
>>607 ,
>>615 これに気づかなかったら、
>>604 の言いたいことは分からない
>>> class Hoge:
... ls1 = []
... ls2 = []
... num = 0
...
>>> hoge1 = Hoge()
>>> hoge1.ls1.append(1)
>>> hoge1.ls2 = [1]
>>> hoge1.num = 1
>>> hoge2 = Hoge()
>>> print hoge1.ls1, hoge1.ls2, hoge1.num
[1] [1] 1
>>> print hoge2.ls1, hoge2.ls2, hoge2.num
[1] [] 0
>>613 正確には参照渡しではなく参照の値渡し…つまり
つまりオブジェクトのIDみたいなものを値渡ししてるだけで
変数そのものは渡ってない、という話だと思うぞ
本来の意味の参照渡しなら変数そのものが渡って
引数に対する操作はそのまま渡された変数に対する操作になるからね
実装としては、インスタンス変数の持ってる変数テーブルに値がなかったらクラスの持つ変数テーブルを参照する。 インスタンス変数の要素に代入された場合は、インスタンス変数のテーブルに書き込むって処理になるんだろうけど。 Python的解釈では、(たとえimmutableであっても)変数名はラベルでしかないのだから、 ______________ hoge1.num ---->| 0 | hoge2.num ---->|____________| だったのが、=演算子で新たな値を束縛したから、 ______________ | 0 | hoge2.num ---->|____________| hoge1.num ---->[ 1 ] になった、と考える。ls2についても同様。 ls1は、ポインタ分かるなら書かなくても分かるだろう。 =演算子は代入じゃなく、値の束縛というのがPythonでは重要。
>>615 > クラスフィールドがインスタンス間で共有されるのは
> 言うまでもない当然のことで
お前がそう思うんならそうなんだろう、お前ん中ではな
つまりどういうことだってばよ?
MSBuildとか腐れビルドエンジン作るぐらいなら IronPython使えよこの野郎っていう意思表示だなこれは
627 :
613 :2010/10/23(土) 22:13:15
>>620 言ってることは「なんとなく」わかるけど、実際の動作や概念的な仕様はともかく
使い方だけで考えればjavaとの対比でいって
pythonで数値を渡す -> javaでprimitiveな型の値を渡す感じ
pythonでリストを渡す -> javaのStringBufferを渡す感じ
pythonでタプルを渡す -> javaのStringを渡す感じ
みたいに考えていいんだよね?
であれば、数値は値渡しで、リスト・タプルは参照渡しみたいに考えると
諸々含めてスッキリするんだけど、やっぱり数値の0もオブジェクトみたいに
考えないとどこかで違いが出てきて困ったりするの?
>リスト・タプルは参照渡し だからそれは参照型の値渡しな
>>627 > 数値の0もオブジェクトみたいに考えないと
Javaはしらんのだが、渡し型とオブジェクトかどうかは関係あるのか?
けど、数値もオブジェクトだよ。
>>> isinstance(1, object)
True
>>> 1 .__add__(2)
3
Pythonには参照渡しはない。 call by object-sharing なので、オブジェクトがミュータブルオブジェクトの場合、 値を変えることができるわけ。 数値はイミュータブルオブジェクト。
Cに参照渡しはないって言ってるようなもんだな。誰もそんなこと聞いてないっつうに
>>627 Javaでいうならこうなるんじゃない
pythonで数値、タプルを渡す -> javaのStringを渡す感じ
pythonでリストを渡す -> javaのStringBufferを渡す感じ
>>629 Javaはオブジェクトかどうかで渡し方が決められてる(非オブジェクト→値渡し、オブジェクト→参照の値渡し)
あとJavaも実際には「参照渡し」はない。用語としては使われるけど参照の値渡しの意味
用語として使ってんのにいちいちツッコむな
>>631 Pythonではそこ重要だよ。
変に参照渡しだからとか考えるよりも
>>630 のように考えた方が挙動を一番きれいに説明できる。
同じことだろ
仮引数に別の値も「代入」したらcaller側の変数の値も変わるのが参照渡しだろ つまり仮引数と実引数の「値」が同じだけでなく、同じ左辺値(いれもの)を指してる ただの別名 Cは全部値渡しだが、ポインタを使って似たことはできる JavaやPythonは値渡しでポインタやリファレンスもないから、2つの変数の値を交換する swap()のような関数は書けないぞ
Pythonが値渡し?
>>637 確かめるのは簡単
n = 1
def f(x): x = 2
f(n) # 参照渡しならnは2になるが、1のまま
a = [1,2,3]
def f(x): x = [4,5,6]
f(a) # 参照渡しならaは[4,5,6]になるが、[1,2,3]のまま
まあ実質的には値渡しだよ。本質的には違うけど
>>639 のようなバカに納得させるのは不可能だな。
この低能には、正しい用語と定義を理解することはできない。
キレたw
642 :
デフォルトの名無しさん :2010/10/24(日) 11:17:53
LLの言語のスレは何故か定期的にこの話題になるなw
実質的にも本質的にも値渡しだな
644 :
デフォルトの名無しさん :2010/10/24(日) 11:19:08
参照の値渡しが参照渡しに見えたりごっちゃになるのも、 慣れないうちや参照渡し以外も使える言語の経験が長いとあるとわからないでもないぞ
>>640 みたいなのと会話するのが一番疲れる。朝生とかでも時々いるよね
オレ定義と辞書の定義が違う場合に オレ定義が優先されるという奴とは会話がなりたたない。
すぐにキレる奴とは会話が成り立たない
田原総一郎なんかがそうだな どうせ盛り上げて視聴率取れれば良いから 話の整合性とか落としどころとかそんなの考えてない
C++で言う参照変数と参照渡しをごっちゃにしている馬鹿がいるな
型付けられた変数の実装に関する「参照型」と、 引数の渡し方に関する「参照渡し」を区別することが、 そんなに敷居が高いこととも思えないのだが。 つうか、値渡し以外知らない人って、そんなに多いのかな?
google大学の社内レクチャーってお勧め? とりあえずあることだけはハケーンしたんだが。
652 :
620 :2010/10/24(日) 13:39:08
参照の値渡しと参照渡しの違いはC++のポインタ渡し(明示が必要な参照の値渡しと 考える)と参照渡しの違い程度なので正直意識的に区別せずとも本能的に区別できる。 だからそれを区別できないと使い方で困るケースは現実的にないように思う。 数値リテラルなどがオブジェクトとして扱われる言語は昔から結構あるけど、 普段それを意識しなくても使えると思う。理由はCの数値リテラルと同様な値渡しと 考えて問題がないから。 言い方悪いけど、欲しい回答と違う回答しか出てこないので明確にいうと 「実際の動作や概念的な仕様はどうでもいい」。 使い方だけで考えて、どこかで違いが出てきて困ったりする具体的なケースを教えてほしい。 (620以降自分のレスはこれが最初)
誰がどのレスとか確認の仕様もないし興味ないよ。自己主張すんな
ほんまやで (653以降自分のレスはこれが最初)
>>652 引数に代入したら参照渡しなら呼び出し側の変数が変わるし
参照の値渡しなら変わらないのだから、それは違うものだろ
要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)
タプルを返せるのだから、別に困りはしないが
ごく単純な話なのに、そんな長文で一体何がいいたいんだ?
簡潔に言えないから。あと長文だとなんとなく説得力が増す気がするから
>>655 > 引数に代入したら参照渡しなら呼び出し側の変数が変わるし
> 参照の値渡しなら変わらないのだから、それは違うものだろ
>>652 に書いてあるように、そこは本能的に分かるから使い方的にはわざわざ
区別する必要ないと思うんだ。
> 要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)
> タプルを返せるのだから、別に困りはしないが
リストや辞書などは使えるが返すほうが良いと思うけど、それは無関係な話
> ごく単純な話なのに、そんな長文で一体何がいいたいんだ?
>>627 の話
JavaのintとStringを「値的に振舞うもの」として同列に扱うなら、
Pythonのimmutableなオブジェクトも全部同じグループに入る
デザパタで言うValue Object
が、
>>627 はintとStringを区別しているのだから、それを区別したいのなら、
Pythonの数値やstrやタプルは全部JavaのStringと同じグループに入り、
Javaのintに相当するものはPythonには存在しない
>>658 >>652 に書いたとおり「実際の動作や概念的な仕様はどうでもいい」ので同じグループに入れる必要はない。
概念的に何に適合するかではなく使い方的にどう困るかを教えてほしい。
例えばJavaのintに相当すると仮に考えた場合にどう困るかということ。
>>659 端的に言えばJavaのintはオブジェクトではないので、
スタック上に配置されるし、Objectを継承していないし、メソッドを持たないし、
ジェネリックスのパラメータにできないし、
組み込み配列以外のコンテナには入れられない(ので、最近はboxingを自動で
行ってくれるようになった)
Pythonのintはごく普通のオブジェクトなので、そういう差別や区別がない
プリミティブの意味が判ってない香具師がいるな
Javaも15年経ってやっと設計ミスを認めてまともな言語になりつつあるな
香具師とか久しぶりに見たわ
665 :
デフォルトの名無しさん :2010/10/24(日) 15:05:11
仕事でパイソン使ってます、経験者募集ってあまり見たことないのですが 仕事で使ってる方はどんな処理をパイソンでされてますか? そんな自分はVBS使いなんですが これもない。見るのはPHPとかC経験者募集ばかり…orz
>>652 それ参照の値渡しと参照渡しを混同しても誰も困らないじゃんって話?
それは困るだろ。 参照渡しと言われたのでswap書いたけど意図通りに動きませんとか。
それはウンコだろ
「内部的に動作が違う」だけでなく、はっきり外部的にも違うものなのに 何で混同していいという話なのか分からんな まあ自分でそう思いたいだけならどうぞって感じだが C#でもclassに関しては参照の値渡し(call by sharing)になるが わざわざrefやoutパラメータでcall by referenceも出来るようにしてあるわけだが
パイソンでVBのようなフォームというかインプットできる画面を作成して そのインプットした値に応じて処理とかって作れますか?
はい
>>669 >>652 に書いたようにそれができないのは本能的に分かるからいいんだよ。
実際のところ正確な参照渡しがデフォルトの言語ってあまりないし。
>>671 しかしあまり使用しないでしょう?
言いたい内容は分かるんだけど今の話はそういう話じゃなくて、説明上、値渡しと
参照渡しだけでいいんじゃないかと。Cのポインタも参照渡しでいいよね?
値渡しですって説明したら値渡しの説明に困らないかい?
そういう意味から、Pythonの渡し方は参照渡しでいいんじゃないかとそう言ってます。
>>675 いや自分ならそれは普通できないだろうと思うから、最初からそんなことしない
そんなことないの?
>>669 は静的言語ですべての変数、配列をグローバルで宣言した方が良いね
>>674 Pythonみたいな奴はcall by sharingと最近は呼ばれるようだから、
call by valueと区別したいのなら、単にそう呼べばいいだけ
> 値渡しですって説明したら値渡しの説明に困らないかい?
全然困らないだろ
Cの関数呼び出しで何でもポインタを渡せば参照渡しになるかのように書いている人は、 本当にcall by referenceを理解できているのか疑わしい。
>>676 それはお前の場合だけ
参照渡しがデフォルトの言語というものはある(FORTRANやVBなど)
そして参照渡しというものがどういうものかを正しく知っている人間なら、
参照渡しと言われれば、そのようなものだと考える
「自分なら〜」とかいう自分の都合だけで、誤った用語を広めるな
>>638 それだと参照の値渡しと区別が付かない。
>>655 > 要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)
def append_zero(li):
return li.append(0)
a = []
append_zero(a)
print a # ==> [0]
>>681 >>638 はPythonが「参照渡しではない」ことを確かめる例なのだから、
「参照の値渡しかどうか」が分からなくてもよいのでは
>>678 > Pythonみたいな奴はcall by sharingと最近は呼ばれるようだから、
> call by valueと区別したいのなら、単にそう呼べばいいだけ
だから「実際の動作や概念的な仕様はどうでもいい」んだってば。
> > 値渡しですって説明したら値渡しの説明に困らないかい?
> 全然困らないだろ
ではどう説明するの?
>>680 VBは大昔だったので失念してた。でもintを普通に渡ししてたらByValだろゴラ!だったよ。
誤った用語を広めたいとは思わないけど、正確であることにあまり意義を見出せない。
>>684 >> > 値渡しですって説明したら値渡しの説明に困らないかい?
>> 全然困らないだろ
> ではどう説明するの?
値渡しだからコピーだが、Pythonの場合、値はオブジェクトインスタンスへの参照
なので、symbolic linkをコピーしたのと同じ
リンクがコピーされるだけで、指してる実体は同じ
そんだけの話だろ
話を難しくしてドヤ顔してる馬鹿が一番タチが悪い
>>684 > 「実際の動作や概念的な仕様はどうでもいい」
じゃあ何が知りたいの?
魔法でなんとかなるって説明でいい?
おまじない
>>681 はcall by referenceを理解していないことが確定しました。
>>685 > 値渡しだからコピーだが、Pythonの場合、値はオブジェクトインスタンスへの参照
めんどくさいの湧くことははっきりしてるんだから、参照の意味はっきりさせろ。
Cでいうポインタ渡し的な意味で、参照の値渡しってことでいいんだな?
>>687 もcall by referenceがわかっていない。
みんな、call by referenceな言語を使ったことないのか?
いい加減、どのレベルの話をしてるのか決着つけたら? Pythonの仕様って話だったら、call by sharingが正しい。 CPythonの具体的な動作って話だったら、ソース読めば分かるが、Cで書かれてるんだからきっとcall by valueだろう。
>>687 え、Pythonの場合、代入は普通に破壊的で、中身の置き換えでしょ?
変数の中身は「インスタンスへの参照」なので、「インスタンス」には
影響がないというだけで
>>> x = 0
>>> def f(): return x
...
>>> f()
0
>>> x = 1
>>> f()
1
関数型だと、言語によっては2度目のf()が0を返すものもあるよね
>>692 じゃあcall by referenceにおいて値の入れ替えではなく、束縛って何なのよ?
少なくとも、値の束縛って概念のあるcall by referenceな言語は使ったことが無いな。
旧世代の人間くらいしか使ったことないだろうな。パンチカードの次世代くらい
>
>>685 Cで説明してよ
なんだこいつ
今度はもっとお母さんみたいに言ってくれとかいいそうだな
>>694 破壊も何も、名前の束縛こそ本質。
そのコードはf()を呼び出したときにxが再評価されてるだけだよ。
もちろん、実装としては中身の置き換えだけど、概念としては。
>>699 いやだから、
> 必ずしも「名前」の値を置き換えたものになるとは解釈できない。
とか言ってたけど、これが中身の置き換え以外の何だというの
何となく言いたいことは分かった Cだと変数はメモリ上のブロック(Cではobjectと呼ぶ)につけられた 名前で、そのメモリブロックに書かれている2進数の列が まさに変数の中身であり値だが、Pythonは変数モデル自体が違うよ と言いたいわけね? 確かにそれは違う 俺はPythonのシンボルテーブルにおいて、名前に紐づいているオブジェクトIDを 変数の値と表現しているだけ 名前に対応するオブジェクトIDのスロットがあるのだから、一般的な 箱と中身モデルで話しても比喩としては差し支えないと思うけど
>>698 それ
> 言いたい内容は分かるんだけど今の話はそういう話じゃなくて、説明上、値渡しと
> 参照渡しだけでいいんじゃないかと。Cのポインタも参照渡しでいいよね?
> 値渡しですって説明したら値渡しの説明に困らないかい?
って話だからPythonじゃ全く回答になってないんだよ
うん。モデルが違う。 箱と中身モデルで考えることもできるだろうし、実装はCだから箱と中身モデルなんだけど、 PythonがPythonなりの変数モデルを目指して設計されている以上、 他のモデルで語る必要性っていうのが分からない。 (他の言語の変数モデルで置き換える方法を探るのは、処理系実装者の仕事だろう、と思う) 完全に別モデルで考えることがそう簡単にはできないからこそ、こんだけレスが付いてスレが読みづらくなったんだと思うし、 別のモデルに置き換えるのなら、変数の渡し方だけじゃなくて、=の意味とかも定義しないと意味をなさない気がする。 それに、今後の実装によって別のモデルとPythonのモデルで齟齬が出たときに当然優先されるのはPythonのモデルだし、 明確な矛盾までは出なくても「気持ち悪い、Pythonらしくない」という評価はPythonのモデルを元に行われるから、 そこらへんのニュアンスまで含めて数学的に等価なモデルじゃないと、面倒な思いをする可能性がある。
なんで毎度こんな騒ぎになるんだろうねぇ。 VBに参照渡しが存在してるから?
別にそんな特殊なモデルじゃないけど…
>>627 だけど何一つ有効回答がなくて何も解決していないんですが
馬鹿には理解できない ましてや議論もできないよ
そもそも値渡しが何かを分かってる人に pythonは値渡しです、もしくは参照の値渡しです pythonはcall by valueです、もしくはcall by sharingです とか説明するためのものでしょ。 あらかじめpythonのモデルがわかってるなら値渡しだのと説明する必要は全くないわけで。 わざわざpythonのモデルを使って参照渡しを再定義しようとするからややこしくなる。
Perlもscallerに関しては、参照渡しかな sub f { ++$_[0]; } f($x); とかやると、$xが書き換わるよね
↑scalarのつもり
Pythonの使い方においてかくかくをしかじかと考えているとどう問題があるのかを 尋ねたら馬鹿には理解できないと言われました。 Pythonって誰でも簡単に扱える言語なんじゃないの?
ヲタの言う事を、イチイチ真面目に全部実行しようとすんなよ。
> Pythonって誰でも簡単に扱える言語なんじゃないの? そうなの?
>>713 誰でも扱う事はできるけど、考えるのは馬鹿には無理って事では?
http://www.python.jp/Zope/intro 「また、Python は非常に習得しやすい言語で、初心者が学習するためにも
最適な言語となっています。アメリカでは Python を学習用言語とする
プログラミング教育プロジェクト CP4E(Computer Programming For
Everybody)が、DARPA(米国防衛高等研究企画庁)からの出資を得て
活動しています。」
誰でもは無理だろ fizzbuzz解けない人にプログラミングは無理
またずいぶん低いハードルだな
>>716 引数の渡し方についての考え方について、どういう問題があるのか聞いてるだけなんですが考えるって何?
>>720 「引数の渡し方についての考え方について、どういう問題があるのか」を考えることだろw
俺以外はな
解決したみたいでよかったな 一件落着
解決はしてないですね。別の考えの方が現れるまで待つしかないってことですか?
再掲しておきます。
引数の渡し方についての考え方について、どういう問題があるのか教えてください。
詳細は
>>627 です。
問題ないよ〜
>>720 議論の対象になってるのは「引数の渡し方についての言い方」だけだと思うがな。
もし「考え方」だけに集中したいなら参照渡しと呼称するのを止めた方がいいんでね?
>>727 そもそもが間違ってる。考え方以前の問題
そしてそれを指摘しても「有効回答がない」
全く話が進まない。
大体は分かってて用語だけ間違えてるのか、それとも本当に全く理解できてないのか
それとも全部知ってて荒らしたいだけなのか、それ以前にID出ないから偽物かもしれんし
もうスルーでいいんじゃね。
>>729 議論が何を指しているのか分かりませんし呼称を変える必要も感じませんが、
文脈から判断できないのであれば、自分のいう値渡しをA、参照渡しをBとして
説明して頂いて構いません。
>>627 を言い換えるなら
「pythonで数値を渡す -> javaでprimitiveな型の値を渡す感じ
pythonでリストを渡す -> javaのStringBufferを渡す感じ
pythonでタプルを渡す -> javaのStringを渡す感じ
みたいに考えていいんだよね?
であれば、数値はAで、リスト・タプルはBみたいに考えると諸々含めて
スッキリするんだけど、やっぱり数値の0もオブジェクトみたいに
考えないとどこかで違いが出てきて困ったりするの? 」
となります。
>>731 どこが間違っているため、結論がどうなるのでしょうか?
>>734 文脈から判断可能だと思うからです。
なお万一結論に関係しない質問なら、今はご遠慮願います。
>>732 > 数値はAで、リスト・タプルはBみたいに考えると
数値もリストもタプルも全部同じ渡り方
分けるのなら「数値・タプル」組と「リスト」であって、その分け方はおかしい
前者はオブジェクト自体が変更されることはない(immutable)
後者はオブジェクトが変更されることが有り得る
関数呼び出しの観点で言うと、前者では関数に渡した後でオブジェクトが変わっている
心配をする必要がない
後者はある
738 :
737 :2010/10/24(日) 19:29:29
ごめん、よく流れを見てなかったw 俺も以後スルーするわ
>>737-738 Pythonやってる人は皆そんな失礼な方なのですか?
分け方がおかしいかどうか、ではなく、その分け方でどう具体的に問題があるのか
という点を聞いています。後半5行において、その指摘がまったくなく、その分け方
でも矛盾しないというだけの話です。
またオブジェクトが生成時にimmutableであることと、渡し方には関連がないと
考えています。違うのでしょうか?
てめぇが一番失礼
paramikoうまく使えないよおおおおおおおお
釣りとアスペルガーとどっちなんだろうな
pass
超初心者スレでやってるクダラナイ事が余程面白いらしい…┐(´∀`)┌ヤレヤレ
なんか一人でえんえん頑張ってる人は Wikipediaで参照渡し調べてから JavaなんとかってMLで今をときめくセキュリティ専門家と ポインタ完全制覇の人の瑞々しい議論を楽しんでくればいいのにと思った 暇がつぶせると思うぞ
Pythonは初心者をバカにして楽しむ連中しかいないんだな
むしろ楽しくなくて困ってる状況
初心者をバカにする点は否定しない…と Pythonは初心者をバカにして楽しむ連中しかいないんだな
超初心者用のスレまで用意されてるのに
初心者さんは今日一日何やったの? そんな暇があったらもうちょっと有意義なことしようぜ
誘導すらなく、バカにし続け反省の色もないとは、さすがPythonista 少なくとも日本では初心者にはおすすめできないPythonってことだな
少なくともあなたにはおすすめできません
というかフルボッコにされた初心者ってどれ? 大体目くそ鼻くそのやり取りだったと思うけどな。本人は酷く傷ついたらしい
初心者は全て目くそ鼻くそとバカにするPython信者ども、どう見ても
>>739 は初心者だろ
少なくとも日本では初心者にはおすすめできないPythonってことだな
珍しく勢いが強いと思ったら荒らしが涌いてるだけか、つまらん
そして初心者を擁護する人は荒らし認定という徹底ぶりさすがPythonista
paramikoで接続できたよおおおおおおお
馬鹿にされたくないなら馬鹿なレスするなよ 馬鹿なレスが許されるのは馬鹿にされる覚悟がある者だけだ
おまえら最近セックスしてる?
少なくとも生まれてこの方してないな
Pydevで、一部のパッケージがソースエディタ上で認識されなくて困ってます パッケージエクスプローラのpythonパス上(python\lib\site-packages以下)でちゃんと認識されてるし #@UnresolvedImport つけたら問題なく実行できて結果も正常です。 けど↑これはずすとUnresolved importってなってエラーになります。 実行はできてもコンテンツアシストが効かなくて不便なので困っています。 easy_install でパッケージを入れてからpydevの設定→インタープリターで新しく作った構成で、その後pydev自体も再起動してます。 その他のパッケージではコンテンツアシストが使えるので、easy_installだとダメってことはないようです。 助言よろしくお願いします
ここはEclipseでもPydevのスレでもありませんよ
西尾うぜー
769 :
デフォルトの名無しさん :2010/10/24(日) 22:51:46
2ch は心の荒んだ人の溜り場だな
なんかJavaやってる奴は時々どうしようもなく使えないのがいるよね
お前のことか
誰も
>>766 に答えてあげないんだな
pydevはおろかeclipseスレもないのに
python setup.py install でインストールしたツールをアンインストールするにはどうすればよいでしょう?
>>772 だけど俺は
>>766 じゃない。
eclipse使ってないから知らなかったけどそんな名前のスレになってたのか。
>>708 少なくとも、関数呼び出しにおいて、数値(int, float, long)とリストとタプルに関しては、それで問題ないんじゃないの?
他の場合に関しては
>>604 にあるとおり、事情は単純じゃないし、現時点であっててもいつまでもそうあるとは限らない。
779 :
デフォルトの名無しさん :2010/10/25(月) 01:15:35
>>710 > そもそも値渡しが何かを分かってる人に
> pythonは値渡しです、もしくは参照の値渡しです
> pythonはcall by valueです、もしくはcall by sharingです
わかる人はこれでわかるんだけど、わかる人用の説明なんだよなw
値渡しと参照渡し混同してるとか(ポインタの値渡しを参照渡しと思っているとか)、
もしくはどちらかしか知らないと余計わからなくなるという
>>739 mutableとimmutableは、生成時のみの話じゃないし、むしろ生成後の方が重要。
(値を変更するのは生成時じゃなくて、生成後だからね)
渡し方に関係はないけど、それを言うとPythonは渡し方自体がどうでもいい言語で、
言語の中にメモリアドレスなんて概念が出てこないのと同様、値渡し、参照渡し、ポインタ渡しという概念が出てこない。
知りたいのは仕様でも実装でもないとか言ってたけど、実装見るのが一番早いよ。
Jythonのソース落としてきて本当にそれでいいか確認するといい。
781 :
デフォルトの名無しさん :2010/10/25(月) 01:17:48
>>745 それ面白そうだから、リンクくれ。暇な後輩に読ませる
is と == …
>>778 こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
そうであるならよく見ておかないといけませんね。
>>780 > mutableとimmutableは、生成時のみの話じゃないし、むしろ生成後の方が重要。
後からmutableになったりimmutableになったりするオブジェクトがある
ということですか?例えばどんなことができるということなのでしょうか?
> 渡し方に関係はないけど、それを言うとPythonは渡し方自体がどうでもいい言語で、
推測ですが全てがオブジェクトであり、全て参照の値渡しだという説明なら区別する
必要がないためにXX渡しという言葉を出していないだけの話かと思います。
つまり仮に値渡しなどが可能な型が出来たとしても、mutableかどうかは渡し方には
関係ないと思うということです。
> Jythonのソース落としてきて本当にそれでいいか確認するといい。
厳密である必要はないので、実装から見るコストまではかけられません。
また、このレベルのことを実装から見なければ問題があるかどうか分からないほど
Pythonは曖昧な言語ということなのでしょうか?
今日からdelta日違う日付(例えばdelta=-1だったら昨日の日付)の年月日を 桁を削らずに取得したい場合はこんな感じでいいですか? 削らずにというのは、9月なら month='09' が欲しいということで。 date = datetime.date.today() + datetime.timedelta(days = delta) year, month, day = date.isoformat().split("-") なんか環境依存で全然違う結果が出てくる可能性とかありますか? month = date.strftime("%m") とかでも同じ結果だったけど、無駄がおおい気がしたので
year, month, day = date.strftime('%Y-%m-%d').split("-")
>>786 おお、なるほど
言われてみればそれが一番すっきり
ありがとうございます。
>>783 > こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
多分、関数呼び出しの、数値(int, float, long)とリストとタプルに関してはこれからも変わらない。
> 後からmutableになったりimmutableになったりするオブジェクトがある
そんなものはない。
> つまり仮に値渡しなどが可能な型が出来たとしても、
今の変数モデルを捨てないと、xx渡しという言葉は出てきようがない。
> また、このレベルのことを実装から見なければ問題があるかどうか分からないほど
> Pythonは曖昧な言語ということなのでしょうか?
厳密に、Pythonの変数モデルに従ってる。
それを無理やり、別のモデルに置き換えようとするから面倒になる。
上にも書いたとおり、関数呼び出しの、数値(int, float, long)とリストとタプルに関しては、君の認識で問題は起こらないだろう。
けれど、それと同じ考え方を別の似た何かに持ち込んでも、必ずしもそうなるかどうかは知らんということだ。
>>> def hoge(fuga): ... fuga[1] = 9 ... >>> hage = [4,3,2] >>> hoge(hage) >>> hage [4, 9, 2] >>> hige = (3,2,1) >>> hoge(hige) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 2, in hoge TypeError: 'tuple' object does not support item assignment >>> hige (3, 2, 1)
>>789 immutableなオブジェクトの変更はできません。
>>788 > > こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
> 多分、関数呼び出しの、数値(int, float, long)とリストとタプルに関してはこれからも変わらない。
そうですか、注意すべきものが減って良かったです。
> > 後からmutableになったりimmutableになったりするオブジェクトがある
> そんなものはない。
そうですよね。だとすると何が重要だったのかよくわかりませんが。
> > つまり仮に値渡しなどが可能な型が出来たとしても、
> 今の変数モデルを捨てないと、xx渡しという言葉は出てきようがない。
説明上でてきた仮定にケチを付けて何をしたいのかよく分かりませんが、
分類上他の言語と比較し得ない特殊なモデルということでない限り、出てきてよいと
思います。例えば今のモデルは「全てがオブジェクトであり、全て参照の値渡し」と
書きましたが、それでは説明できない状況があるということでしょうか?
もしなければPythonは「参照の値渡し」という言葉で分類することができます。
> > また、このレベルのことを実装から見なければ問題があるかどうか分からないほど
> > Pythonは曖昧な言語ということなのでしょうか?
> 厳密に、Pythonの変数モデルに従ってる。
> それを無理やり、別のモデルに置き換えようとするから面倒になる。
では曖昧なモデルを厳密に実装しているということですか(なんだか変な言い回しですが)?
でなければ実装を見る必要はないと思います。
>>789 mutableとimmutableの違いがオブジェクト操作にどう影響するかは分かります。
渡し方とmutableかどうかには関係がないと言っているだけです。
例えばC++で
void hoge(const int& hoge);
void hoge(int& hoge);
はどちらも参照渡しに分類されると思いますが、上はimmutableで下はmutableですよね。
>>790 ですよね
= の意味を調べるといいかも
意見ってあなた誰? コテつけて 鬱陶しいと思ってる人もNGしやすいだろうし
Javaの変数の方を全部objectにした、って考えたので十分じゃないの? immutableとmutableの関係も完全一致だし。
>>795 Javaは関係なく「全てがオブジェクトであり、全て参照の値渡し」というモデルと考えてOKということですか?
皆そう最初から言ってただろ 何を聞いてたんだよ
>>797 いいえ。
>>788 が以下のように言っていたので
> > つまり仮に値渡しなどが可能な型が出来たとしても、
> 今の変数モデルを捨てないと、xx渡しという言葉は出てきようがない。
確認した次第です。
>>798 俺の知る限り、一般にはPythonはcall by sharingと認識されているし、
その考え方で特に矛盾は生じない
公式ファック
お下品
>>799 であれば、モデルについては矛盾がないこと確認が取れました。ありがとうございます。
>>795 に戻りますが、考え方的に、初心者の立場からすると、定数リテラルまでオブジェクト
という部分は、どこかに置いておきたいのです。そうしないとオブジェクトって何?どこまで
できるの?という疑問が最初に発生してしまい、全体像をつかまないうちは完全理解した
つもりになれる部分が皆無になり、習得する新しいものについて常に多くのケースを考える
必要がでてきます。
それよりは、数値リテラルはjavaでいうprimitiveな型と考えた方が可能な操作が限定的で
理解しやすく初期の文法理解で困りません。なので最初の質問をした次第です。
>>800 申し訳ありませんが、値の返し方を尋ねたいわけではないので何の説明にもなっていません。
質問者が英語読めると思ってんのか。翻訳して来いアホ
> それよりは、数値リテラルはjavaでいうprimitiveな型と考えた方が > 可能な操作が限定的で理解しやすく初期の文法理解で困りません。 > なので最初の質問をした次第です。 なぜそう「考えたい」のか、よくわからないな 実際違うものなのだし Pythonで可能な操作を知りたければ、REPL(対話環境)を起動して objectに対してdir()してみるのが手っ取り早いよ >>> type(1) <type 'int'> >>> id(1) 4677432 >>> dir(1) (省略) >>> help(1) (省略) 全てはオブジェクトで、それゆえ全ての値に対して こうしたイントロスペクションが行えるのがPythonだ
別に英語は平気です。オカマいなく。
2.6も途中のやつがどこかにあったぞ
CPythonの説明の有無くらいしか違いはないみたいですね。
>>806 書いたように、「オブジェクトって何?どこまでできるの?という疑問が最初に発生してしま」うからです。
この整数リテラルは属性持たせたりできるんだろうか?
メソッドも追加できるんだろうか?
演算子も実は全然違う意味にできたりするんだろうか?
クラスとかもあるのかな?
そもそも型はどういうものなんだ?
とか最初は例示で理解するものなのに単純かつ具体的で限定的なものがないと、それを使った説明を
理解する際にケースが増えてしまって分かった気になれません。
じゃあそれを書いた本を出せば儲けられるんじゃね?
3冊くらい売れそう(ww
>>810 なるほどねえ。
まあ、そういうことなら、数値は単に他の多くの言語のように足したり引いたりできる
「もの」と思っておけばいいんじゃないの。
「Javaのprimitive型のような」といった妙に限定的な比喩を出すから
余計な議論や誤解を招くのであって。
初期の学習では、「primitive型のような」といった(誤った)理解さえ
不要だと思うよ。
>>813 そうはいうけど問題ないか尋ねる際に、オブジェクトでない別の何に例えればいいのさ
>>814 いや、実際にはオブジェクトなのだから、「オブジェクトではないXと
同じようなものだと考えて問題ないか?」といわれたら、そりゃ「はい」とは
答えにくいだろうw
質問者が本当は「何を」気にして、問題にしているのかはちゃんと説明しなきゃ、
質問者にしか分からんのだからな
Pythonのintは整数の値をあらわす型で、四則演算ができて、
1 + 1が2になるようなものか?という質問なら答えはYesだ
Javaのprimitive型じゃないし、pythonにprimitiveな値型はない 強いて言うならIntegerとかStringみたいなもんだ
>>816 JavaのIntegerは+演算子で足したりできないので、その比喩もまた
誤解を与えるんじゃないかな
>>815 だからそう厳密でなくていいように質問も限定的にして
「実際の動作や概念的な仕様はともかく使い方だけで考えれば」
と最初から前置きをしているじゃなイカ。
とまあ、この話はこの辺で。
>>815 もレスくれた方もありがとね。
>>817 丁度質問書いてたとこだった。
>>815 > 質問者が本当は「何を」気にして、
うっかりどこかで参照渡しと説明してしまって
引くに引けなくなったとかじゃないか
>>817 1.5以降だと暗黙のうちにboxing変換やunboxing変換されるから、
見かけ上Integerなのに+演算子使えてるように見えるコード書けるんだよ。
要するに、いくらでも誤解の余地があるわけで。
>>819 いや単に昨日の深夜まで有効回答がなかっただけ。
半分以上はその深夜で片付いたんだけど、そこで出た疑問が今まで解決してなかった。
>>816 よく見たら意味が違ってた。質問は以下。
「Integerは中の値を変更できない(多分)けど、Pythonの数値オブジェクトってmutableなの?」
荒らしにまともな意見は通用しないという例ですね
>>824-825 んー、俺は今でも参照渡しと参照の値渡しは無理に区別しなくていいと思うし、
mutableとimmutableはそれほど重要な違いとは思わないし、
何かを間違えてたとは思ってないけどね。
マジでコテつけてくれ
>>827 コテというのは同一人物を主張したい人が自発的につけるもの。
何が嬉しくてそんなもんつけるんだよ。
参照くんは長々とうざいね〜。そんなことどうでもいいんだよ!
お前もいい加減しつこいな…
>>828 うざいからあぼんするためにコテをつけることを要求してるだけだろ
>>831 だからなんでそんな要求聞く必要があるんだよ。うざすぎ。
>>817 変数への代入と関数の引数の受け渡しの話をしているところに、他の操作の
話まで持ち出したらカオスになるだけだろ。
正直なんでこじれるのか理解不能。 可変と不可変、簡単な話だろ?
>>833 そこはもう一通り話が終わった後なのであまり気にしないでください。
>>834 可変と不可変は関係ありませんでしたが、話は全部ごく簡単な内容です。
こじれた原因は一目瞭然なので割愛します。もし本当に理解できないと
いうことなら自分の見解を書きますが、誰も望んでいないでしょう。
おまいらスレ汚してるっていう自覚はある?
自治厨うぜー
>>836 どの部分まで指しているのか質問なのか知らないけど、ないよ。
回答もらってからは別に用はないんだけど、触れば(気が向けば)反応するってだけ。
汚すつもりはない。
とウンコ塗れのまま言い放つのであった
>>839 ほんとしつこいな。なんで内容に関係ない部分ばかりで意味もなく絡んでくんの?
これだから頭の悪い奴が沸いてくると困る
>>791 > そうですよね。だとすると何が重要だったのかよくわかりませんが。
「生成時にmutable」の「生成時」ってなんだよ。生成時に限定する意味が分からんし、変更するのは生成時じゃなくて生成後だろ。
という意味で書いた。
もし君の理解不足でなく、僕の書き方が悪かったのなら、ごめん。
> 説明上でてきた仮定
その仮定が、Pythonの今の変数モデルでは相容れないの。
> 例えば今のモデルは「全てがオブジェクトであり、全て参照の値渡し」と
> 書きましたが、それでは説明できない状況があるということでしょうか?
だから、そんなもんは処理系実装者か数学者に聞け、と。
それに関しては「参照」という言葉が、メモリ上のどこかに実体があることを前提にしていないのなら、
単に冗長なだけで、間違ってもいないと思うけど。
多分「参照の値の参照の値渡し」って言葉でも「チューリング機械」って言葉でも、
等価な概念は作れるから、分類なんて無限にあるんだけどね。
> では曖昧なモデルを厳密に実装しているということですか(なんだか変な言い回しですが)?
曖昧なモデルって、あなたの脳内にしかないでしょ?
> 例えばC++で
> void hoge(const int& hoge);
> void hoge(int& hoge);
> はどちらも参照渡しに分類されると思いますが、上はimmutableで下はmutableですよね。
mutableかimmutableは渡し方には関係ないんじゃなかったの?
引数でmutableかimmutableか指定できるなら、少なくともPythonでのmutable/immutableとは別用語
>>843 > 「生成時にmutable」の「生成時」ってなんだよ。生成時に限定する意味が分からんし、変更するのは生成時じゃなくて生成後だろ。
> という意味で書いた。
もう説明の必要はないと思いますが、限定したのは決定するタイミングだからです。
それ以降immutableなら常に変更不可なのは渡されるかどうかに関係なく自明
なので、何が重要だったのかよく分からないと書きました。謝る必要はありません。
> その仮定が、Pythonの今の変数モデルでは相容れないの。
別に仕様に関する仮定の話なので、今の設計モデルに拘る必要もないと思います。
> それに関しては「参照」という言葉が、メモリ上のどこかに実体があることを前提にしていないのなら、
> 単に冗長なだけで、間違ってもいないと思うけど。
実体がどこにあるかを限定する必要はなく、また先に言っているとおり、厳密である必要はないので
その回答で十分です。余談ですが等価な概念を別の分類にする必要ありません。
> 曖昧なモデルって、あなたの脳内にしかないでしょ?
ちょっと何を言いたいのか量りかねますが、Pythonの実装を見ないと分からないと言ったので
それではモデルがその部分を規定していないということになります、と言っているだけです。
> mutableかimmutableは渡し方には関係ないんじゃなかったの?
独立してる(=無関係である)ことを例示したつもりです。何が伝わってないのかよく分かりません。
> 引数でmutableかimmutableか指定できるなら、少なくともPythonでのmutable/immutableとは別用語
渡しているオブジェクトの分類の問題です。コンパイル時にチェックするか実行時にチェックするか
だけの違いで、用語まで別にすることはないでしょう?
twitterにでも書いとけや!!
盛り上がっているところすまんが、以下に事実を挙げる。 * mutable/immutableと、call by value/call by name/call by referenceは直交した概念 * pythonの呼び出しは、参照をcall by valueで渡す、call by sharing 以上の事実を受け入れないのであれば、pythonを使わないほうがいい。
>>844 > Pythonの実装を見ないと分からないと言ったのでそれではモデルがその部分を規定していないということになります
だから、実装はPythonのモデルとは別のモデルに置き換えて行われるから、パッと分かるもんじゃないと書いてるんだ。
数学者か実装者に聞けというのは、数学者か実装者になら分かると言う意味だから、曖昧というのはありえない。
Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
けどそれはJavaが曖昧に設計されていることを意味しないだろ?
> コンパイル時にチェックするか実行時にチェックするか
いいや、そんなことは問題にしていない。
int f(const int &n){return n;}
int main(){ int x = 1; f(x); }
C++じゃ、intはmutableでconst intはimmutableだが。
ここで、fの中でnはmutableかimmutableか?
うあああ文字コード関係めんどくせええええええ そもそもwindows上で動かすこととか考えるなということか それともpython3だともっとやりやすくなってるのかな?
Python3だとやりやすくなってるけど文字コードのことを まったく考えなくていい、ということはないよ
>うあああ文字コード関係めんどくせええええええ 理屈がわかればどうってこともないんだけどね 俺はとりあえず解決方法で sitecustomize.py を説明しているページは投げ捨てろと思う
>>852 >俺はとりあえず解決方法で sitecustomize.py を説明しているページは投げ捨てろと思う
ハゲドウ
Python3000での文字列周りの変更ってどんなのがあったっけ? ・unicodeとstrの名前が変わる ・文字列リテラルがデフォルトでユニコードになる ・openでencodingとかも扱えるようになり、codecs.openみたいな特別仕様の関数を使う必要が無くなる ・reprがユニコードを返すので、printに渡したリストや、エラーメッセージが文字化けしない
pypy Linuxでテストが通ったらしい
>>854 エキPyにまとめられてたけど、
"foo" + u"bar" がOKだったのが、 b"foo" + "bar" でTypeErrorになる。
u"foo" in {"foo": 1} が True だったのが、 "foo" in {b'foo': 1} で False になる。
openとか基礎的な部分でunicodeを最初からサポートしているから「混ぜない」使い方が
しやすくなっている反面、チェックがより厳密になった分「混ぜる」使い方が不便になった。
例えば、
# partsの中身がstrならstr, unicodeならunicodeを返す
def pathjoin(parts): return '/'.join(parts)
って出来てたのが、出来なくなった。
>>848 > だから、実装はPythonのモデルとは別のモデルに置き換えて行われるから、パッと分かるもんじゃないと書いてるんだ。
> 数学者か実装者に聞けというのは、数学者か実装者になら分かると言う意味だから、曖昧というのはありえない。
何をどうしたいのかよくわかりませんが、とりあえずお付き合いします。
Pythonのモデルとは何でどんな別のモデルに置き換えようとしているんですか?
私はPythonのモデルは↓以外にはないと考えていました。
http://docs.python.org/reference/ > Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
> Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
> > コンパイル時にチェックするか実行時にチェックするか
> いいや、そんなことは問題にしていない。
> int f(const int &n){return n;}
> int main(){ int x = 1; f(x); }
> C++じゃ、intはmutableでconst intはimmutableだが。
> ここで、fの中でnはmutableかimmutableか?
質問だったのですが答えては頂けないんですね。問題にするって誰が何を
問題にしてるんでしょう?本当に何をしたいのかさっぱり分かりません。
とりあえずnはimmutableと扱われますね。
Pythonに関係ない話なら他でやれよ
>>859 そもそも自分の質問は他の方の回答でほぼ解決しているので、このまま終了でも
無問題なのですが、質問した手前放り出すわけにも行かずお付き合いしています。
というわけでどうするかは
>>848 に任せます。
自演荒らし?
お前らセックスしろよ 気持ちいいし、少子化も防げるぞ
頭が固いと大変だな
人間は神になるために中性を保つのだよ
zopeとかdjangoやってる奴らは魔法使いが多そう(wwWwwWwwWWWwww
perl忍者はNGNameなんだからコテ外すなよ
扱ってるものが宗教問題化しがちで基地外も少なくはない板なのに、なんでIDねーんだかいつも不思議
荒らしてるという自覚のない荒らしが増えて困ってる
セックスしろよ(www 嵐とかどうでもよくなるぞ(wWWwwWWwww
>>868 はげどう
宗教戦争になりやすいOS板にも何故か無い
まだ荒らしが続いてるのか…
>>858 > 私はPythonのモデルは↓以外にはないと考えていました。
>
http://docs.python.org/reference/ それ。置き換える先は、JavaのStringやらStringBuffer。
> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
別の解釈で置き換える方法が自明じゃないことをもってして、曖昧であることを示せない、ということを挙げたまで。
> 質問だったのですが答えては頂けないんですね。
そもそも、質問がおかしかったのだから答えようがない。
> とりあえずnはimmutableと扱われますね。
C++ではそうなる。
が、Pythonではmutableのものをimmutableにすることはできないのだから、
C++でのimmutableはPythonでのimmutableとは全くの別物。
Djangoの習得Webのマニュアルだけでいける? 2日もあればなんか作れるよね、そうだといいなぁ
>>873 >>859 に配慮しないのですか?
> それ。置き換える先は、JavaのStringやらStringBuffer
なら実装なんて見る必要ないよね?
> > 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> > どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
> 別の解釈で置き換える方法が自明じゃないことをもってして、曖昧であることを示せない、ということを挙げたまで。
論理が破綻してますよ。あらゆる解釈が成立していない例を示しても意味ないでしょ?
説明をする気ならする、しないなら取り下げて。無駄な話をしたくない。
> そもそも、質問がおかしかったのだから答えようがない。
であれば解釈が二通り以上成立する文脈を一意に正すための質問をしてから
回答してください。あなたの場合は、無関係な質問をして話題を変えているだけ。
> C++でのimmutableはPythonでのimmutableとは全くの別物。
同じですよ。f()内でそういう型として扱われているだけ。
immutableなオブジェクトを渡すためにはimmutableな引数が必要ですよね?
mutableな引数ではどちらも渡せます。どちらを渡す場合でも参照渡しという
渡し方になっているため、渡し方にmutableとimmutableは関係ないですよね?
C++ではimmutableかどうかを、文脈ごとに宣言される型に基づき、コンパイル時に
正しくチェックできます。
Pythonでは、実行時、変更するオブジェクトがimmutableかどうかを見てチェックする
必要があります。
双方のimmutableは同じ意味としてどこかに問題がありますか?
変数、値、オブジェクトのモデルが全く異なる言語同士で「同じようなもの」 を対応付けようとする行為は、主観が入るので人ごとに話が食い違って当たり前。 「C/C++で言えば」という話題は全く生産的ではない。 Javaの object 型変数のみに限定すれば、Pythonの変数とオブジェクトのモデルに ほぼ一致する。
>>876 javaのオブジェクトって中身をmutableにできたっけ?
あ、immutableね
全く異なることはないだろう。 Javaの参照型/Pythonのobject型はポインタからポインタ演算を無くしたようなもんだし。 Cの値型やJavaのプリミティブ型、C++の参照型は対応するものが存在しないからややこしいけど……。
>>875 >
>>859 に配慮しないのですか?
あなたこそ。
> なら実装なんて見る必要ないよね?
なぜそういえる?
> あらゆる解釈が成立していない例
の意味が分からない。
実装見るか数学者に聞けって話を、モデルが曖昧であると勘違いしたレスがあったから、
モデルが曖昧でなくても、別のモデルで説明することが困難な場合があると書いているだけ。
> 解釈が二通り以上成立する
私には、1通りすら解釈が思い浮かばない。ナンセンスで答えようのない質問にしか読めない。
> あなたの場合は、無関係な質問をして話題を変えているだけ。
関係がないのですか?
あると推測して聞いてみたのですが、質問の意図をあなたしか知らない以上、それはどうしようもないです。
> 同じですよ。f()内でそういう型として扱われているだけ。
そういう概念が、Pythonにはない。
> 双方のimmutableは同じ意味としてどこかに問題がありますか?
ゆえに受け入れられないし、それ以前に、なんで別のものを同じだと言いたがるのかが分からない。
>>879 参照はポインタ演算もないし自動デリファレンスしてくれるしで
「何かを指すもの」として抽象化されている
だったらわざわざ低レベルなポインタを持ち出して
Pythonの参照を理解しようなんて真似をする必要はないと思うんよ
ところでJavaの参照型なんかはヒープに確保されるんだろうけど
Pythonのintなんかもそうなの?
> >
>>859 に配慮しないのですか?
> あなたこそ。
>>860 で意思表示しています。あなたがレスをするので続けているだけ。
> > なら実装なんて見る必要ないよね?
> なぜそういえる?
そのモデルで厳密に実装されていると、あなたが言っていたし、
私は厳密でなくていいと何度も言っているから。
> > あらゆる解釈が成立していない例
> の意味が分からない。
そのレスは、
>>858 の
> > Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
> > Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
という部分の引用です。
> > あなたの場合は、無関係な質問をして話題を変えているだけ。
> 関係がないのですか?
何度も無関係と書いています。検索してみてはどうですか?
> あると推測して聞いてみたのですが、質問の意図をあなたしか知らない以上、それはどうしようもないです。
そこが噛み合わない原因ですね。記述してある内容と矛盾する推測に基づいてレスをしています。
> > 同じですよ。f()内でそういう型として扱われているだけ。
> そういう概念が、Pythonにはない。
そういう機能がないから何?
> > 双方のimmutableは同じ意味としてどこかに問題がありますか?
> ゆえに受け入れられないし、それ以前に、なんで別のものを同じだと言いたがるのかが分からない。
それで何も問題がないからでしょう?
>>882 やるならちゃんとやれよ
投げやりになってるぞ
引用文が多すぎ…どっか別のとこでやって欲しいなあ。ツイッターとかさ
>>878 JavaのStringやIntegerはimmutableだよ。Pythonととても似てる。
>>881 Pythonの全てのオブジェクトはヒープに格納される。
なんかレスするためのレスになってきたぞ
>>885 thx.
JavaやC#みたいに値型はスタックで参照型はヒープとかじゃないんだ
なら尚更そういうモデルは持ち込まないほうがよさげか
おまえら二人でやれよ スレ汚すなアホ
いるなこういう奴・・・ 本人は難しそうな言葉を駆使して厳密な議論をしてるつもりなんだけど、とても残念なことに頭が悪い (´・ω・)カワイソス
IDが出ないのをいい事に、多重人格炸裂してますね。
おい、python 配列スライスが変態すぎるだろ [index...index]使わせてくれよ
ごめんtypo perlもrubyも[index..index]だったね
>>891 inclusive range は提案されたけど、たかだか -1 や +1 の2タイプを省略するためだけに
構文ルールは増やさないってさ。
スライスにstep指定できるのはホントに変態だよな。
rgb = range(24)
rgb[::3] = [255]*8 # Rが全部255に!
>>882 > 私は厳密でなくていいと何度も言っているから。
厳密でなくていいって前提が、まずおかしい。
間違っていてもいいなら、初めから質問しなくてもいいし、
間違っていないことを検証しなくてもいいなら、間違っていないことを示せていない点で、間違っていてもいいと同じこと。
> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
そこの時点で、意味が分からなかった。
なので
> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
にのみ答えた。
> 何度も無関係と書いています。
ないというわりには、ない根拠が明確でない。
> そこが噛み合わない原因ですね。
なら、その部分を明確にする気がないのですか。
> 記述してある内容と矛盾する推測
具体的に、どことどこ?
> そういう機能がないから何?
ないから、同じとはいえない。
> それで何も問題がないからでしょう?
そりゃ「ないから何?」で済ませるなら、問題になりようがないわな。
同じ質問だが、なんで別のものを同じだと言いたがるの?
「同じ」じゃなくて「似てる」とかだったら同意するのに、どうして同じだと言い張る?
>>889 正直、難しい言葉なんて自分が混乱するだけだから使いたくないし、面倒を避けるために厳密にしたら余計に面倒になってしまう。俺はとても残念なことに頭が悪い。
>>895 コテ付けてくれ。長すぎて邪魔だからNGできるように
もういっそ隔離スレ作って、こいつら以外の全員が移住すればいいんじゃね?
>>895 OK。ここで続けるのですね。
> 厳密でなくていいって前提が、まずおかしい。...間違っていてもいいと同じこと。
厳密でなくていいというのは漏れや例外があったとしても大筋合っていれば構わないということ。
> > どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
> そこの時点で、意味が分からなかった。
↓を噛み砕いて説明できればOKです。
> Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
> Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
没解釈例)「 Javaで書かれた処理がラムダ式で表現できることは証明されているはずだがそのラムダ式がどう表現されているかは推測できないだろう?」
なぜ手続き型のJava?なぜラムダ式?となり、仮にそれらを許容したとしても仕様は1つでも実装は何通りも書けるでも同じで、数学の出る幕はない。
> > 何度も無関係と書いています。
> ないというわりには、ない根拠が明確でない。
その場で聞きましょう。例えば、今続いてる話は一体何を目的としてその目的とどう関係しているのか考えてみてください。
> > そこが噛み合わない原因ですね。
> なら、その部分を明確にする気がないのですか。
>>882 で「何度も無関係と書いている」のに関係「あると推測して聞いて」いると言っているからです。
> > 記述してある内容と矛盾する推測
> 具体的に、どことどこ?
無関係と言っているのにそれを放置して続けている部分です。自分で検索してください。
> ないから、同じとはいえない。
引数の型修飾が「ない」となぜmutable/immutableの意味が「同じとはいえない」のですか?
> そりゃ「ないから何?」で済ませるなら、問題になりようがないわな。
何が問題か尋ねているのに何も問題を書いていないかったからです。
> 同じ質問だが、なんで別のものを同じだと言いたがるの?
これはただの水掛け論ですね。
> 「同じ」じゃなくて「似てる」とかだったら同意するのに、どうして同じだと言い張る?
結論が変わらない(引数の渡し方は渡すオブジェクトがmutable/immutableかどうかとは無関係である)なら表現はなんでも構いません。
文字化けの原因がわかったよおおおおおおおおお pythonじゃなくてsambaが問題だったorz
python.jp は外していいと思う
つーかGoogle検索一本でPythonなんて使えるだろ・・ むしろチュートリアルを内部検索してる時間が無駄 組み込み関数ならググれば一発だし、 ライブラリもそれ用のドキュメントページがヒットする
python初心者が、まず一冊読むとしたら、どの本がお勧めでしょうか? CやC++は使ったことがあります。 皆さんのお勧めの本を教えてください。
>>874 日本のDjangoは死んでるから、何書いても返事帰ってこないよ
たしかに日本語ページは間違いが多い
919 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 12:21:51 ID: ???
これって0.96ベースなの?
http://www.amazon.co.jp/dp/4048672096/ 920 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 12:25:32 ID: ???
著者陣が豪華過ぎて鼻血出た(wwWwwWWWWwwww
921 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 13:11:50 ID: ???
>>919 書いてる人、A級戦犯だね.
923 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 14:31:08 ID: ???
>>919 レビューひどすぎてワロス
924 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 14:41:50 ID: ???
>>921 温泉逝ってる場合じゃないな
まだ荒らしが続いてるのか…
>>904 チュートリアルとオライリーのクックブックと今年出たエキスパートなんとかって本
この3つあれば最強
>>899 > Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
ごめんよ、ここは少なくともJavaでできることはラムダ計算でもできる、の間違い。
その理由は以下のとおり
1. ラムダ計算は、チューリング機械と等価
2. コンピュータでできることは、チューリング機械にもできる
3. Javaでできることはコンピュータにもできる
> Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
これについては、私には証明できない。あなたは自明と思っているのか?
> なぜ手続き型のJava?なぜラムダ式?となり、(中略)数学の出る幕はない。
文章の意味が分からない。
> 今続いてる話は一体何を目的としてその目的とどう関係しているのか考えてみてください。
むしろ、あなたの目的が分からない。私は、以下が主張したいだけ。
・何かのモデルを別のモデルで説明することは、簡単なことではない。ましてや、それができないからといって、元のモデルが曖昧とはいえない。
・何かと何かが全く同じであると説明することは、慎重を要する。簡単に、同じであると言うことができない
>
>>882 で「何度も無関係と書いている」のに
検索したけど、無関係である理由をあなたは何一つ説明していない。
私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?
> 引数の型修飾が「ない」となぜmutable/immutableの意味が「同じとはいえない」のですか?
型修飾がないことじゃなくて、あることが問題。mutableなオブジェクトはずっとmutableでないといけない。
> 何が問題か尋ねているのに何も問題を書いていないかったからです。
上述のとおり。一応、勘違いのないように言っておくけど、
「同じとみなしても問題がないなら同じ」というのは真だけど、「同じとみなしても問題が見つからないのは同じ」は偽だからね。
> 結論が変わらない(引数の渡し方は渡すオブジェクトがmutable/immutableかどうかとは無関係である)なら表現はなんでも構いません。
引数の渡し方から、だいぶ話がずれてるように思えるけど。Pythonでは変わらないよ。
C++じゃ、mutable/immutableがオブジェクトに付随してると言えるかは疑問だが、どっちも同じ渡し方だよ。
コテつけるか/.やfjでやってよ。
IDの出る板に引っ越したい
じゃあVIPにたてとくわ
fj.comp.lang.pythonがない…
>>911 > 3. Javaでできることはコンピュータにもできる
この辺が最初の行の解釈ということですね。
任意の処理がラムダ式で表現可能であることがどうしてJavaと結びつく必要があるのでしょうか?
> これについては、私には証明できない。あなたは自明と思っているのか?
まずご自分の文(2行目)の解釈をしてください。
> 文章の意味が分からない。
「手続き型のJava?ラムダ式?」関数型ならさほど違和感がないがJavaは不明。
「仕様は1つでも実装は何通りも書ける」仕様を実装しても、まったく同じ実装にはなりません。
「数学の出る幕はない」あなたの2行の意味が前述と同じならラムダ式も数学も出る幕はない。
> ・何かのモデルを別のモデルで...曖昧とはいえない。
> ・何かと何かが全く同じであると...同じであると言うことができない
二つまとめて「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」と聞こえます。
私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
もし私に納得させることが必要なら、定理の証明のような限定的な局面においてのみ納得します。
私は
>>860 に書いたとおり目的はなく、あなたの意志を尊重してお付き合いしています。
> 無関係である理由をあなたは何一つ説明していない。
理由が必要なら聞きましょう。
> 私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?
いいえ。結論に関係するなら問いただし、でなければスルーします。
> 型修飾がないことじゃなくて、...ずっとmutableでないといけない。
pythonでもC++でもmutableであることの意味は違っていません。理由をご説明ください(*1)。
> 「同じとみなしても問題が...同じ」は偽だからね。
問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> C++じゃ、mutable/immutableが...どっちも同じ渡し方だよ。
なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。
make a neat programme
>>916 ジエンしてるんだから言っても無駄だよ。
書いてる内容に全く変化が無いだろ?自分の知識の範疇から抜けだした解説が出来ないからね。w
pass
>>917 仕様を実装しても、まったく同じ実装にはなりません。
「数学の出る幕はない」あなたの2行の意味が前述と同じならラムダ式も数学も出る幕はない。
任意の処理がラムダ式で表現可能であることがどうしてJavaと結びつく必要があるのでしょうか?
「手続き型のJava?ラムダ式?」関数型ならさほど違和感がないがJavaは不明。
> 「同じとみなしても問題が...同じ」は偽だからね。
問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> これについては、私には証明できない。あなたは自明と思っているのか?
まずご自分の文(2行目)の解釈をしてください。
> 文章の意味が分からない。
> C++じゃ、mutable/immutableが...どっちも同じ渡し方だよ。
なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。「仕様は1つでも実装は何通りも書ける」
> ・何かのモデルを別のモデルで...曖昧とはいえない。
私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
もし私に納得させることが必要なら、定理の証明のような限定的な局面においてのみ納得します。
私は
>>860 に書いたとおり目的はなく、あなたの意志を尊重してお付き合いしています。
> 型修飾がないことじゃなくて、...ずっとmutableでないといけない。
理由が必要なら聞きましょう。
> 私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?
いいえ。結論に関係するなら問いただし、でなければスルーします。
> ・何かと何かが全く同じであると...同じであると言うことができない
二つまとめて「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」と聞こえます。
> 無関係である理由をあなたは何一つ説明していない。
pythonでもC++でもmutableであることの意味は違っていません。理由をご説明ください(*1)。
> 3. Javaでできることはコンピュータにもできる
この辺が最初の行の解釈ということですね。
まだ荒らしが続いてるのか…
今北産業
pass
>>917 Java云々のところは、あなたが一体何をいっているのか分からない。
コンピュータはチューリング機械で表現できて、ラムダ計算はチューリング機械と等価。
それは(あなたの直感に従おうと、従うまいと)数学的に証明された事項です。
結びつく必要、ではなく、結びついているのです。
> なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。
ええ。なら、似ているけれど、同じではないのです。
> 「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」
その通りでしょう。
> 私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
曖昧と言い出したのはあなたです。曖昧であることを、あなたは説明できていません。取り下げるなら取り下げてください。
そして、厳密でないなら「(必ずしも)同じでない」という私の意見にどうして「同じである」と反論する必要がなかった。
「必ずしも同じでないかもしれないが、私の使いたい局面では同じものと扱っても問題はない」であった。
> 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
どんだけ、数学が苦手なんですか?
フェルマーの最終定理証明した人も、こんないわれ方されたら酬われないわ。
> 理由が必要なら聞きましょう。
むしろ、無関係と主張したいのなら、その理由を書きましょう。
>>921 ??
> コンピュータはチューリング機械で表現できて、ラムダ計算はチューリング機械と等価。 > それは(あなたの直感に従おうと、従うまいと)数学的に証明された事項です。 それは任意の処理がラムダ式で表現できることと同じことで、それ自体は否定していませんよ。 ただこの話にラムダ式もJavaも出る必要がないと言っています。2行目の解釈次第です。 > ええ。なら、似ているけれど、同じではないのです。 終了判断を要求しているだけですよ。(*1)は書かれていないので終了と判断します。 > 曖昧と言い出したのはあなたです。曖昧であることを、あなたは説明できていません。取り下げるなら取り下げてください。 取り下げません。分からないなら聞いてください。曖昧であるという主張をした部分をまとめると以下のとおりです。 「Pythonの実装を見なければ分からないのであれば、実装が厳密にモデルを反映している以上、 Pythonのモデルが曖昧だということになります。」 > そして、厳密でないなら「(必ずしも)同じでない」という私の意見にどうして「同じである」と反論する必要がなかった。 「私の意見」とはどこですか? > 「必ずしも同じでないかもしれないが、私の使いたい局面では同じものと扱っても問題はない」であった。 先の質問の回答に依存するので保留します。 > > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2) > どんだけ、数学が苦手なんですか? 苦手意識は全くありません。 > フェルマーの最終定理証明した人も、こんないわれ方されたら酬われないわ。 定理の証明をするのなら全ての言葉や記号に厳密な定義を要求します。 フェルマーの最終定理は天才が何十年もかけた長い証明で理解している人も世界中でも一握りでしょう。 今の話とは無関係です。 > > 理由が必要なら聞きましょう。 > むしろ、無関係と主張したいのなら、その理由を書きましょう。 どこですか?
帰れ
それも考えたのですが、スレも終わり近いし、ポインタ出したり以前の部分を見るのも面倒なので 次スレまでまたがるようなら、と考えていました。私は今でも 「このまま終わりでいい」 んですけどね。
> Pythonの実装を見なければ分からないのであれば、実装が厳密にモデルを反映している以上、 > Pythonのモデルが曖昧だということになります。 みたいな意味不明な文書くのは終わらせる気無いからだろ
>>927 > この話にラムダ式もJavaも出る必要がない
うん。知ってた。例として挙げただけ。
> 「Pythonの実装を見なければ分からないのであれば、実装が厳密にモデルを反映している以上、
> Pythonのモデルが曖昧だということになります。」
意味が分からない。
> 「私の意見」とはどこですか?
あなたの「無関係」と同等かそれ以上に、「同じでない」あるいは「違う」という言葉を使っているはずですが。
人に検索しろというなら、あなたもやってはどうですか。
> 今の話とは無関係です。
いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
> > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
とありましたが、その通り「今のところは問題がない(が、必ずしもないとは限らない)」で話は終わってしまい、進まないのです。
> どこですか?
え?どこか把握してなかったの? 道理で、検索してもあんまりヒットしないわけだ。
こういう時ってコテハン付けるべきじゃねーの? ただでさえ長いってのにIDもないし追いかけるの面倒すぎるんですけど
934 :
932 :2010/10/27(水) 23:45:13
ということで、私は、話を進める気なんて一つもなくて、 ・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない ・今のところは問題がない(が、必ずしもないとは限らない) で、これ以上話が進まなくなればいいと思っています。 Javaとラムダ式が気にくわなかったのなら、Schemeとチューリングマシンでも、小麦粉とうどんでも、 パッと見、前者で後者を表現できるとは思えないけど実はできるもの、ならなんでもよかったのです。
二人(一人?)だけで話が進むようになってから まるで得るところのない話になってるな
まだ荒らしが続いてるのか…
>>932 > うん。知ってた。例として挙げただけ。
なら仕様を実装する方法が1通りではない、で置き換えて問題なく、数学は関係ないですよね?
> 意味が分からない。
これ以上噛み砕いた説明はないと思います。モデルから見れば分からず、実装を見れば分かるのであれば
モデルが曖昧だというだけですよ?
> 人に検索しろというなら、あなたもやってはどうですか。
回答するために絞りたいだけです。
> いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
> それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
フェルマーの最終定理は関係あるはずはないでしょう。頭を冷やしてください。
まずは詰まっている部分に回答をしてから新しい話をしてください。
> > > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> とありましたが、その通り「今のところは問題がない(が、必ずしもないとは限らない)」で話は終わってしまい、進まないのです。
ではそれで厳密にする必要がないのだから問題がないことにすればいいでしょう?
> え?どこか把握してなかったの? 道理で、検索してもあんまりヒットしないわけだ。
回答するために絞りたいだけです。
>>934 > ということで、私は、話を進める気なんて一つもなくて、
> ・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない
> ・今のところは問題がない(が、必ずしもないとは限らない)
> で、これ以上話が進まなくなればいいと思っています。
これは話を続ける必要はないと言っているのですか?
> Javaとラムダ式が気にくわなかったのなら、Schemeとチューリングマシンでも、小麦粉とうどんでも、
> パッと見、前者で後者を表現できるとは思えないけど実はできるもの、ならなんでもよかったのです。
では仕様と実装の話でさっさと手を打てばよかったでしょう?
まだ荒らしが続いてるのか…
せめてコテ付ける遠慮とか共有スペースで受けた非難を認識できない、 アホ親が残念に育てたようなド低能か病気持ちには言っても無駄かもしれんが ここはてめー(ら?w)の家の便所じゃないんだから、次からは自分(ら?)で立てたスレでクソたれろ
スレッドは立ててあげるから さっさとスレッド名を決めてね♪
つーか、お前らこのスレはもう諦めてんのかw
>>940-942 非難と言うより煽りと考えて無視しました。続くようなら、
「【触るな】Python隔離スレ Part1【危険】」でお願いします。
挑発するようなスレタイを提案するのは、クダレスしてるバカでしょ。 つか、このスレ俺とジエンしてる奴の二人しか居ない感じだね。 wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
「Pythonと小麦粉とうどん」
蕎麦の方が美味しいと思います
>>937 > なら仕様を実装する方法が1通りではない、で置き換えて問題なく、
実装する方法は1通りじゃないけど、そのこととの関係性が分からない。
> 数学は関係ないですよね?
なぜ?
> モデルから見れば分からず、実装を見れば分かるのであればモデルが曖昧だというだけですよ?
曖昧なら実装できない。
> フェルマーの最終定理は関係あるはずはないでしょう。頭を冷やしてください。
うん。関係ない。けど、それを持ち出した経緯とは関係がある。つまり
> > いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
> > それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
ということだな。
> ではそれで厳密にする必要がないのだから問題がないことにすればいいでしょう?
それってなに? なぜ厳密にする必要がない?
人には検索しろ、回答しろ。自分は、回答してほしけりゃ場所教えろ。いい加減にしたら。
> これは話を続ける必要はないと言っているのですか?
うん。あなたが
> > ・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない
> > ・今のところは問題がない(が、必ずしもないとは限らない)
を認めるなら。
> では仕様と実装の話でさっさと手を打てばよかったでしょう?
上述の通り、その関係性が分からない。
まだやってんのか
>>941 エラーでスレ立てできません。よろしくお願いします。名前はなんでも構いません。
>>947 スレ立つまで返事はできません。
クソスレたてんなや。次スレたてて、このスレを隔離スレにすればいい。 このスレ埋まったらもう出てくんな
これ、誰もスレ立てなかったらそれで終わるんじゃね?
ここで続くだけだろ
まだ荒らしが続いてるのか…
きのこスレ辺りを避難所にするか?
小麦粉とうどんの話してるのは分かった
まだ荒らしが続いてんのか
大学入りC言語の勉強をして半年になります。 C以外も勉強したいと思いPythonをやろうとおもうんですけど、 CとPythonの明確又は大きな違いはズバリどこなんでしょうか?
名前が違う
>>958 C言語と、Pythonをはじめとしたスクリプトとの大きな違いとして
リスト/配列や文字列などが非常に楽に、かつ安全に扱えるという点が大きいかな。
あとポインタやメモリ確保/解放に当たる要素もかなり抽象化されていて、そこも安全。
逆に欠点はやや実行速度に欠けるところと、抽象化されているために直接メモリ管理を扱うようなコードが書けない点。
当たり前だけど標準で使えるモジュールがpythonの方が圧倒的に多い
知名度
>>958 いろいろあるだろうけど、自分なりの説明。
C言語
・静的なコンパイル型言語
・いろんなことがコンパイル時に決まってないといけない
・高速だけど不便
Python
・動的なインタプリタ型言語
・いろんなことが実行するときに決められる(実行しないと決められない)
・低速だけど便利
言語的な違いは山ほどあるなあ でも構文的にはCに偏ってるから学習ははかどるよ 俺もCしか出来なかったけどPythonでオブジェクト指向を学んである種に開眼した
インデント
Cの構造体が分かればオブジェクト指向は理解できるよね
できません
理解の入り口にはなる FILE* なんかが良い例 だがオブジェクト指向の一部が理解出来るだけだから それだけでは全体は理解出来ない
頭が悪いんですね、可哀想。
違うものを同じものだと思い込むのはイクナイ
まあCとpythonなんて同じだよな
頭が悪い、というよりおかしいのだ
pass
>>975 乙。以下良く分からない難しい長文で論議する人が
良く分からない難しい長文で論議するスペースになるんですか?
んじゃ私は新スレの方に行きますノシ
978 :
デフォルトの名無しさん :2010/10/30(土) 13:41:34
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
つーか論議してくれたほうがDAT落ちしやすいんで助かるんだよな 論議しない人も、雑談にでも使って埋めてくれると助かる 950超え980未満で放置されたスレ(人任せで放棄)が溜まっていると、 投稿ペースが芳しくなくても需要のあるスレが落ちて困るんだよ
で、ここで終わらず新スレに持ち越す、と。
圧縮がくるな。 落ちるスレッドは今のところ38個。 基準は最後の書き込みが古い順だ。
んじゃ梅
983 :
デフォルトの名無しさん :2010/10/31(日) 00:11:04
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
984 :
デフォルトの名無しさん :2010/10/31(日) 00:11:45
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
985 :
デフォルトの名無しさん :2010/10/31(日) 00:12:54
_ ∩ ( ゚∀゚)彡 初ぱい!初ぱい! ( ⊂彡 | | し ⌒J
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
埋めるために質問 お前ら何目的でpython使っておます?
シェルスクリプトでどう書いたらいいかわかんないときの 逃げ道として使わせていただいております
Google App Engine 3DCGツールのスクリプトが殆どPythonだから 高機能バッチファイルとして 聞いた話では工業系で使ってる人多いらしいね
Pythonは基本的に綺麗に書ける言語だけど 結局書く人に依存してスパゲッティはスパゲッティになっちゃうんだよね… テキストエディタじゃなくてIDE使うべきなのかなぁ
デスクトップアプリ作ってる ファイラーとか音楽プレイヤーとか設定ファイルいじるツールとか
995 :
デフォルトの名無しさん :2010/10/31(日) 03:02:18
django最強
997 :
デフォルトの名無しさん :2010/10/31(日) 03:10:24
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
鯖缶冶具
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。