Pythonのお勉強 Part39
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2010/08/05(木) 10:52:59http://www.python.org/
日本Pythonユーザ会
http://www.python.jp/Zope/
まとめWiki
http://python.rdy.jp/
関連スレ
http://find.2ch.net/?BBS=ALL&TYPE=TITLE&STR=python
前スレ
http://hibari.2ch.net/test/read.cgi/tech/1272956352/
0002デフォルトの名無しさん
2010/08/05(木) 10:54:330003デフォルトの名無しさん
2010/08/05(木) 10:56:05http://doc.loveruby.net/
ライブラリ一覧
http://doc.loveruby.net/refm/api/
RubyExtensionProgrammingGuide
ttp://i.loveruby.net/w/RubyExtensionProgrammingGuide.html
Ruby Hacking Guide
ttp://i.loveruby.net/ja/rhg/
0004デフォルトの名無しさん
2010/08/05(木) 10:56:330005デフォルトの名無しさん
2010/08/05(木) 11:02:45Python の Home Page ttp://www.python.org/
Python 日本語ドキュメント ttp://www.python.jp/doc/release/
最新版直リン - 2.Xが推奨。3.Xはライブラリやドキュメントが使えないことも
ttp://www.python.org/download/
Python のコーディングガイド PEP8 ttp://www.python.org/dev/peps/pep-0008/
Python のコーディングガイド PEP8 - 日本語訳 ttp://www.oldriver.org/python/pep-0008j.html
Google Python Style Guideとか
ttp://google-styleguide.googlecode.com/svn/trunk/pyguide.html
ttp://works.surgo.jp/translation/pyguide.html
日本語の扱い方
ttp://python.rdy.jp/wiki.cgi?page=%C6%FC%CB%DC%B8%EC
日本語文字列コード問題まとめ
ttp://python.matrix.jp/tips/string/encoding.html
インタラクティブモードのエンコード
ttp://python.matrix.jp/tips/compatibility/interact_encoding.html
Pythonの文字化け対策:sys.setdefaultencodingの謎
ttp://hain.jp/index.php/tech-j/2008/01/07/Python%E3%81%AE%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91
実行時にdefaultencodingを変更する
ttp://d.hatena.ne.jp/perezvon/20070715/1184469534
┌─┐
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0006デフォルトの名無しさん
2010/08/06(金) 03:05:06│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0007デフォルトの名無しさん
2010/08/06(金) 09:22:270008デフォルトの名無しさん
2010/08/06(金) 20:23:030009デフォルトの名無しさん
2010/08/06(金) 23:55:01検索もいい加減だし
0010デフォルトの名無しさん
2010/08/07(土) 12:08:24FedoraとWindows使っているのでクロスプラットフォームのものがいいです。
0011デフォルトの名無しさん
2010/08/07(土) 12:21:080012デフォルトの名無しさん
2010/08/07(土) 12:40:130013デフォルトの名無しさん
2010/08/07(土) 13:02:550014デフォルトの名無しさん
2010/08/07(土) 15:21:100015デフォルトの名無しさん
2010/08/08(日) 02:30:350016デフォルトの名無しさん
2010/08/08(日) 20:20:220017デフォルトの名無しさん
2010/08/08(日) 22:37:010018デフォルトの名無しさん
2010/08/08(日) 23:58:100019デフォルトの名無しさん
2010/08/09(月) 00:21:22Jythonって結局なんだったんだろう。今も使ってる人いるの?
0020デフォルトの名無しさん
2010/08/09(月) 00:28:53java-ja脳の内部では
0021デフォルトの名無しさん
2010/08/09(月) 01:22:59今は使ってもいいかなという気分。
0022デフォルトの名無しさん
2010/08/09(月) 05:48:34定義中に is not defined を出ないようにするには
どうすればよいのでしょうか?
0023デフォルトの名無しさん
2010/08/09(月) 08:38:44そんなの出たことないぞ。何やったんだ?
0024デフォルトの名無しさん
2010/08/09(月) 08:49:3522はやればできる子。
0025デフォルトの名無しさん
2010/08/09(月) 09:08:44こうなったらどうする?
そう、定義すればいい
0026デフォルトの名無しさん
2010/08/09(月) 10:14:00class Klass:
klass = Klass
class Klass:
pass
Klass.klass = Klass
でいいんじゃないのか?
0027デフォルトの名無しさん
2010/08/09(月) 22:27:45文字列の連結で、+じゃなくて、,(カンマ)で連結するとスペースが入るんですが
これは、特別な意味があるんですか?
0028デフォルトの名無しさん
2010/08/09(月) 22:38:57print 'abc', 'def' とかしてるなら http://www.python.jp/doc/2.5/ref/print.html でも読んで
0029デフォルトの名無しさん
2010/08/10(火) 02:22:110030デフォルトの名無しさん
2010/08/10(火) 11:50:53hoge("foo" "bar")
って間違えたときに"foobar"とくっついて送られてビックリする
0031デフォルトの名無しさん
2010/08/10(火) 12:04:060033デフォルトの名無しさん
2010/08/10(火) 13:48:53ばかりです
¥(^o^)/
0034デフォルトの名無しさん
2010/08/11(水) 01:33:030035デフォルトの名無しさん
2010/08/11(水) 05:43:590036デフォルトの名無しさん
2010/08/11(水) 08:04:350037デフォルトの名無しさん
2010/08/13(金) 03:47:130038デフォルトの名無しさん
2010/08/13(金) 19:52:440039デフォルトの名無しさん
2010/08/13(金) 20:17:480040デフォルトの名無しさん
2010/08/14(土) 21:03:430041デフォルトの名無しさん
2010/08/16(月) 02:50:32UNIXやLinux だとホームディレクトリ化のドットファイルだったり
最近のWindows だとAppDataの下だったりと
プラットフォームによってまちまちですが、
その違いを吸収してくれるようなライブラリは有りませんか?
0042デフォルトの名無しさん
2010/08/16(月) 03:55:56http://stackoverflow.com/questions/1084697/how-do-i-store-desktop-application-data-in-a-cross-platform-way-for-python
0043デフォルトの名無しさん
2010/08/16(月) 11:58:430044デフォルトの名無しさん
2010/08/19(木) 16:57:450045デフォルトの名無しさん
2010/08/21(土) 17:02:310046デフォルトの名無しさん
2010/08/21(土) 18:54:51REDO機能を実装するため、すべて盤面の状態を保持しておきたいのですが、
再帰関数の引数に二次元配列を渡すと、参照渡しになっているため
関数の呼び出し先で状態を書き換えると上書きされてしまいます。
この場合、値渡しにすればよいと思うので、copyモジュールの
deepcopy()を使おうと思っていますが、ほかに何か方法はありますでしょうか?
よろしくお願いいたします。
0047デフォルトの名無しさん
2010/08/21(土) 19:12:23なんでdeepcopyじゃダメなの?
0048デフォルトの名無しさん
2010/08/21(土) 19:16:49モジュールを使う以外に、標準的なやりかたがあるのかなあと思いまして。
ありがとうございました!
0049デフォルトの名無しさん
2010/08/21(土) 22:17:21>>> [x[:] for x in a]
[[1, 2, 3], [4, 5, 6]]
こんな感じでコピーして渡せばいいはず。一次元配列のほうが楽だけどな
0050デフォルトの名無しさん
2010/08/22(日) 02:17:30任意軸を中心とした回転がどうのこうのを作って言われて
Pythonも超初心者なもので頭どっかんばっこんすぱーーーーーんな状態なんですが
なんか簡単にやるためのモジュールとか無いでしょうか
0051デフォルトの名無しさん
2010/08/22(日) 02:28:580052デフォルトの名無しさん
2010/08/22(日) 03:15:200053デフォルトの名無しさん
2010/08/22(日) 04:09:090054デフォルトの名無しさん
2010/08/22(日) 04:53:16Pythonと超複素数どっちもわからんなら、どっちかからある程度やっていく必要あると思うけど
適当に結果だけ理解して進めるならググってC++なんかのコードを参考にやってみるのがいいんじゃないかな
そもそも3Dやるんなら、自前でやらずに3D系のライブラリのPython用インターフェスを探したほうがいいな
0055デフォルトの名無しさん
2010/08/22(日) 04:56:410056デフォルトの名無しさん
2010/08/22(日) 04:56:57Python以外は他にあたったほうがいいかもしれんな。3Dプログラミングスレとかあるんじゃないの。
俺は数学好きだったが、高校時分に当時3Dグラフィックス数学だったか、あと超複素数の本読んでも
その部分はさっぱりだったな。
相当前の話しだけど
0057デフォルトの名無しさん
2010/08/22(日) 05:00:27海外のフリーで使えるような主要な3D EngineはPythonから使えるの多いし、
Panda3DとかPythonを組み込みスクリプトとして使う3Dエンジンもあるくらいだw
商用は殆ど無いと思うけどね(Panda3Dは商用でも使われた例ある。元々そういう用途だし)
ゲーム用途じゃなかったら、3DのオーサリングツールはPythonで制御するのとか拡張するのばっかりじゃね?確か
005850
2010/08/22(日) 05:23:07色々とありがとうございます。
使用目的はゲームではなく
映像制作においての3DCG制作ソフト内にて
ルービックキューブ回転のアニメーションを付けるという
とても単純な作業を求められているのですが
その中で>>54さんのおっしゃる通りジンバルロックの問題等が回避できず
聞き回ってみた所、ルービックキューブ全ての頂点を
クォータニオン?の任意軸を中心に回転させることが必要だとのことで
以前2chの3Dプログラミングスレのような場所でも聴いてみたのですが
ソフト毎に違うから使用ソフトのスレに行けと言われましたが
私の使用ソフトであるMayaのスレッドは、質問すると喧嘩になるばかりで
返答が返ってくることが少なく、特にこういったプログラミング関係の詳しい話では盛り上がりません
おそらく回答してもらえることはないと思われます。
Maya内で使用できるPythonのスレならばと思い質問させて貰いましたが
解決しそうにないのであれば、諦めるしかないようですかね…。
正直自分でも>>50はバカな文章を書いてしまったと思いました。
Maya内のプログラムはMelという言語も最初からあって最近Pythonが使えるようになったとのことで
移行してきたのですがどう質問すれば皆さんに答えて貰えるか分からないと思った結果
頭がこんがらがってあんな風になりました…。
0059デフォルトの名無しさん
2010/08/22(日) 05:32:45掲示板とかMLとか知らんが
日本にないなら海外で検索だな
0060デフォルトの名無しさん
2010/08/22(日) 08:52:26三次元の回転をジンバルロックとかの問題無しに解決してくれる魔法と思って、
中身のことを気にせず(気にし出すとよくわからなくなる)行列の変換に使ってやればよい。
回転の中心軸と回転角から四元数を求めるのは公式通りに。
日本語で読める、プログラミング寄りの(数学寄りでない)解説書が工学社から
出てたと思うけど、自分は読んでないので内容はわからない。
0061デフォルトの名無しさん
2010/08/22(日) 08:59:12返答が返ってくることが少なく
0062デフォルトの名無しさん
2010/08/22(日) 10:14:290063デフォルトの名無しさん
2010/08/22(日) 11:02:280064デフォルトの名無しさん
2010/08/22(日) 11:08:190065デフォルトの名無しさん
2010/08/22(日) 11:27:35理解すべきはpythonやmelとかいう言語のことじゃないだろ
0066デフォルトの名無しさん
2010/08/22(日) 11:28:050067デフォルトの名無しさん
2010/08/22(日) 11:52:570068デフォルトの名無しさん
2010/08/22(日) 13:45:32ttp://cgkit.sourceforge.net/doc2/index.html
0069デフォルトの名無しさん
2010/08/23(月) 10:25:25AndroidもJavaだし(バイトコードは違うけど)
GoogleはJavaシフトかと思ってたんだが
Oracleに訴訟起こされてPythonもまだ
使われ続けそうだな。
まぁGoogleがどうこうってのはあまり
Python界にはあまり関係無いのかも知れないけど。
0070デフォルトの名無しさん
2010/08/23(月) 10:31:420071デフォルトの名無しさん
2010/08/23(月) 10:44:490072デフォルトの名無しさん
2010/08/23(月) 11:24:520073デフォルトの名無しさん
2010/08/23(月) 12:09:460074デフォルトの名無しさん
2010/08/24(火) 00:58:05実際のところはプロダクトではGoogleのバックエンドほとんどJavaで
むしろ、Pythonはほんの少しって聞いたけど・・・
この話、どっかにソースないかな?
0075デフォルトの名無しさん
2010/08/24(火) 00:59:25OracleがGoogleのように競合をどんどん買収しておいて潰す(矛先が結果としてオープンソースプロダクト)
みたいなことになったら阿鼻叫喚じゃ済まないな・・・
0076デフォルトの名無しさん
2010/08/24(火) 05:34:250077デフォルトの名無しさん
2010/08/24(火) 06:49:140078デフォルトの名無しさん
2010/08/24(火) 06:57:08技術者の流出は数年前から既に始まっていたけどね。
0079デフォルトの名無しさん
2010/08/24(火) 07:06:040080デフォルトの名無しさん
2010/08/24(火) 07:11:590081デフォルトの名無しさん
2010/08/24(火) 07:15:52googleが潰したオープンソースプロダクトって?例えば?
0082デフォルトの名無しさん
2010/08/24(火) 07:20:440083デフォルトの名無しさん
2010/08/24(火) 07:32:01嘘を蔓延させたり,訴訟を起こしてまで金儲けしようとするのがオラクルの手法
0084デフォルトの名無しさん
2010/08/24(火) 07:35:20ライセンスだけで食ってる会社って最後はそうなる運命
0085デフォルトの名無しさん
2010/08/24(火) 15:06:560086デフォルトの名無しさん
2010/08/25(水) 06:03:30select = コマンド
select.replace('ab','cc')
これだと上手くいかないのは何故
0087デフォルトの名無しさん
2010/08/25(水) 07:03:310088デフォルトの名無しさん
2010/08/25(水) 08:00:04Help 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.
0089デフォルトの名無しさん
2010/08/25(水) 10:36:03…で、どうしたらいいの
0090デフォルトの名無しさん
2010/08/25(水) 10:55:16>>> 'abc'.replace('ab','cc')
'ccc'
0091デフォルトの名無しさん
2010/08/25(水) 11:03:56>>75 じゃないが、(Googleがサービス買収して競合をつぶしたように)OracleがOSSを潰すのでは?ということじゃないのかな
0092デフォルトの名無しさん
2010/08/25(水) 11:19:43kwsk
0093デフォルトの名無しさん
2010/08/25(水) 12:38:05コマンドが何を意味するのか分からないけど、以下のようにしたらできたよ。
>>> select = 'abc'
>>> select.replace('ab', 'cc')
'ccc'
0094デフォルトの名無しさん
2010/08/25(水) 13:53:33return "abc"
>>> select = コマンド()
>>> select.replace("ab", "cc")
'ccc'
0095デフォルトの名無しさん
2010/08/25(水) 19:31:20OrkutとかJaikuのことじゃね
0096デフォルトの名無しさん
2010/08/25(水) 23:32:350097デフォルトの名無しさん
2010/08/26(木) 00:02:14Orkutってどこかの会社を買収して手に入れたわけじゃなかったんだね。勘違いしてたわ
0098デフォルトの名無しさん
2010/08/26(木) 00:05:390099デフォルトの名無しさん
2010/08/26(木) 00:10:12おお、ありがとうございます
0100デフォルトの名無しさん
2010/08/26(木) 17:38:46はあるのに
ぱふぱふ
がないのはおかしい
0101デフォルトの名無しさん
2010/08/26(木) 17:48:450102デフォルトの名無しさん
2010/08/26(木) 17:48:520103デフォルトの名無しさん
2010/08/26(木) 19:38:230104デフォルトの名無しさん
2010/08/26(木) 20:25:210105デフォルトの名無しさん
2010/08/26(木) 21:01:42Oracle
Microsoft
IBM
Intel
この業界トップ6のクローズ度順
0106デフォルトの名無しさん
2010/08/26(木) 22:45:27Pythonでは文字列型は数値型とかと同じでimmutable(変更不能)なので、新しい文字列を返すメソッドはあるけれど、文字列そのものを変更するメソッドはない。
だから、replaceも置換結果に変更するのではなく置換結果を返すだけ。
math.sqrtがそういう動作だったり、tuple.sortが存在しないのと全く同じ理由で。
0107デフォルトの名無しさん
2010/08/28(土) 00:43:48分かりづらいわー
0108デフォルトの名無しさん
2010/08/30(月) 04:50:12> http://d.hatena.ne.jp/torazuka/20100120/hbstudy
> Googleでは2002年頃から使われている。Googleのコードの30%がPythonといわれる。
> 例:Youtube、Google Group、アカウント取得時のシステム
たまたま読んだブログにこんな記述があったがあったが、
もともとのソースは分からない
0109デフォルトの名無しさん
2010/08/30(月) 08:08:14http://coreblog.org/ats/python-accounts-15-percent-of-Google-code-base
0110デフォルトの名無しさん
2010/08/30(月) 09:14:18>
> * 開発環境でテストもちゃんとできる
まともに使ったことあるひとなら
これが嘘だと知ってるんだけどな
0111デフォルトの名無しさん
2010/08/30(月) 09:18:250112デフォルトの名無しさん
2010/08/30(月) 09:21:200113デフォルトの名無しさん
2010/08/30(月) 09:25:53範囲が限られるだけ。
0114デフォルトの名無しさん
2010/08/30(月) 09:26:390115デフォルトの名無しさん
2010/08/30(月) 09:28:03ほんとうにありがとうございました
0116デフォルトの名無しさん
2010/08/30(月) 09:33:04数字が違うのはなぜだろう。
0117デフォルトの名無しさん
2010/08/30(月) 09:36:160118デフォルトの名無しさん
2010/08/30(月) 09:48:26Googleのサイトつくってるのか、すごいな
0119デフォルトの名無しさん
2010/08/30(月) 13:47:43開発者が楽になるようにPythonを取り入れてるだけで
負荷のかかるのはC++、Java、WEBならPHPのが楽だし
0120デフォルトの名無しさん
2010/08/30(月) 14:21:43くやしいのう(WwwwWwwWWwwWWWw
0121デフォルトの名無しさん
2010/08/30(月) 15:15:260122デフォルトの名無しさん
2010/08/30(月) 17:21:460123デフォルトの名無しさん
2010/08/30(月) 17:23:090124デフォルトの名無しさん
2010/08/30(月) 18:42:390125デフォルトの名無しさん
2010/08/30(月) 19:30:49PHPとか何の冗談だよ?
0126デフォルトの名無しさん
2010/08/30(月) 19:38:390127デフォルトの名無しさん
2010/08/30(月) 21:14:13LuaJITだろう
Javaとかゴミ
0128デフォルトの名無しさん
2010/08/30(月) 21:16:360129デフォルトの名無しさん
2010/08/30(月) 21:19:550130デフォルトの名無しさん
2010/08/30(月) 21:31:230131デフォルトの名無しさん
2010/08/30(月) 21:35:310132デフォルトの名無しさん
2010/08/30(月) 21:58:15いい加減にしろよ高卒!
0133デフォルトの名無しさん
2010/08/30(月) 23:48:110134デフォルトの名無しさん
2010/08/31(火) 07:16:200135デフォルトの名無しさん
2010/08/31(火) 07:36:24ここで燻って何か利益があると思っているのか
0136デフォルトの名無しさん
2010/08/31(火) 09:26:19マルチスレッド対応はどうなの?
まぁマルチスレッドと言うよりは
ノンブロッキング処理をしたかっただけなので、
ネットワークアプリでもないのにtwistedの
リアクターで回してたけど、OSの持ってる
スレッド機能がそのまま使えるなら使いたい。
0137デフォルトの名無しさん
2010/08/31(火) 09:32:070138デフォルトの名無しさん
2010/08/31(火) 09:40:100139デフォルトの名無しさん
2010/08/31(火) 10:27:51マルチコアを使い切りたいという用途だとGILがあるから
何か別の(popenするとか)工夫が必要なのだろう。
0140デフォルトの名無しさん
2010/08/31(火) 10:32:35Googleならサーバー増やしたほうが早くね?
いや、逆か。Googleほどになるとサーバー多いから、ちょっとでもパフォーマンス挙げたら
かなり違うか
0141デフォルトの名無しさん
2010/08/31(火) 11:48:400142デフォルトの名無しさん
2010/08/31(火) 11:57:220143デフォルトの名無しさん
2010/08/31(火) 12:08:522.6以降ならmultiprocessingというモジュールも使えるよ
ttp://gihyo.jp/dev/serial/01/pythonhacks/0005
0144デフォルトの名無しさん
2010/08/31(火) 13:22:28zlib.deflateとか、Cで書かれた重いロジックを実行中はGILを開放できる。
Pythonで書かれたアプリでも、画像処理とかCPU食ってる場所がGILの外なら
マルチスレッドでマルチコアを使いきれる。
0145デフォルトの名無しさん
2010/08/31(火) 14:41:000146デフォルトの名無しさん
2010/08/31(火) 15:14:280147デフォルトの名無しさん
2010/08/31(火) 15:33:08multiprocessing とか livevent + gevent 使えばよいと思うの
0148デフォルトの名無しさん
2010/08/31(火) 15:44:130149デフォルトの名無しさん
2010/08/31(火) 17:37:280150デフォルトの名無しさん
2010/08/31(火) 17:43:220151デフォルトの名無しさん
2010/08/31(火) 17:54:140152デフォルトの名無しさん
2010/08/31(火) 18:15:180153デフォルトの名無しさん
2010/08/31(火) 18:47:56スレッド6つでも、全スレッドがCPU100%で動こうとするとGILによるオーバーヘッドが
1割を超えるかもしれない。
Python 3.2 ではこの問題は解決される。
0154デフォルトの名無しさん
2010/09/01(水) 02:19:000155デフォルトの名無しさん
2010/09/01(水) 02:28:27一つ戻してみたら出なかった。(2.8.11.0→2.8.10.1)
0156デフォルトの名無しさん
2010/09/01(水) 02:29:320157デフォルトの名無しさん
2010/09/01(水) 02:50:20Ruby1.8のスレッドは重すぎて使い物にならない。
100スレッドで並列にHTTPリクエストするだけでCPU100%食う。
Ruby1.9のスレッドはPythonと同等。
0158デフォルトの名無しさん
2010/09/01(水) 04:06:57Ruby2.0ではもはや追いつけない。
0159デフォルトの名無しさん
2010/09/01(水) 10:55:06・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 個ぐらい作っても止まらない
どうでもいいけど、コア数個しかないのに並列処理どのくらいいみあるんだろ
0160デフォルトの名無しさん
2010/09/01(水) 10:57:210161デフォルトの名無しさん
2010/09/01(水) 11:53:130162デフォルトの名無しさん
2010/09/01(水) 11:54:000163デフォルトの名無しさん
2010/09/01(水) 12:05:520164デフォルトの名無しさん
2010/09/01(水) 12:14:07HTTPならIO待ちだから、1個1個のリクエストを十分高速に処理できて、
スレッド切り替えも高速なら、数千並列が可能。
Rubyの場合、1.8のスレッド切り替え時間の遅さと、GCの停止時間がネック。
0165デフォルトの名無しさん
2010/09/01(水) 12:30:120166デフォルトの名無しさん
2010/09/01(水) 12:33:430167デフォルトの名無しさん
2010/09/01(水) 12:42:200168デフォルトの名無しさん
2010/09/01(水) 12:59:150169デフォルトの名無しさん
2010/09/01(水) 13:01:260170デフォルトの名無しさん
2010/09/01(水) 13:08:46もしいたら天然記念物級の馬鹿だなw
0171デフォルトの名無しさん
2010/09/01(水) 14:34:4664bitマシンなら普通に数千スレッド使えるよ。
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。
0172デフォルトの名無しさん
2010/09/01(水) 15:02:58time.sleep(n*100)
しかしてないからじゃね?
普通はQueueに入れたり出したり色々処理すると
そっちの競合で渋滞になるっしょ
0173デフォルトの名無しさん
2010/09/01(水) 15:07:25それはもう言語関係なくね?
0174デフォルトの名無しさん
2010/09/01(水) 15:27:26sleepが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)
0175デフォルトの名無しさん
2010/09/01(水) 16:10:550176デフォルトの名無しさん
2010/09/01(水) 17:08:02_start_new_thread(self.__bootstrap, ())
thread.error: can't start new thread
0177デフォルトの名無しさん
2010/09/01(水) 17:21:330178デフォルトの名無しさん
2010/09/01(水) 19:49:4732bitマシンでやってない?
メモリ空間が広くないと、ネイティブスレッドはたくさんは作れない。
その場合、stackless pythonなり、greenletなりの、マイクロスレッドを使わないといけない。
0179デフォルトの名無しさん
2010/09/01(水) 19:51:53ありがとうございます
32bitでした
でも1000個も作れれば充分なのでこれでいいです
っていうかこれだけ作っても常時CPU10%も行かないので満足です
(生成中だけは一時的に増えますが)
0180デフォルトの名無しさん
2010/09/01(水) 20:40:47threadingのstack_size()でスタックサイズを変更すればいいじゃない
0181デフォルトの名無しさん
2010/09/01(水) 20:54:17増やしてみたけど駄目でした
0182デフォルトの名無しさん
2010/09/01(水) 21:07:54減らすんだよw
0183182
2010/09/01(水) 21:09:300184デフォルトの名無しさん
2010/09/01(水) 21:16:49PythonにはGILもんだいがあるから関係あるだろう
実質1スレッドしか同時実行できないのに各スレッドが重い処理を行えば悲惨な結果に・・・
0185デフォルトの名無しさん
2010/09/01(水) 21:28:14「Queueに入れたり出したりの競合」は、GILじゃなくて普通にオブジェクトのsynchronizeだよね?
GILが問題になるのは、CPUぶん回すようなGILを開放しないコードが複数スレッドで動くとき。
0186デフォルトの名無しさん
2010/09/01(水) 23:49:08なんかに書いてあった気がす
0187デフォルトの名無しさん
2010/09/01(水) 23:52:320188デフォルトの名無しさん
2010/09/02(木) 00:12:020189デフォルトの名無しさん
2010/09/02(木) 00:13:300190デフォルトの名無しさん
2010/09/02(木) 00:13:39>>143
0191デフォルトの名無しさん
2010/09/02(木) 02:11:38別に反論するつもりじゃないけど
外部に作用しないPython環境内で収まるコードのがレアじゃない?実際
0192デフォルトの名無しさん
2010/09/02(木) 02:25:13>>185 は、>>184に対するレスで、 >>172 が例に挙げているQueueに対する出し入れは
GILが無い言語でもスレッドセーフを守るために同期するからGILが問題になる例として
ふさわしくないという反論をしたうえで、GILが問題になるケースを挙げているだけ。
>>174 の実験結果が、Pythonで沢山のコネクションをスレッドで裁くサーバーを作っても
実用になる事を示しているのはちゃんと理解できる。
0193デフォルトの名無しさん
2010/09/02(木) 05:40:030194デフォルトの名無しさん
2010/09/02(木) 09:14:27>Pythonで沢山のコネクションをスレッドで裁くサーバーを作っても
>実用になる事を示しているのはちゃんと理解できる。
GILがある限りそれでは実用にならねーよ
0195デフォルトの名無しさん
2010/09/02(木) 09:18:440196デフォルトの名無しさん
2010/09/02(木) 10:35:11> time.sleep(n*100)
> しかしてないからじゃね?
はその通りじゃないの
>Queueに入れたり
とか微妙なことを言うから混乱するんであって…
GILを開放する
time.sleep(n*100)
のかわりにピュアPythonでなんか処理をやってれば、
そこで刺さって直列化されるわけでしょ
0197196
2010/09/02(木) 10:36:38直列化されようが、使えるには使える
ただ直列化されてしまうなら、そもそも並列化する意味は無い
ってことだよね
0198デフォルトの名無しさん
2010/09/02(木) 10:57:31そもそもこの話題>>136から始まってるから、 >>192 が結論で、
GILが邪魔になるケースならmultiprocessingを使うってのは >>143 から既出なんだが。。。
複数のIO待ちを並列に処理したい、あるいはC言語でかかれたルーチンを並列で動かしたい場合は
スレッド、GILを開放しないピュアPythonコードをマルチコアで高速化したいならmultiprocessing
特定の条件だけ挙げて「GILがあるからPythonは並列処理できない」という主張はFUD。
0199デフォルトの名無しさん
2010/09/02(木) 11:26:25それを「使える」と表現するか「使えない」と表現するかの違いだろう
まともな技術者なら使えない・使い物にならないと言うだろうな
0200デフォルトの名無しさん
2010/09/02(木) 11:31:250201デフォルトの名無しさん
2010/09/02(木) 11:37:18>特定の条件だけ挙げて「GILがあるからPythonは並列処理できない」という主張はFUD。
だれもそんな事いってないのにな
熱中症か?
0202デフォルトの名無しさん
2010/09/02(木) 12:19:21ほんとうにありがとうございました
0203デフォルトの名無しさん
2010/09/02(木) 14:26:500204デフォルトの名無しさん
2010/09/02(木) 14:32:17スレッドって並行処理させるのが目的なら、コアが数千もないのに数千スレッドってまともに処理できなくない?
デスクトップOSで動いているたくさんのアプリみたいに、軽い処理もしくは短時間の処理後に待つ時間が多いならいいのかもしれないけど
0205デフォルトの名無しさん
2010/09/02(木) 15:32:10並行処理といっても、「処理」がCPUコアを使うものとは限らない。
例えばクローラーだったら、並列に1000サイトからページを取得するという事が考えられる。
0206デフォルトの名無しさん
2010/09/02(木) 15:51:10Intel 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.
0207デフォルトの名無しさん
2010/09/02(木) 16:24:38read/writeなどブロッキング処理がブロックしている間他のスレッドを実行できるからI/O関連に限ってはそんな事はない
純粋に計算をさせる場合は同時実行できるコア数以上にスレッドを作ってもパフォーマンスは良くなるどころか悪くなる
0208デフォルトの名無しさん
2010/09/03(金) 12:21:050209デフォルトの名無しさん
2010/09/03(金) 18:41:07このリストに入れたすべてのソケットの受信要求を見るにはどうしたらいいでしょうか?
ちなみにhttp://oshiete.goo.ne.jp/qa/1467156.html を参考にしています。
0210デフォルトの名無しさん
2010/09/03(金) 18:59:25selectモジュールと、asyncore, asynchat モジュールを見ると良いよ。
0211デフォルトの名無しさん
2010/09/03(金) 19:06:11ありがとうございます。みてみます。
0212デフォルトの名無しさん
2010/09/04(土) 00:52:23そのような方法はありますか?
0213デフォルトの名無しさん
2010/09/04(土) 09:17:36import types, inspect
def factorial(n):
if n == 0:
return 1
else:
return n * types.FunctionType(inspect.currectframe().f_code, globals())(n - 1)
0214デフォルトの名無しさん
2010/09/04(土) 09:46:15それ、lambdaでも使えますか?
0215デフォルトの名無しさん
2010/09/04(土) 10:53:25やってみた。
import types, inspect
print (lambda n:1 if n==0 else
n*types.FunctionType(inspect.currentframe().f_code,globals())(n-1))(10)
3628800
0216デフォルトの名無しさん
2010/09/04(土) 16:02:41できないことは無いが、Pythonicではない。
自己満足オナニーコード以外では、名前で再帰しな。
0217デフォルトの名無しさん
2010/09/05(日) 02:58:09ちなみにエラーの最後は error: command 'gcc-4.2' failed with exit status 1 となっています。
原因は何でしょうか?
linuxだとpython-develがないとおきるとあったのですが。
0218デフォルトの名無しさん
2010/09/05(日) 08:47:53大抵の場合おつむの容量が足りていない
0219デフォルトの名無しさん
2010/09/05(日) 11:03:120220デフォルトの名無しさん
2010/09/05(日) 17:46:00拡張してなかったことに気がついた時にはもう
サービスインしてるので、拡張する余裕がないんだよな。
警告が出てもそのまま実行するしかない。
そのせいで隣のプロセスもとも連れで落ちたりするが
実行するしかないんだ。
0221デフォルトの名無しさん
2010/09/06(月) 02:37:10classic classオブジェクトは何のインスタンスなのですか?
__class__を参照するとエラーが出るので困っています。
0222デフォルトの名無しさん
2010/09/06(月) 03:10:210223デフォルトの名無しさん
2010/09/06(月) 04:08:360224デフォルトの名無しさん
2010/09/06(月) 04:41:370225デフォルトの名無しさん
2010/09/06(月) 04:47:18それだと読み込んでもいないクラスのオブジェクトを生成してることになりますよ
0226デフォルトの名無しさん
2010/09/06(月) 05:51:130227デフォルトの名無しさん
2010/09/06(月) 10:28:360228デフォルトの名無しさん
2010/09/06(月) 12:01:010229デフォルトの名無しさん
2010/09/06(月) 12:04:01という印象がある。中に入りづらいというか。
0230デフォルトの名無しさん
2010/09/06(月) 12:08:48だけど無理に仲間になる必要は全く無いからご安心ください
0231デフォルトの名無しさん
2010/09/06(月) 12:24:05コミュニティなんてネット上にいくらでもあるしここもそう
0232デフォルトの名無しさん
2010/09/06(月) 15:33:430233デフォルトの名無しさん
2010/09/06(月) 21:21:570234デフォルトの名無しさん
2010/09/06(月) 23:47:52このとき 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'>
なぜでしょうか。
0235デフォルトの名無しさん
2010/09/07(火) 00:29:50インスタンスを関数みたいに使うとき(?)に呼ばれるのが __call__
0236デフォルトの名無しさん
2010/09/07(火) 00:34:44__init__() は __call__() 内部で呼ばれているだけだから、今回の話にはあまり関係ないですよね。
X.__call__() をクラスメソッドで定義したのに上書きされないのはなぜ?という話なので。
0237デフォルトの名無しさん
2010/09/07(火) 00:42:34It can be called either on the class (e.g. C.f()) or on an instance.......
らしい。だからクラスでもインスタンスでも呼べるメソッドという扱いになるからちゃんと __call__(cls) はクラスメソッドになってる。
インスタンスから呼べないようなものは staticmethod を使う。
0238デフォルトの名無しさん
2010/09/07(火) 00:47:530239デフォルトの名無しさん
2010/09/07(火) 01:24:03クラスメソッドの定義方法を質問したんじゃありません。
あとstaticmethodはインスタンスからも呼べます。
>>238
挙動を質問しているだけなのに、理由が必要ですか?
理由をあえていえば、Pythonでは X() を実行すると実際には X.__call__() が
実行されるというふうに聞いたのですが、
実際に上書きして試してみたけど上書きされなかった、のが理由です。
0240デフォルトの名無しさん
2010/09/07(火) 01:57:42X.__call__() はクラスオブジェクトの __call__ で X().__call__() はインスタンスの __call__ が呼ばれることになる
だからインスタンスの関数呼び出しをエミュレートする __call__ をクラス定義内で上書きしても無駄なんじゃない
よく解らないけど
0241デフォルトの名無しさん
2010/09/07(火) 05:02:400242デフォルトの名無しさん
2010/09/07(火) 09:20:27>X.__call__() と X().__call__() は違う
それはわかってます。だから class X のクラスメソッドとして __call__ を定義したんじゃないですか。
234のコードをもう一度見てみてください。
>>241
メタクラスもあまり関係なくないですか?
X() を呼び出したとき、実際には X.__call__() が呼び出されるはずだけど、
実際に上書き定義してみたけど挙動が変わんないよという話です。
メタクラス、関係ありますか?
0243デフォルトの名無しさん
2010/09/07(火) 09:25:07http://d.hatena.ne.jp/hope-echoes/20080409/1207732499
>この理解は後にメタクラスを学習する際に役立つ。
0244デフォルトの名無しさん
2010/09/07(火) 09:34:44hello
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の呼ばれ方。
0245デフォルトの名無しさん
2010/09/07(火) 09:42:33#1 と #4 って何が違うの?
0246デフォルトの名無しさん
2010/09/07(火) 09:45:38すまんtypo
>>> X()() # 1
hello
cls=<class '__main__.X'>
0247デフォルトの名無しさん
2010/09/07(火) 10:01:42そこのページにも
> ようするに、
> obj = Class()
> obj = Class.__call__()
> は同じ意味である。
と書かれてありますよね。
しかし X.__call__() を上書きしてみたのに、X() を実行しても
上書きされてないので、質問してるのですが、わかってもらえてますか?
>>244
だから、X() を実行した時に、X.__call__() が呼ばれるはずなのに
呼ばれてないのはなぜですか、という質問なんですけど。
0248デフォルトの名無しさん
2010/09/07(火) 10:16:59X()を実行するとまず__init__が処理される、__call__は関係なし。
x = X()で、x()を呼べば__call__が呼ばれる。
つまり>>246にあるX()()のことで、__init__を無視し__call__を呼ぶには以下
X()() # 1
X().__call__() # 2
X.__call__() # 3 (classmethod)
__call__をclassmethodとして定義しても#3が使えるようになるだけで、X()は関係なし
0249デフォルトの名無しさん
2010/09/07(火) 10:32:24>>235は大体合ってるし
__call__が__init__を呼び出してるなんて初めて聞いたが
http://www.daniweb.com/forums/thread39004.html
0250デフォルトの名無しさん
2010/09/07(火) 10:41:21>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__() の中で行ってると思ったのですが、違いますか。
0251デフォルトの名無しさん
2010/09/07(火) 10:46:20ドキュメントにもxって書いてあるじゃん
このxはどう考えても、x = X()の時のx
0252デフォルトの名無しさん
2010/09/07(火) 11:29:04x() では __call__() が呼ばれるけど、X() では呼ばれないということですか。
なんか一貫性に欠けた仕様ですね。
じゃあ>>243のページに書かれている
> ようするに、
> obj = Class()
> obj = Class.__call__()
> は同じ意味である。
というのは間違いということですか?
#間違ってるなら紹介しないでほしい
0253デフォルトの名無しさん
2010/09/07(火) 11:31:070254デフォルトの名無しさん
2010/09/07(火) 12:09:01... def __call__(self, *args):
... print "hello"
...
>>> class X(object):
... __metaclass__ = Meta
...
>>> X()
hello
0255デフォルトの名無しさん
2010/09/07(火) 12:19:240256デフォルトの名無しさん
2010/09/07(火) 12:27:53__init__と__call__の違いがわからなければ
理解できなくて当然のハイレベルな機能なので特に気にしなくて良い
0257デフォルトの名無しさん
2010/09/07(火) 12:39:57多分obj = Class.__init__()の間違いだと思うよ
0258デフォルトの名無しさん
2010/09/07(火) 12:41:36X: 当該クラス
instance: Xのインスタンス
metaX: Xのメタクラス
Xに定義された__init__ -> X(): コンストラクタ
Xに定義された__call__ -> instance(): C++でいう関数オブジェクトみたいなものを作る時に使う。
Xに定義されたクラスメソッドの__call__ -> X.__call__(): X()では呼び出せない。
というかclassmethodの効果はドット「.」でメンバアクセスする場合のみ
メタクラスとかはマニアックな仕様なので無視の方向で。
0259デフォルトの名無しさん
2010/09/07(火) 12:43:140260デフォルトの名無しさん
2010/09/07(火) 12:48:59>多分obj = Class.__init__()の間違いだと思うよ
それはないでしょう。
だって __init__() はインスタンスメソッドであり、インスタンスがないのに呼び出せないでしょ?
obj = Class()
obj = Class.__init__() # TypeError
そっちこそ __init__ と __call__ の違いが分かってるの?w
0261デフォルトの名無しさん
2010/09/07(火) 12:49:43metaX.__call__がX.__init__に相当する(同じタイミングで呼ばれる)って話か。
そりゃあ関係ないわな。X.__call__の話なんだもの。
0262デフォルトの名無しさん
2010/09/07(火) 12:53:50>Xに定義された__call__ -> instance(): C++でいう関数オブジェクトみたいなものを作る時に使う。
「Xに定義された__call__」って何ですか?
0263デフォルトの名無しさん
2010/09/07(火) 12:54:04なんかわかんなくなってきたぞ
0264デフォルトの名無しさん
2010/09/07(火) 13:03:310265デフォルトの名無しさん
2010/09/07(火) 13:14:53結局、>>243のページは大間違いということでいいんだよね?
0266デフォルトの名無しさん
2010/09/07(火) 13:15:18object.__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, ...).
0267デフォルトの名無しさん
2010/09/07(火) 13:16:58適応性なさすぎ、仕様がスマートじゃないPythonには向いてないよ。
0268デフォルトの名無しさん
2010/09/07(火) 13:24:20今の内に貰っとくが吉。
http://www.mail-marketing-club.jp/aff/6934/59/
0269デフォルトの名無しさん
2010/09/07(火) 13:36:25>理由をあえていえば、Pythonでは X() を実行すると実際には X.__call__() が
>実行されるというふうに聞いたのですが、
誰に「聞いた」のか知らんが、それが嘘でした、で終了でしょ
呼ばれるというのは嘘なんだから、いくら頑張ってそこ弄っても挙動変わらないのは
当たり前
何が疑問なのかさっぱり分からん
x = X() とするときに呼ばれるのは
メタクラスの__call__()
-> Xの__new__()(性的メソッド)
-> xの__init__()(インスタンスメソッド)
が正解のはずだよ
0270デフォルトの名無しさん
2010/09/07(火) 13:39:15なんで >>243 が正しいと思っちゃった人は
どこの馬の骨かわからんサイトに書いてることを信用するんだろう
0271デフォルトの名無しさん
2010/09/07(火) 13:57:02正しくない根拠は?
君こそどこの馬の骨かわからないよね・・
0272デフォルトの名無しさん
2010/09/07(火) 14:28:43そのページにまんま書いてあるのだが
>__call__( self[, args...])
> インスタンスが関数として ``呼ばれた'' 際に呼び出されます;
よってクラスオブジェクトが関数として呼ばれた際には呼び出されない
0273デフォルトの名無しさん
2010/09/07(火) 14:36:130274デフォルトの名無しさん
2010/09/07(火) 15:15:22python ....
0275デフォルトの名無しさん
2010/09/07(火) 17:16:560276デフォルトの名無しさん
2010/09/07(火) 17:27:590277デフォルトの名無しさん
2010/09/07(火) 18:50:360278デフォルトの名無しさん
2010/09/07(火) 18:52:080279デフォルトの名無しさん
2010/09/07(火) 18:56:010280デフォルトの名無しさん
2010/09/07(火) 19:08:38Xがインスタンスオブジェクトの場合、これは X.__call__() と同じである。
0281デフォルトの名無しさん
2010/09/07(火) 19:18:13tsubotta
0282デフォルトの名無しさん
2010/09/07(火) 19:19:06....:
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>
ふむ。
0283デフォルトの名無しさん
2010/09/07(火) 20:56:470284デフォルトの名無しさん
2010/09/08(水) 07:09:40その章題にもあるように、それは、callableの説明であって、classの説明ではない。
callableなオブジェクトxに対して、
x()はx.__call__()の短縮形として解釈される。
一方、classであるXに対して
X()はインスタンス生成の記法であり、オブジェクトが生成された後、そのオブジェクトの__init__メソッドが叩かれる。
以上、メソッドとコンストラクタの概念の違いがわかっていれば、
たまたま記法が似ているけれども意味論的には別々のものだということがわかる。
0285デフォルトの名無しさん
2010/09/08(水) 13:15:24特に3. Data modelの部分を100回音読しろ。
クラス(new-styleクラス)はcallableで、クラスのstatic methodの__new__が呼ばれる。
Classicクラスは直接インスタンスを作って__init__を呼び出す。
クラスインスタンスは「インスタンスメソッドの__call__」を持っている場合だけcallableをエミュレートできる。
で、ここからはメタクラスの話。
クラスってのはメタクラス(type派生クラス)のインスタンスだ。
だから、(インスタンスメソッドの)__call__メソッドを作ってやれば呼ばれたときの挙動を変更できる。
ただ、>>234の考えた、@classmethodでクラス(のインスタンスメソッド)を上書きできると思ったのは残念。
typeの実装は、「クラスメソッドの__call__」でクラスの呼び出しをオーバライドしない。
だから、クラスのインスタンスメソッド__call__をクラスメソッドで上書きするメタクラスを書く必要がある。
@classmethodでクラスの(インスタンス)辞書をオーバライドできる、って発想は惜しいんだけどな。
実際はtypeの実装が、インスタンスメソッドの特殊メソッドを見つけてディスクプリタを書き換えてるだけなんだよ。
クラス辞書をオーバライドしてディスクプリタを書き換えようとするのは逆なんだ。
0286デフォルトの名無しさん
2010/09/08(水) 13:19:25そもそも間違った認識と推測と仮定で話進めて何が楽しいんだか
0287デフォルトの名無しさん
2010/09/08(水) 13:23:27>>285 は >>234 本人の自演
0288デフォルトの名無しさん
2010/09/08(水) 13:24:52ttp://docs.python.org/reference/datamodel.html#object.__new__
0289デフォルトの名無しさん
2010/09/08(水) 13:26:270290デフォルトの名無しさん
2010/09/08(水) 13:31:370291デフォルトの名無しさん
2010/09/08(水) 13:38:480292デフォルトの名無しさん
2010/09/08(水) 13:40:110293デフォルトの名無しさん
2010/09/08(水) 14:03:260294デフォルトの名無しさん
2010/09/08(水) 14:48:46残念だけど当たってます
ところで >>292 のどの辺がメタクラスなんでしょう?
0295デフォルトの名無しさん
2010/09/08(水) 15:34:190296デフォルトの名無しさん
2010/09/08(水) 16:46:390297デフォルトの名無しさん
2010/09/08(水) 17:47:220298デフォルトの名無しさん
2010/09/08(水) 18:01:012.5から2.6(Python3準拠)はそれなりに面倒だったけど
0299デフォルトの名無しさん
2010/09/08(水) 18:10:32基本的に主流のLinux(Ubuntu, Fedora, OpenSUSE)に入ってる
Pythonのバージョンを使えば問題ない(ライブラリやオープンソースなどがほぼ有効なため)
今はPython2.6.5で様子見状態、おそらく2.7はなくて3.xに飛ぶはず
0300デフォルトの名無しさん
2010/09/08(水) 18:42:560301デフォルトの名無しさん
2010/09/08(水) 19:02:300302デフォルトの名無しさん
2010/09/08(水) 20:49:300303デフォルトの名無しさん
2010/09/08(水) 21:10:26どこのスレの住民か知らないけどよほど嬉しかったんですね
TDPL日本語版出るといいね
0304デフォルトの名無しさん
2010/09/08(水) 21:30:230305デフォルトの名無しさん
2010/09/08(水) 22:09:44いや
一応Python対応強化って書いてあったからね
0306デフォルトの名無しさん
2010/09/08(水) 23:07:52教祖様であるRMSこそが真の英雄であると教え込まれます
Rubyの教祖様より自意識が強くLinuxはカーネルを指しGNU OSだと言い張ります。
0307デフォルトの名無しさん
2010/09/09(木) 13:35:080308デフォルトの名無しさん
2010/09/09(木) 15:02:100309デフォルトの名無しさん
2010/09/09(木) 15:20:31http://www.youtube.com/watch?v=9sJUDx7iEJw
0310デフォルトの名無しさん
2010/09/09(木) 17:53:55echoサーバーをselect使って書いています。
アクセプトしたソケットがクライアント側で切断された場合にサーバー側でそれを感知することはできるでしょうか?
0311デフォルトの名無しさん
2010/09/09(木) 17:59:450312デフォルトの名無しさん
2010/09/09(木) 18:11:59できれば、どんな感じでやるのか教えてくれませんか
0313デフォルトの名無しさん
2010/09/09(木) 20:20:360314デフォルトの名無しさん
2010/09/09(木) 20:57:50あははとても面白い回答ですねうける
0315デフォルトの名無しさん
2010/09/09(木) 20:59:120316310
2010/09/09(木) 22:22:030317デフォルトの名無しさん
2010/09/09(木) 22:25:27たまに必要なときもenumerateで事足りることも多いんだけど。
例えばこういうのを、range使わないで書く方法ってどんなのがある?
a = get_some_list()
b = [a[i-1]+a[i] for i in range(len(a))]
0318317
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))]
0319デフォルトの名無しさん
2010/09/09(木) 23:14:200320デフォルトの名無しさん
2010/09/10(金) 00:33:59ストールマン会ったことあるけど意外と小さい人だった
160cmくらいか
0321デフォルトの名無しさん
2010/09/10(金) 00:35:19lst = 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:]:
は長いリストを生成する分、メモリ的には無駄のように思える。
0322デフォルトの名無しさん
2010/09/10(金) 00:36:38reduce
0323デフォルトの名無しさん
2010/09/10(金) 01:01:24reduceじゃダメだろ
0324デフォルトの名無しさん
2010/09/10(金) 01:11:050325デフォルトの名無しさん
2010/09/10(金) 01:27:10ソース見たら作られてるっぽい
0326デフォルトの名無しさん
2010/09/10(金) 01:28:33イテレータを使えばいいじゃない
0327デフォルトの名無しさん
2010/09/10(金) 01:29:282.7とか3以降も同じかどうかはしらない
0328デフォルトの名無しさん
2010/09/10(金) 10:00:56作られる。
巨大なら、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使うのに抵抗なんかしても仕方ないのかなぁ。
0329デフォルトの名無しさん
2010/09/10(金) 10:03:59it.next()
it # lst[1:]相当
0330デフォルトの名無しさん
2010/09/10(金) 10:12:07こうか?
reduce(lambda ls,x: ls[:-1]+[ls[-1]+x, x], a, [0])[1:-1]
0331デフォルトの名無しさん
2010/09/10(金) 10:45:34そうそうそれそれ
0332デフォルトの名無しさん
2010/09/10(金) 11:27:110333デフォルトの名無しさん
2010/09/10(金) 11:29:03お願いします
0334デフォルトの名無しさん
2010/09/10(金) 12:56:52map(operator.add, a[:-1], a[1:])
でいいと思う
>>319のほうが読みやすいけど
0335デフォルトの名無しさん
2010/09/10(金) 13:16:29it.next()
[x + y for x, y in zip(a, it)]
0336デフォルトの名無しさん
2010/09/10(金) 20:41:53いやmapのが早いし
Listのindex理解してればそっちの方がパッと見で理解できる
0337デフォルトの名無しさん
2010/09/10(金) 20:57:55〜 if 〜 else 〜 とかじゃなくて?
0338デフォルトの名無しさん
2010/09/10(金) 22:24:37しかもよく分からんが、えらいパワフルなしかけで必習っぽいのが困る
0339デフォルトの名無しさん
2010/09/10(金) 22:49:22lambdaはdefとほぼ同じなので分からんほうが変
reduceは紳士の嗜みで必修ではない
0340デフォルトの名無しさん
2010/09/10(金) 22:50:27○リスト内包
0341デフォルトの名無しさん
2010/09/10(金) 23:02:28map(int, ...)のかわりに[int(e) for e in ...]とかするのやだよ
0342デフォルトの名無しさん
2010/09/10(金) 23:30:51なんで内包表記はありだけどlambdaは使い所が見えない。
仕事でコード書いてるからかな。
0343デフォルトの名無しさん
2010/09/10(金) 23:35:25>map(int, ...)のかわりに[int(e) for e in ...]
[(2*int(e)+1) for e in ...]
の場合
map(lambda e: 2*int(e)+1, ...)
と書く以外に簡単になる?
0344デフォルトの名無しさん
2010/09/10(金) 23:45:42そういう例を出されて反駁されても困っちゃう
0345デフォルトの名無しさん
2010/09/10(金) 23:49:09過小評価(キリ
とか笑うしかないだろ
0346デフォルトの名無しさん
2010/09/11(土) 00:08:29>>338
他ってなによ?C/C++のこと? haskellやらlispのこと?
>>341
確かにそれ、やだなぁ、って気になってはいたんだがmap使えばよかったのか。
他にこれといった使いどころがないから存在意義の微妙さは変わらないが...
0347デフォルトの名無しさん
2010/09/11(土) 00:08:57あんまり実のない話しだし
0348デフォルトの名無しさん
2010/09/11(土) 01:03:06それは単なるループではないし、スマートかつ高速なコードを書けるわけだ。
リストの内包表現はただ単なる、lambda的なforであって複雑ならforでいい、可読性が失われる。
0349デフォルトの名無しさん
2010/09/11(土) 01:32:44>再帰的に
kwsk
0350デフォルトの名無しさん
2010/09/11(土) 03:19:50"再帰的に" というのは、間違いだと思うよ。
map は sequence の各要素に対して関数を呼び出すだけなので、
再帰呼び出しは発生しない。
0351デフォルトの名無しさん
2010/09/11(土) 04:05:130352デフォルトの名無しさん
2010/09/11(土) 09:23:53少なくとも2.6.5ではinputがまだあり、inputではevalされます。
0353デフォルトの名無しさん
2010/09/11(土) 09:34:090354デフォルトの名無しさん
2010/09/11(土) 12:56:58Google App Engine のアプリも作ってるし。
0355デフォルトの名無しさん
2010/09/11(土) 13:04:420356デフォルトの名無しさん
2010/09/11(土) 14:03:330357デフォルトの名無しさん
2010/09/11(土) 14:05:310358デフォルトの名無しさん
2010/09/11(土) 14:47:59def foo(arg: int):
pass
を
def foo(arg):
if not isinstance(int): raise TypeError
に置き換える感じの。
0359デフォルトの名無しさん
2010/09/11(土) 14:49:43誤 関数の型
正 引数の型
正しいコード
def foo(arg: int):
pass
def foo(arg):
if not isinstance(arg, int): raise TypeError
0360デフォルトの名無しさん
2010/09/11(土) 14:56:13http://www.artima.com/weblogs/viewpost.jsp?thread=85551
もしPy3kで入ってたらと思うとぞっとしなくもない
0361デフォルトの名無しさん
2010/09/11(土) 15:26:08購入する書籍に迷っています。
初めてのパイソンやみんなのパイソンが評判良いようなんですが、
どちらがいいのでしょうか。
自分はプログラミング自体ほぼ初めてで、
覚える目的は、PC上のテキストの編集などを自動化したいからです。
なので職業プログラマーほどの知識はいらないかもしれません。
0362デフォルトの名無しさん
2010/09/11(土) 15:30:19そしてPython学習において本が重要でないこと
WEBにある情報やチュートリアルの方が優れていること
これをわきまえて買わないと酷くソンをすることになる。
0363デフォルトの名無しさん
2010/09/11(土) 15:44:35そうなんですか
それなら値段高めの初めてのパイソンを買うのはちょっと抵抗があるような・・・
というか、今後のためにも3対応のものが良いのかなと思うので、
そうしたらPython入門―2&3対応 という書籍しか選択肢にないようなのですが、
こっちのほうが良いですか?
この本をベースに、わからないことはwebで調べていくことにするとか
0364デフォルトの名無しさん
2010/09/11(土) 15:52:47でこれー他で実現出来そうな希ガス
0365デフォルトの名無しさん
2010/09/11(土) 15:56:33はじぱいは
恥ぱいと
初ぱいの
2種類あるから
間違わないように気を付けて!
0366デフォルトの名無しさん
2010/09/11(土) 15:58:46>>363 は「Python入門―2&3対応」筆者の自演宣伝だから気を付けて!!!
0367デフォルトの名無しさん
2010/09/11(土) 17:48:560368デフォルトの名無しさん
2010/09/11(土) 22:24:57overloadもできないのに型を決め打って嬉しいことなんて、これっぽっちもないだろ。
0369デフォルトの名無しさん
2010/09/11(土) 22:31:38決め打ちには反対だが
少なくとも関数の定義だけみても
各引数がどの型を期待しているのかが判らないのが面倒
もちろん判ってしまえば問題ないんだが
その点マニュアルも100%記載されている訳ではないし
0370デフォルトの名無しさん
2010/09/11(土) 22:33:15戻り値についても同様ね
0371デフォルトの名無しさん
2010/09/11(土) 22:41:06docstringの中で、各パラメータが実装しているべきメソッドを挙げたり。
もちろんチェックはしないが、ソース読んで参考にはなるという形で。
0372デフォルトの名無しさん
2010/09/11(土) 22:53:280373デフォルトの名無しさん
2010/09/11(土) 22:55:530374デフォルトの名無しさん
2010/09/11(土) 23:22:28型の合わない変数までインテリセンスで表示されると鬱陶しいので。
def __init__(self, userid, name): #userid:int,name:str#
self.userid = 0 #:int#
self.addrport = None #:(str,int)#
self.users = {} #:{int:UserDefClass}#
上から下まで一行ずつ読み込み、#〜#で引っ掛けるという手抜き技。
構文解析する腕は持ってない。
あとはPython本体を改造して10倍早くするだけだな。
来年こそは
0375デフォルトの名無しさん
2010/09/11(土) 23:24:120376デフォルトの名無しさん
2010/09/11(土) 23:25:54kwsk
0377デフォルトの名無しさん
2010/09/11(土) 23:59:310378デフォルトの名無しさん
2010/09/12(日) 01:48:30じゃないけど、以前 pyExcelerator のソースを読んだら Deco.py ってのがあって
@accepts (引数型チェック) @returns (返り値チェック) みたいなデコレータを定
義していた。(xlutils にはなかった...)
0379デフォルトの名無しさん
2010/09/12(日) 02:12:27アイディアは良い感じなんだけどな
pythonの場合
def hoge(arg, *args, **kwargs):
ってよくやるからな
ちょっと難しいかもな
0380デフォルトの名無しさん
2010/09/12(日) 03:54:480381デフォルトの名無しさん
2010/09/12(日) 08:24:30http://gihyo.jp/dev/serial/01/pythonhacks/0007
これでいいんじゃないか
0382デフォルトの名無しさん
2010/09/12(日) 12:40:28Python 2.6へbackportされていないので,
利用するにはPython 3.0以降が必要になります。
0383デフォルトの名無しさん
2010/09/13(月) 01:56:10anntools は関数の引数や戻り値が想定している型や値になっているかどうかをチェックしたり,
期待している以外の型のオブジェクトが渡されたときに自動で型変換したりしてくれたりします。
Python 2.6以前にも対応しているので,関数アノテーションのある・なしでどう変わるか見ていきましょう。
BlogなどのWebアプリケーションで,記事を編集するリクエストを扱う関数を想定してみます。
0384デフォルトの名無しさん
2010/09/13(月) 11:16:19http://teddziuba.com/2010/09/programming-things-i-wish-i-knew.html
Don't do image processing work with PIL unless you have proven that command-line ImageMagick won't do the job
0385デフォルトの名無しさん
2010/09/13(月) 11:21:390386デフォルトの名無しさん
2010/09/13(月) 14:16:00のリンク元
http://slashdot.jp/askslashdot/10/09/08/2228201.shtml
0387デフォルトの名無しさん
2010/09/13(月) 14:50:42# Python 2.7 Windows X86-64 installer (Windows AMD64 / Intel 64 / X86-64 binary [1] -- does not include source)
公式のダウンロードは、これとこれどっちをダウンロードすればいいんですか?
2.7と3.1.2ではどっちが良いんですか?
0388デフォルトの名無しさん
2010/09/13(月) 14:53:193.1.2が最新版です
2.7が人柱版です
32-bitが一般的で互換性があります
64-bitが人柱版で互換性がないです
0389デフォルトの名無しさん
2010/09/13(月) 15:11:070390デフォルトの名無しさん
2010/09/13(月) 15:13:58Pythonをインタプリタで動かすにも64bitだと互換性の問題が出てくる
Linuxは別に問題ないけど情報量が少ないしOS自体が人柱なんだよな
0391デフォルトの名無しさん
2010/09/13(月) 15:17:29あまり難しいことはするつもりはなく、テキスト処理くらいでいいんですが、
今から覚えるなら3にしておくべきでしょうか。
0392デフォルトの名無しさん
2010/09/13(月) 15:20:582から3って言っても中核部を変更したから互換性の問題があるだけで
普通にマイナーチェンジ程度、数回コード書けば慣れるレベルの変更だよ
でも実用性では2.6が圧倒的だし情報も少ない3を使う意味はないと私は思うよ
0393デフォルトの名無しさん
2010/09/13(月) 15:25:482.6というのは、公式にある
Python 2.6.6 (August 24, 2010)
をダウンロードすればいいんですね?
>>388さんのいってる2.6.5はどこにもないんですが
0394デフォルトの名無しさん
2010/09/13(月) 15:31:51Windowsは使って無いから詳しい人教えてよ
0395デフォルトの名無しさん
2010/09/13(月) 15:40:09オウム返しは嫌われるぞ
0396デフォルトの名無しさん
2010/09/13(月) 20:10:06くだすれPython(超初心者用) その8
http://hibari.2ch.net/test/read.cgi/tech/1282537545/
0397デフォルトの名無しさん
2010/09/14(火) 10:19:480398デフォルトの名無しさん
2010/09/14(火) 10:25:390399デフォルトの名無しさん
2010/09/14(火) 11:06:48えろいひとにはそれがわからんのです
っていうか一応 _hoge とか __hoge とかの紳士協定はある
0400デフォルトの名無しさん
2010/09/14(火) 11:37:11セミコロンとか付け忘れるし
0401デフォルトの名無しさん
2010/09/14(火) 12:28:14クラスをオーバーライドした後に親クラスの属性を書き換えたときの挙動等、
言語仕様も大幅に複雑になる。
それだけのコストを支払って private を導入する価値があるかどうか?
Pythonが実際に中規模以上のアプリケーション開発に利用されているのがその答えだ。
0402デフォルトの名無しさん
2010/09/14(火) 12:32:00LispやHaskellの良い所をくっつけて作った言語
逆にLisp系の俺用処理系の鬱陶しさを配慮してPythonが首位を取った
0403デフォルトの名無しさん
2010/09/14(火) 23:55:590404デフォルトの名無しさん
2010/09/14(火) 23:56:43かなり良いテンプレ
0405デフォルトの名無しさん
2010/09/15(水) 03:49:49記述が冗長かどうかより、単に面倒で億劫に感じる。
C++とかC++とかC++とか、もうやりたくないよ。
0406デフォルトの名無しさん
2010/09/15(水) 03:57:09そんなあなたにQt4
0407デフォルトの名無しさん
2010/09/15(水) 04:56:11http://www.pyside.org/
0408デフォルトの名無しさん
2010/09/15(水) 06:54:190409デフォルトの名無しさん
2010/09/15(水) 07:57:15もう遅いかもしれんが…
外部ライブラリをバリバリ使うなら別として、単なるテキスト処理だったらpython 3を使った方がよいと思うよ
文字列とバイト列がちゃんと区別されていて、自分でUnicodeにデコードしてから処理するなんて作業をしなくていいし。
0410デフォルトの名無しさん
2010/09/15(水) 23:26:530411デフォルトの名無しさん
2010/09/15(水) 23:27:480412デフォルトの名無しさん
2010/09/17(金) 08:18:13やりたいとき、twisted のリアクタを別スレッドで回せば
いいんじゃないかと思ってるんだけど、なんか落とし穴ある?
今までtwistedを使ったことはあるけど
メインのスクリプトの最後でtwistedのリアクタをぶん回して
放置って使い方だったので、それを別スレッドでやって
さらにメインスレッドでは別の処理を継続なんてことが
できるのかどうか確信が持てない。
0413デフォルトの名無しさん
2010/09/17(金) 08:20:580414デフォルトの名無しさん
2010/09/17(金) 08:27:23重いCPU処理があるとtwistedはイマイチな気がする。
むしろ重いCPU処理は別プロセスにやらせたほうが
GILにやさしいシステムになると思われ。
0415デフォルトの名無しさん
2010/09/17(金) 13:05:41popenくらいしか使ったこと無いけど調べてみる。
0416デフォルトの名無しさん
2010/09/18(土) 02:45:050417デフォルトの名無しさん
2010/09/18(土) 03:52:120418デフォルトの名無しさん
2010/09/18(土) 13:20:06どんなライブラリが標準的なんでしょうか?
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 では標準のものが有るのかも知れませんが、
まだ調べていません。
0419デフォルトの名無しさん
2010/09/19(日) 11:42:24http://www.xml3k.org/Amara
http://pypi.python.org/pypi/Amara/
0420デフォルトの名無しさん
2010/09/22(水) 13:09:07GILはPythonオブジェクトを走査するときだけ働くから、画像処理なんかはGILを開放するようにすれば、
ちゃんとマルチスレッドでも性能出るよ。
>>412
Twistedにはワーカースレッドのスレッドプールで重い処理やブロックする処理を実行するための仕組みがあるよ。
0421デフォルトの名無しさん
2010/09/22(水) 15:16:26CやC++作った動的ライブラリを呼場合はGILは自動的に開放されるの?
それともGILを開放するようにあらかじめ作る必要があるのかな
0422デフォルトの名無しさん
2010/09/22(水) 20:31:16動的ライブラリを呼ぶ場合って、具体的に言えばctypes経由?
ctypesは、FUNCFLAG_PYTHONAPIというフラグを指定しなければ、GILを開放する。
ctypes以外の場合は自分で調べて。pywin32とかだと、たぶんAPIごとにそのAPIが
ブロックするか否かなどを考慮して、GILを開放するかどうかを決めてると思う。
0423デフォルトの名無しさん
2010/09/22(水) 21:25:20thx
ctypeは面倒だったからスレで以前紹介されてたswigを使ってる
けどswigのドキュメントにGILの扱いは書いてないなあ
もう少し調べてみます
0424デフォルトの名無しさん
2010/09/23(木) 02:46:10C言語の心得は多少あるのですが、Pythonは初めてです。
一冊体系的に学んでおきたいのですが、初心者にお勧めの入門書を教えてください。
0425デフォルトの名無しさん
2010/09/23(木) 02:47:470426デフォルトの名無しさん
2010/09/23(木) 03:02:140427デフォルトの名無しさん
2010/09/23(木) 03:05:55C判ってるんならwebである程度調べればそのうち出来るようになる
ただ「体系的に」を期待してるなら本読むのもありかも
本家は Tutorial とか Library Reference とかあって便利
http://www.python.org/doc/
日本語サイトは一応あるけどイマイチどこに何があるのかわかりにくい印象がある
http://www.python.jp/doc/
0428デフォルトの名無しさん
2010/09/23(木) 03:08:59┌─┐
│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0429デフォルトの名無しさん
2010/09/23(木) 07:13:58boost::python はどうですか?
どうですか?っていうのも余りに抽象的すぎるんで、
数値計算のためのOpenMPを利用したC++クラスライブラリがあって
それをPythonで使いたい、あわよくばmatplotlibで
可視化はPythonでやれればいいな、という用途に
boost::python はどうよ?って事なんですが。
C++とBoostの機能の一部とテンプレートプログラミングには
慣れているつもりです。
0430423
2010/09/23(木) 10:07:46→ 17.5 Using SWIG-Generated Modules in a Multithreaded Environment
Python CookBook 2ndEditionに乗っている筈が何故か日本語版は未記載だった・・・
0431423
2010/09/23(木) 11:48:11swig1.3以降(2.0も)は
%exception {
Py_BEGIN_ALLOW_THREADS
$action
Py_END_ALLOW_THREADS
}
こんな感じでおkっぽい
0432デフォルトの名無しさん
2010/09/23(木) 13:46:320433デフォルトの名無しさん
2010/09/23(木) 15:29:51俺が使ったのはboost-1.34くらいのときなので、ちょっとあれですが
悪くはなかったよ。
あまり過大な期待をしない限りは、ってところだったかな…
Python例外とC++例外を対応させられる、とか、結構便利だったと思う。
その時は俺的にはswigも検討したけど、swigよりはいいな、と思った
記憶がある。
個人的には、もう一つの選択肢としては、Cでブリッジ関数書いて、
それをctypesで呼び出す、というのもあって、概ねこの2つのいずれかを
当時は使っていた。
0434デフォルトの名無しさん
2010/09/23(木) 16:39:26swigはCのライブラリのバインディングを作る
CythonはPythonのクラスライブラリを拡張モジュールで作るのを簡単にする。
それぞれ得意分野が違うな。
0435デフォルトの名無しさん
2010/09/23(木) 17:21:59機能の充実は SWIG >= boost::python だな
ctypesはCのみ
0436デフォルトの名無しさん
2010/09/23(木) 18:47:510437デフォルトの名無しさん
2010/09/23(木) 18:52:48それならboost::python
0438デフォルトの名無しさん
2010/09/23(木) 19:01:37typemap あたりがマニアックで使いにくいかなぁ...
0439デフォルトの名無しさん
2010/09/23(木) 19:10:13自分のスタイルに最適な物を選ぶしかないけどそんなに情報が充実してない
pythonからC/C++を利用する:
C++ なら SWIG/boost::python
Cなら ctypes/SWIG
C++からpythonを利用する
boost::python
Pythonっぽい構文でCの外部モジュールを作る(pythonから利用)
Cython
他にもツールはいろいろあるけど自分の知っている範囲ではこんな感じかな
ただ、どのツールもそれなりに熟練する必要があると思う
>typemap あたりがマニアックで使いにくいかなぁ
これは同意せざるを得ない
0440デフォルトの名無しさん
2010/09/23(木) 19:13:22boost::python
使っておけば安心っぽいですね
ほんとうにありがとうございました
0441デフォルトの名無しさん
2010/09/28(火) 20:33:42ttp://www.python.org/dev/peps/pep-3146/
正直いらないと思うんだが。
0442デフォルトの名無しさん
2010/09/28(火) 20:56:300443デフォルトの名無しさん
2010/09/28(火) 21:14:440444デフォルトの名無しさん
2010/09/28(火) 21:32:55以前使ってみたけど殆どパフォーマンスは上がらずおいおいって感じだったけど
最適化の余地はまだありそうだしGILはなくなるという話だし、生暖かい目でみてるよ
0445デフォルトの名無しさん
2010/09/28(火) 21:48:25断固抗議する
0446デフォルトの名無しさん
2010/09/29(水) 01:12:29>SyntaxWarning: assertion is always true, perhaps remove parentheses?
なんで?
0447デフォルトの名無しさん
2010/09/29(水) 01:17:450448デフォルトの名無しさん
2010/09/29(水) 01:19:31printはOKなのに?
仕様がよくわからん・・・
0449デフォルトの名無しさん
2010/09/29(水) 01:28:43assertには「コンパイルオプションを変えると評価されない→実行時間に影響しない」性質が必要になるから
0450デフォルトの名無しさん
2010/09/29(水) 01:30:34>>> print 'abc', '123'
abc 123
>>> print('abc', '123')
('abc', '123')
Python は式と文をはっきり区別するので
なんでもかんでも式のように書くのはよろしくないと思う
0451デフォルトの名無しさん
2010/09/29(水) 01:37:050452デフォルトの名無しさん
2010/09/30(木) 00:43:170453デフォルトの名無しさん
2010/10/02(土) 15:11:36PyScripterって、Python2.7に対応して無いのかな?
Python23.dllが無いと言って動いてくれない。(´・ω・`)
0454デフォルトの名無しさん
2010/10/02(土) 15:21:26requires 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.
0455デフォルトの名無しさん
2010/10/02(土) 15:55:48PyScripterのバージョンは?
俺はまだPython2.6までしか使ってないけど、2.7対応はPyScripter2.0からのハズ。
http://code.google.com/p/pyscripter/downloads/detail?name=PyScripter-v2.1.1-Setup.exe
0456デフォルトの名無しさん
2010/10/02(土) 18:14:27漢はみんなvimだよ
0457デフォルトの名無しさん
2010/10/02(土) 18:24:500458デフォルトの名無しさん
2010/10/02(土) 19:05:350459デフォルトの名無しさん
2010/10/02(土) 19:17:330460デフォルトの名無しさん
2010/10/02(土) 19:19:540461デフォルトの名無しさん
2010/10/02(土) 19:34:26いつでもどこでもどんなときで使えるvimを極めると
電車の中でもトイレでも会議中でもセックス中でも
プログラミングできるようになる
0462デフォルトの名無しさん
2010/10/02(土) 19:40:520463デフォルトの名無しさん
2010/10/02(土) 19:48:47発射時間を調整するためですか?
0464デフォルトの名無しさん
2010/10/02(土) 21:32:23次から次に必要なモジュール(←Delphi用語知らない)が出てきて困ってる。
0465デフォルトの名無しさん
2010/10/02(土) 21:42:490466デフォルトの名無しさん
2010/10/02(土) 23:00:27ども。
ろくすっぽ更新してないサイトからのリンクから、ろくすっぽ更新してないサイトに置いてあるPyScripter1.7.2をダウンロードしてました。
ああぁ…でも、ググってたらEclipseの方が絶対良いと言ってるサイトが出てきた。
もう、いいや。_| ̄|○
どうせ、必死で使う訳じゃないし…
0467デフォルトの名無しさん
2010/10/02(土) 23:21:080468デフォルトの名無しさん
2010/10/02(土) 23:32:24Vimならなんとかやっていけてるでー
0469デフォルトの名無しさん
2010/10/03(日) 00:19:24なんで、お前なんかに命令されなきゃ成らないんだよ?
コードかいたら、対価に金くれるんか?
あ”?
0470デフォルトの名無しさん
2010/10/03(日) 00:24:080471デフォルトの名無しさん
2010/10/03(日) 00:28:54C-x C-c だけ覚えとけばええねん
0472デフォルトの名無しさん
2010/10/03(日) 01:01:400473デフォルトの名無しさん
2010/10/03(日) 01:08:100474デフォルトの名無しさん
2010/10/03(日) 02:06:51M-xだけ覚えておけば割となんとかなる
0475デフォルトの名無しさん
2010/10/03(日) 06:13:20tmux
0476デフォルトの名無しさん
2010/10/03(日) 13:14:07なるよ
0477デフォルトの名無しさん
2010/10/03(日) 20:40:59emacsユーザーもvimユーザーも妙な使い込みをしてるので自身のエディタにそんなに不満がない
pythonの統合開発環境ってEclipseもPysSripterも微妙で結局エディタに戻るよな
0478デフォルトの名無しさん
2010/10/03(日) 20:45:420479デフォルトの名無しさん
2010/10/04(月) 00:17:25単純なコーディングだけでは最高な環境なんだよな。
実際に動かしながら書けるってIDEや大規模じゃ難しい
WinでNotepad++とDOS窓でやったけど気が狂いそうだった。
0480デフォルトの名無しさん
2010/10/04(月) 00:22:37Pythonはたしかに微妙だな
0481デフォルトの名無しさん
2010/10/04(月) 00:57:520482デフォルトの名無しさん
2010/10/04(月) 02:30:46わざわざ使い方入門なんてしないだろうとは思う <unix由来の二つ
0483デフォルトの名無しさん
2010/10/04(月) 02:34:330484デフォルトの名無しさん
2010/10/04(月) 03:02:340485デフォルトの名無しさん
2010/10/04(月) 03:25:150486デフォルトの名無しさん
2010/10/04(月) 23:01:010487デフォルトの名無しさん
2010/10/05(火) 01:51:340488デフォルトの名無しさん
2010/10/06(水) 07:21:51つまりPythonの言語仕様や考え方をとことん詰め込んだ本
0489デフォルトの名無しさん
2010/10/06(水) 07:45:540490デフォルトの名無しさん
2010/10/06(水) 08:53:51エキスパートPythonはもう読んだ?
0491デフォルトの名無しさん
2010/10/06(水) 09:43:30Django のソースとか読んでみたらどう?
0492デフォルトの名無しさん
2010/10/06(水) 10:19:260493デフォルトの名無しさん
2010/10/06(水) 14:44:040494デフォルトの名無しさん
2010/10/06(水) 15:46:520495デフォルトの名無しさん
2010/10/06(水) 16:20:14でも良書の言語になるのは良いじゃん
0496デフォルトの名無しさん
2010/10/06(水) 18:38:510497デフォルトの名無しさん
2010/10/07(木) 00:03:430498デフォルトの名無しさん
2010/10/09(土) 18:01:14ttp://www.pyside.org/
PySide(QTというGUIツールキットをPython から使用するためのライブラリ)
フリーでライセンス緩いらしい(PyQtはフリーと商用版があってGPL)
ttp://www.pyside.org/docs/pyside/
リファレンスページ
ttp://qt.gitorious.org/pyside/pyside-examples/trees/master/examples
実例ソースのページ
0499デフォルトの名無しさん
2010/10/09(土) 19:29:120500デフォルトの名無しさん
2010/10/09(土) 21:36:30よくやった
感動はしない
0501デフォルトの名無しさん
2010/10/10(日) 01:03:340502デフォルトの名無しさん
2010/10/11(月) 15:07:36./hage/fuga.py
上記のディレクトリ構造で、
fuga.pyからhogeをimportしたい場合はどうすればいいですか?
今はsys.pathに"../"を追加してるんですけど、これはpythonの流儀的にOK?
0503デフォルトの名無しさん
2010/10/11(月) 16:22:410504デフォルトの名無しさん
2010/10/11(月) 16:59:39>>502の方法でOKだよ。
ただし、 "../" はカレントディレクトリからの相対パスなんで、
import os
import sys
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
っていう手もある。
単純に1ファイルimportしたいだけなら、パスを設定する代わりに imp.load_module を使うという手もある。
0505デフォルトの名無しさん
2010/10/11(月) 17:10:06メインプログラム(?)はhoge.pyかまたはhoge.pyと同じディレクトリにあるんでしょう
だったら、fuga.pyがモジュールで単独実行しない限り fuga.pyの中で import hoge でOKじゃない?
テストなどで fuga.py を単独実行させるのなら PYTHON_PATH を設定すればいいと思う
0506デフォルトの名無しさん
2010/10/11(月) 21:44:290507デフォルトの名無しさん
2010/10/11(月) 21:52:120508デフォルトの名無しさん
2010/10/11(月) 21:52:290509デフォルトの名無しさん
2010/10/11(月) 22:23:13Xファイル懐かしいな
0510デフォルトの名無しさん
2010/10/11(月) 23:05:050511デフォルトの名無しさん
2010/10/11(月) 23:36:240512デフォルトの名無しさん
2010/10/12(火) 15:30:130513デフォルトの名無しさん
2010/10/12(火) 17:37:12面白いw
0514デフォルトの名無しさん
2010/10/13(水) 11:29:55出力するだけの簡単なプログラムを書いたらテーブル内容を
全部メモリに読もうとしてプロセス太りまくって死亡w
デフォルトが全部メモリにためこんでからとか作った奴馬鹿か?
0515デフォルトの名無しさん
2010/10/13(水) 11:58:43connection から excute しろよ馬鹿
0516デフォルトの名無しさん
2010/10/13(水) 12:05:40最新版のMySQLdbとカーソルオブジェクトをちゃんと使えば大丈夫なハズ。
0517デフォルトの名無しさん
2010/10/13(水) 12:29:070518デフォルトの名無しさん
2010/10/13(水) 17:45:52raw inputじゃ文字列はいけても、数値はダメみたいだし
方法を教えてけれ
0519デフォルトの名無しさん
2010/10/13(水) 17:58:23数値に変換すればいいんじゃねーの?
0520デフォルトの名無しさん
2010/10/13(水) 18:02:53x = int(input())
0522デフォルトの名無しさん
2010/10/13(水) 18:16:02>Cなら簡単なのに
kwsk
0523デフォルトの名無しさん
2010/10/13(水) 18:26:200524デフォルトの名無しさん
2010/10/13(水) 18:38:520525デフォルトの名無しさん
2010/10/13(水) 18:39:430526デフォルトの名無しさん
2010/10/13(水) 20:46:12INPUT "年齢を入力してください。";nenrei
な時代が長かった。
0527デフォルトの名無しさん
2010/10/14(木) 01:12:24scanf()なんて恐ろしくてとても使えません
0528デフォルトの名無しさん
2010/10/14(木) 01:23:350529デフォルトの名無しさん
2010/10/14(木) 02:22:11結局、ネタに飢えたキチガイの書き込みでしか無かった。
今だにそんなキチガイが生きてるんだなと思った。
0530デフォルトの名無しさん
2010/10/14(木) 04:01:10ああ、馬鹿には使えない
0531デフォルトの名無しさん
2010/10/14(木) 05:55:21実際、%sは危険かもしれないけど%dは便利だったし、使ってはいけない関数じゃなくて使いどころ次第だった。
0532デフォルトの名無しさん
2010/10/14(木) 06:29:32一応今は scanf_s というのがあって %s でも安全に使えるようにはなって
いる。(普通は fgets 使うだろうけど)
普通は scanf だとエラー処理が難しいので fgets して sscanf するわけで、
手間は Python と変わらない。
0533デフォルトの名無しさん
2010/10/14(木) 08:43:11エキスパートさんお疲れさまです。参考になります。
0534デフォルトの名無しさん
2010/10/14(木) 10:15:08%s
がgets()のように危険だけど
%[255]s
のように使えばいいので、scanf()はgets()とは違ってセキュリティ上の
問題を回避不可能な関数じゃないよね
素人が陥りやすい罠はscanf()の戻り値を見ないことなんだが
getc()やfgets()だって戻り値を見ないで回せば無限ループになるだけなのに
なぜかscanf()は戻り値を見ない初心者向けのサンプルが横行していた
scanf()でのエラー処理ではrewind()しろ、などという環境依存の対処法が
横行しているのも特徴だ
こういう色々な理由で「馬鹿には使えない関数だから使わせるな」
といわれていたのがscanf()
ま、そんなわけだから、>>527や>>528のように思われているぐらいがいいのかもな
0535デフォルトの名無しさん
2010/10/14(木) 10:16:08×%[255]s
○%255s
だね、ごめん
0536デフォルトの名無しさん
2010/10/14(木) 13:15:290537デフォルトの名無しさん
2010/10/14(木) 19:05:440538デフォルトの名無しさん
2010/10/14(木) 20:12:38Python\Lib\random.pyに
General notes on the underlying Mersenne Twister core generator:
と書いてある
0539デフォルトの名無しさん
2010/10/14(木) 21:22:28これだけ偉そうに語った>>534ですら間違える書式指定。
馬鹿には使えないのは確かなようだ。
0540デフォルトの名無しさん
2010/10/15(金) 01:05:500541デフォルトの名無しさん
2010/10/15(金) 01:28:47馬鹿か。w
Pythonの変態仕様に、今頃喰いつくなよ。w
0542デフォルトの名無しさん
2010/10/15(金) 01:35:470543デフォルトの名無しさん
2010/10/15(金) 01:38:01もしくはインデント
0544デフォルトの名無しさん
2010/10/15(金) 01:38:360545デフォルトの名無しさん
2010/10/15(金) 01:39:190546デフォルトの名無しさん
2010/10/15(金) 01:45:580547デフォルトの名無しさん
2010/10/15(金) 01:46:18コレは勉強になるwb
0548デフォルトの名無しさん
2010/10/15(金) 04:04:060549デフォルトの名無しさん
2010/10/16(土) 01:12:442chのオフサイドルール
0550デフォルトの名無しさん
2010/10/16(土) 17:25:14thxです
このプログラムはライブラリとして書いてて、
hoge.pyがメインモジュールです。
hoge内で、fugaをimportしてるのですが、
fuga内からもhogeを参照する必要がでてきてしまいまして・・・
さらにfuga.py内に
if __name__ == "__main__":
Test();
みたいな単体テストコードも書いてて、
fuga.pyだけで動かしたい場合に困ってました。
とりあえず../を未だに使ってますが、
リリースする際とかはまずいですか?
0551デフォルトの名無しさん
2010/10/16(土) 17:26:21>>503 >>504 >>505
0552デフォルトの名無しさん
2010/10/17(日) 03:15:57;は不要
0553デフォルトの名無しさん
2010/10/17(日) 21:32:40プログラミング言語Pythonでは、メタ構文変数に spam, ham, eggs などを使う。
これは Python という名前自体が、モンティ・パイソンにちなんで名付けられたことにちなむ。
spamとモンティ・パイソンの関係についての詳細はモンティ・パイソンとスパムにある。
http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%BF%E6%A7%8B%E6%96%87%E5%A4%89%E6%95%B0#spam.E3.81.A8ham
( ・∀・)つ〃∩ へぇ〜
0554デフォルトの名無しさん
2010/10/18(月) 11:53:45│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0555デフォルトの名無しさん
2010/10/19(火) 17:02:270556デフォルトの名無しさん
2010/10/19(火) 17:04:220557デフォルトの名無しさん
2010/10/19(火) 18:00:130558デフォルトの名無しさん
2010/10/19(火) 18:06:47C言語とPerlの基本文法は覚えて、小さなツールを作っている程度の知識です。
0559デフォルトの名無しさん
2010/10/19(火) 18:15:120560デフォルトの名無しさん
2010/10/19(火) 18:22:400561558
2010/10/19(火) 18:26:39>>559
公式チュートリアルとは
http://www.python.jp/Zope/intro/instant_python_jp
これでしょうか?
PER8はwikiもみたのですが、どのサイトかわかりませんでした。
URIを教えていただけませんか?
0562デフォルトの名無しさん
2010/10/19(火) 18:31:46Python チュートリアル
http://www.python.jp/doc/2.5/tut/tut.html
PEP 8 -- Style Guide for Python Code
http://oldriver.org/python/pep-0008j.html
0563デフォルトの名無しさん
2010/10/19(火) 18:40:50http://pythonjp.sourceforge.jp/dev/
0564デフォルトの名無しさん
2010/10/19(火) 19:02:55ttp://giraffe.topaz.ne.jp/wiki/doku.php/py:python_curriculum
ttp://vipprog.net/wiki/prog_lang/python.html
ttp://www.python-izm.com/
ttp://www.pythonweb.jp/tutorial/
ttp://psyto.s26.xrea.com/python/PQR2.4/PQR2.4.ja.html
0565デフォルトの名無しさん
2010/10/19(火) 19:06:59公式のドキュメントを見ながら、コーディングすれば普通に覚えられる。
特定のライブラリ・ドキュメント、あるいは言語学習のススメみたいなものは自分で探すべき。
Pythonの紹介
http://www.python.jp/Zope/intro/index_html
Instant Python
http://www.python.jp/Zope/intro/instant_python_jp
Instant Hacking
http://www.python.jp/Zope/intro/instant_hacking_jp
Python 和訳ドキュメント
http://www.python.jp/doc/
ドキュメントインデクス(HTML版オンラインドキュメント)
http://www.python.jp/doc/release/index.html
0566デフォルトの名無しさん
2010/10/19(火) 21:28:23PEP 8 のチェックツールとして pyLint はなかなかよい
0567デフォルトの名無しさん
2010/10/19(火) 21:52:01まぁ、馬鹿はテンプレ見ないっすけど。w
0568デフォルトの名無しさん
2010/10/19(火) 23:43:540569デフォルトの名無しさん
2010/10/20(水) 01:11:39んじゃ今一番ホットな場所ってどこなの?
0570デフォルトの名無しさん
2010/10/20(水) 01:12:480571デフォルトの名無しさん
2010/10/20(水) 01:15:560572デフォルトの名無しさん
2010/10/20(水) 01:18:14始めて数週間だけどPython面白いな。
0573デフォルトの名無しさん
2010/10/20(水) 01:22:05ホットなところは新規がどんどん入るから厨臭い
楽しめない奴はどこだって楽しめないものさ
0574デフォルトの名無しさん
2010/10/20(水) 02:09:330575デフォルトの名無しさん
2010/10/20(水) 04:58:40http://docs.python.org/tutorial/
http://docs.python.org/release/3.0.1/tutorial/
英語で勉強してみようと思うのですが、
今読むとしたら、Python 2.7 用か Python 3.0 用の
どちらを読んだ方が良いですか?
0576デフォルトの名無しさん
2010/10/20(水) 05:28:560577572
2010/10/20(水) 08:56:14俺はとりあえず2.6で読むよりは主にコードを書いてた(他の言語やってたので)。
期間は2週間ほど。その間の情報収集は日本語のWeb情報のみ。
何となく分かったので今はエキスパートPythonプログラミング読んでる。
英語もたまに見る。
0578デフォルトの名無しさん
2010/10/20(水) 09:15:100579デフォルトの名無しさん
2010/10/20(水) 09:40:36お前が答えられなかったからじゃね?
0580デフォルトの名無しさん
2010/10/20(水) 09:41:410581デフォルトの名無しさん
2010/10/20(水) 10:20:33散々既出な質問だが...
「何のためにPythonやりたいのか?」それに尽きる。
2.xの方がライブラリはずっと充実しているので、実用的な目的でPythonやるなら2.xがいい。
ただし文字列処理は3.xでは完全にUnicode化されていて日本語が扱いやすいので、
ライブラリはあんまりどうでもよくて(or 3.xでも対応してて)文字列を扱う処理が多いときは3.xでもいいかもしれない。
何が出来るとかどうでもよくて、プログラミング言語を習得したいのなら、3.xでいい。
このレスに書いてあることがよくわからないなら、2.xにしとくといい。
0582デフォルトの名無しさん
2010/10/20(水) 11:14:170583デフォルトの名無しさん
2010/10/20(水) 13:53:060584575
2010/10/20(水) 15:09:26ありがとうございます。
> 何が出来るとかどうでもよくて、プログラミング言語を習得したいのなら、3.xでいい。
2.x にしとこうかな…
0585デフォルトの名無しさん
2010/10/20(水) 15:11:130586デフォルトの名無しさん
2010/10/20(水) 15:13:110587デフォルトの名無しさん
2010/10/20(水) 15:16:32http://www.swaroopch.com/notes/Python
こっちも無料だし2.xと3.xに分かれてるし
0588デフォルトの名無しさん
2010/10/20(水) 15:16:580589デフォルトの名無しさん
2010/10/21(木) 00:14:420590デフォルトの名無しさん
2010/10/23(土) 03:35:190591デフォルトの名無しさん
2010/10/23(土) 03:51:21これが良かった希ガス
ttp://www.amazon.co.jp/dp/4798026557/
0592デフォルトの名無しさん
2010/10/23(土) 04:03:04Webだけで十分だよ
注意すべき点は・・・
・代入は値のコピーでなく参照するためのラベルを付ける行為
・クラスのアトリビュートとミュータブルなオブジェクトの関係
この2点に気をつければ他の言語を理解できる人が躓く事はないと思う
0593デフォルトの名無しさん
2010/10/23(土) 04:32:240594デフォルトの名無しさん
2010/10/23(土) 05:07:54注意すべき点の一点目は実は全部ポインタで扱ってるってことですか?C的な意味で
0595デフォルトの名無しさん
2010/10/23(土) 06:28:12具体的に
>>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 になった。
0596デフォルトの名無しさん
2010/10/23(土) 06:43:15なるほど、詳しい説明ありがとうございます
はじめのほうで説明欲しい事実ですね
0597デフォルトの名無しさん
2010/10/23(土) 07:16:48嘘が書いてあるWebサイトを信用してたから
u'ほげほげ' と書けば utf-8 になると思ってた orz
0598デフォルトの名無しさん
2010/10/23(土) 07:39:00java
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
0599デフォルトの名無しさん
2010/10/23(土) 07:49:36だから、「非プリミティブ型」の == や is だって。 1 や 1.0 はプリミティブ型だから違う。
== が同一性チェックで、 equals が同値チェックっていう意味で、それぞれPythonの
isと==だと言った。
FlaotとIntegerで1と1.0を同値として扱うか扱わないかはまた別の問題。
結果だけ見ないで、意味を考えて。
0600デフォルトの名無しさん
2010/10/23(土) 08:10:22Float f = new Float(1.0);
System.out.println(i == f); // コンパイルエラー
0601デフォルトの名無しさん
2010/10/23(土) 08:13:47Integer 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
0602デフォルトの名無しさん
2010/10/23(土) 08:26:44理由もなく他者をおとしめたとしても、売れない書籍が売れるようになるものなのでしょうか。
0603デフォルトの名無しさん
2010/10/23(土) 09:17:560604デフォルトの名無しさん
2010/10/23(土) 10:57:32うん
もっと近いのは参照(リファレンス)みたいなもの(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."]
こんな事が起こっちゃう
0605デフォルトの名無しさん
2010/10/23(土) 11:13:470606デフォルトの名無しさん
2010/10/23(土) 11:16:220607デフォルトの名無しさん
2010/10/23(土) 12:10:13それは、クラス変数の期待する結果だと思うが。
0608590
2010/10/23(土) 12:23:090609デフォルトの名無しさん
2010/10/23(土) 12:26:100610デフォルトの名無しさん
2010/10/23(土) 12:35:11ちゃんと説明してある本なら平気
ただ参照渡しとかうっかり書いてある本だと死ぬ
0611デフォルトの名無しさん
2010/10/23(土) 13:15:44つまりJython本最高ですねわかります
0612デフォルトの名無しさん
2010/10/23(土) 14:23:36そんな知識で大丈夫か?
0613デフォルトの名無しさん
2010/10/23(土) 15:22:04>>610
> 参照渡しとかうっかり書いてある本だと死ぬ
のはどうして?
型によって値渡しと参照渡しが変わるという認識なんだけど、例えばどんなことで死ねるの?
0614デフォルトの名無しさん
2010/10/23(土) 15:38:20などと意味不明なことを述べており…
0615デフォルトの名無しさん
2010/10/23(土) 15:39:00俺も>>607と同意かな
他の言語の経験者相手の話なら、クラスフィールドがインスタンス間で共有されるのは
言うまでもない当然のことで、mutable云々は余計なお世話
> 型によって値渡しと参照渡しが変わるという認識
それが間違っているから、でしょう
0616デフォルトの名無しさん
2010/10/23(土) 15:49:31やべ、頭の弱い子に触れちゃったw
0617デフォルトの名無しさん
2010/10/23(土) 16:41:47だいたいは値型の値渡しか参照型の値渡し
0618デフォルトの名無しさん
2010/10/23(土) 17:17:20もっと勉強しろよ
あきらかに経験不足だぞお前
0619デフォルトの名無しさん
2010/10/23(土) 18:49:19これに気づかなかったら、>>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
0620デフォルトの名無しさん
2010/10/23(土) 18:55:41正確には参照渡しではなく参照の値渡し…つまり
つまりオブジェクトのIDみたいなものを値渡ししてるだけで
変数そのものは渡ってない、という話だと思うぞ
本来の意味の参照渡しなら変数そのものが渡って
引数に対する操作はそのまま渡された変数に対する操作になるからね
0621デフォルトの名無しさん
2010/10/23(土) 19:03:19インスタンス変数の要素に代入された場合は、インスタンス変数のテーブルに書き込むって処理になるんだろうけど。
Python的解釈では、(たとえimmutableであっても)変数名はラベルでしかないのだから、
______________
hoge1.num ---->| 0 |
hoge2.num ---->|____________|
だったのが、=演算子で新たな値を束縛したから、
______________
| 0 |
hoge2.num ---->|____________|
hoge1.num ---->[ 1 ]
になった、と考える。ls2についても同様。
ls1は、ポインタ分かるなら書かなくても分かるだろう。
=演算子は代入じゃなく、値の束縛というのがPythonでは重要。
0622デフォルトの名無しさん
2010/10/23(土) 19:15:38なるほどよく分かった、ありがとう
0623デフォルトの名無しさん
2010/10/23(土) 19:30:40> クラスフィールドがインスタンス間で共有されるのは
> 言うまでもない当然のことで
お前がそう思うんならそうなんだろう、お前ん中ではな
0624デフォルトの名無しさん
2010/10/23(土) 21:57:20ttp://coreblog.org/ats/jim-hugnin-left-microsoft-going-to-google
ttp://opcdiary.net/?p=4466
0625デフォルトの名無しさん
2010/10/23(土) 21:57:350626デフォルトの名無しさん
2010/10/23(土) 22:06:27IronPython使えよこの野郎っていう意思表示だなこれは
0627613
2010/10/23(土) 22:13:15言ってることは「なんとなく」わかるけど、実際の動作や概念的な仕様はともかく
使い方だけで考えればjavaとの対比でいって
pythonで数値を渡す -> javaでprimitiveな型の値を渡す感じ
pythonでリストを渡す -> javaのStringBufferを渡す感じ
pythonでタプルを渡す -> javaのStringを渡す感じ
みたいに考えていいんだよね?
であれば、数値は値渡しで、リスト・タプルは参照渡しみたいに考えると
諸々含めてスッキリするんだけど、やっぱり数値の0もオブジェクトみたいに
考えないとどこかで違いが出てきて困ったりするの?
0628デフォルトの名無しさん
2010/10/24(日) 03:11:09だからそれは参照型の値渡しな
0629デフォルトの名無しさん
2010/10/24(日) 10:09:04> 数値の0もオブジェクトみたいに考えないと
Javaはしらんのだが、渡し型とオブジェクトかどうかは関係あるのか?
けど、数値もオブジェクトだよ。
>>> isinstance(1, object)
True
>>> 1 .__add__(2)
3
0630デフォルトの名無しさん
2010/10/24(日) 10:13:50call by object-sharing なので、オブジェクトがミュータブルオブジェクトの場合、
値を変えることができるわけ。
数値はイミュータブルオブジェクト。
0631デフォルトの名無しさん
2010/10/24(日) 10:19:410632デフォルトの名無しさん
2010/10/24(日) 10:24:25pythonで数値、タプルを渡す -> javaのStringを渡す感じ
pythonでリストを渡す -> javaのStringBufferを渡す感じ
>>629
Javaはオブジェクトかどうかで渡し方が決められてる(非オブジェクト→値渡し、オブジェクト→参照の値渡し)
あとJavaも実際には「参照渡し」はない。用語としては使われるけど参照の値渡しの意味
0633デフォルトの名無しさん
2010/10/24(日) 10:36:250634デフォルトの名無しさん
2010/10/24(日) 10:47:42Pythonではそこ重要だよ。
変に参照渡しだからとか考えるよりも>>630のように考えた方が挙動を一番きれいに説明できる。
0635デフォルトの名無しさん
2010/10/24(日) 10:50:410636デフォルトの名無しさん
2010/10/24(日) 10:51:01つまり仮引数と実引数の「値」が同じだけでなく、同じ左辺値(いれもの)を指してる
ただの別名
Cは全部値渡しだが、ポインタを使って似たことはできる
JavaやPythonは値渡しでポインタやリファレンスもないから、2つの変数の値を交換する
swap()のような関数は書けないぞ
0637デフォルトの名無しさん
2010/10/24(日) 10:52:580638デフォルトの名無しさん
2010/10/24(日) 10:54:43確かめるのは簡単
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]のまま
0639デフォルトの名無しさん
2010/10/24(日) 11:04:020640デフォルトの名無しさん
2010/10/24(日) 11:09:15この低能には、正しい用語と定義を理解することはできない。
0641デフォルトの名無しさん
2010/10/24(日) 11:11:070642デフォルトの名無しさん
2010/10/24(日) 11:17:530643デフォルトの名無しさん
2010/10/24(日) 11:18:130644デフォルトの名無しさん
2010/10/24(日) 11:19:08慣れないうちや参照渡し以外も使える言語の経験が長いとあるとわからないでもないぞ
0645デフォルトの名無しさん
2010/10/24(日) 11:26:300646デフォルトの名無しさん
2010/10/24(日) 11:29:13オレ定義が優先されるという奴とは会話がなりたたない。
0647デフォルトの名無しさん
2010/10/24(日) 11:29:560648デフォルトの名無しさん
2010/10/24(日) 11:33:22どうせ盛り上げて視聴率取れれば良いから
話の整合性とか落としどころとかそんなの考えてない
0649デフォルトの名無しさん
2010/10/24(日) 11:44:030650デフォルトの名無しさん
2010/10/24(日) 12:10:29引数の渡し方に関する「参照渡し」を区別することが、
そんなに敷居が高いこととも思えないのだが。
つうか、値渡し以外知らない人って、そんなに多いのかな?
0651デフォルトの名無しさん
2010/10/24(日) 12:49:49とりあえずあることだけはハケーンしたんだが。
0652620
2010/10/24(日) 13:39:08考える)と参照渡しの違い程度なので正直意識的に区別せずとも本能的に区別できる。
だからそれを区別できないと使い方で困るケースは現実的にないように思う。
数値リテラルなどがオブジェクトとして扱われる言語は昔から結構あるけど、
普段それを意識しなくても使えると思う。理由はCの数値リテラルと同様な値渡しと
考えて問題がないから。
言い方悪いけど、欲しい回答と違う回答しか出てこないので明確にいうと
「実際の動作や概念的な仕様はどうでもいい」。
使い方だけで考えて、どこかで違いが出てきて困ったりする具体的なケースを教えてほしい。
(620以降自分のレスはこれが最初)
0653デフォルトの名無しさん
2010/10/24(日) 13:43:050654デフォルトの名無しさん
2010/10/24(日) 13:47:14(653以降自分のレスはこれが最初)
0655デフォルトの名無しさん
2010/10/24(日) 14:00:03引数に代入したら参照渡しなら呼び出し側の変数が変わるし
参照の値渡しなら変わらないのだから、それは違うものだろ
要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)
タプルを返せるのだから、別に困りはしないが
ごく単純な話なのに、そんな長文で一体何がいいたいんだ?
0656デフォルトの名無しさん
2010/10/24(日) 14:04:360657デフォルトの名無しさん
2010/10/24(日) 14:18:17> 引数に代入したら参照渡しなら呼び出し側の変数が変わるし
> 参照の値渡しなら変わらないのだから、それは違うものだろ
>>652に書いてあるように、そこは本能的に分かるから使い方的にはわざわざ
区別する必要ないと思うんだ。
> 要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)
> タプルを返せるのだから、別に困りはしないが
リストや辞書などは使えるが返すほうが良いと思うけど、それは無関係な話
> ごく単純な話なのに、そんな長文で一体何がいいたいんだ?
>>627の話
0658デフォルトの名無しさん
2010/10/24(日) 14:41:35Pythonのimmutableなオブジェクトも全部同じグループに入る
デザパタで言うValue Object
が、>>627はintとStringを区別しているのだから、それを区別したいのなら、
Pythonの数値やstrやタプルは全部JavaのStringと同じグループに入り、
Javaのintに相当するものはPythonには存在しない
0659デフォルトの名無しさん
2010/10/24(日) 14:51:26>>652に書いたとおり「実際の動作や概念的な仕様はどうでもいい」ので同じグループに入れる必要はない。
概念的に何に適合するかではなく使い方的にどう困るかを教えてほしい。
例えばJavaのintに相当すると仮に考えた場合にどう困るかということ。
0660デフォルトの名無しさん
2010/10/24(日) 14:56:21端的に言えばJavaのintはオブジェクトではないので、
スタック上に配置されるし、Objectを継承していないし、メソッドを持たないし、
ジェネリックスのパラメータにできないし、
組み込み配列以外のコンテナには入れられない(ので、最近はboxingを自動で
行ってくれるようになった)
Pythonのintはごく普通のオブジェクトなので、そういう差別や区別がない
0661デフォルトの名無しさん
2010/10/24(日) 14:58:410662デフォルトの名無しさん
2010/10/24(日) 15:00:460663デフォルトの名無しさん
2010/10/24(日) 15:01:290664デフォルトの名無しさん
2010/10/24(日) 15:02:14つまり困ることないってことだよね?
0665デフォルトの名無しさん
2010/10/24(日) 15:05:11仕事で使ってる方はどんな処理をパイソンでされてますか?
そんな自分はVBS使いなんですが
これもない。見るのはPHPとかC経験者募集ばかり…orz
0666デフォルトの名無しさん
2010/10/24(日) 15:13:13SPAMフィルタ
0667デフォルトの名無しさん
2010/10/24(日) 15:28:17それ参照の値渡しと参照渡しを混同しても誰も困らないじゃんって話?
0668デフォルトの名無しさん
2010/10/24(日) 15:34:29最初の3行はそういう主旨
0669デフォルトの名無しさん
2010/10/24(日) 15:36:06参照渡しと言われたのでswap書いたけど意図通りに動きませんとか。
0670デフォルトの名無しさん
2010/10/24(日) 15:37:480671デフォルトの名無しさん
2010/10/24(日) 15:38:19何で混同していいという話なのか分からんな
まあ自分でそう思いたいだけならどうぞって感じだが
C#でもclassに関しては参照の値渡し(call by sharing)になるが
わざわざrefやoutパラメータでcall by referenceも出来るようにしてあるわけだが
0672デフォルトの名無しさん
2010/10/24(日) 15:39:14そのインプットした値に応じて処理とかって作れますか?
0673デフォルトの名無しさん
2010/10/24(日) 15:40:360674デフォルトの名無しさん
2010/10/24(日) 15:56:02>>652に書いたようにそれができないのは本能的に分かるからいいんだよ。
実際のところ正確な参照渡しがデフォルトの言語ってあまりないし。
>>671
しかしあまり使用しないでしょう?
言いたい内容は分かるんだけど今の話はそういう話じゃなくて、説明上、値渡しと
参照渡しだけでいいんじゃないかと。Cのポインタも参照渡しでいいよね?
値渡しですって説明したら値渡しの説明に困らないかい?
そういう意味から、Pythonの渡し方は参照渡しでいいんじゃないかとそう言ってます。
0675デフォルトの名無しさん
2010/10/24(日) 16:01:57そもそも本能的に分かるからいいって主張が間違ってる例が>>669だな。
0676デフォルトの名無しさん
2010/10/24(日) 16:04:40いや自分ならそれは普通できないだろうと思うから、最初からそんなことしない
そんなことないの?
0677デフォルトの名無しさん
2010/10/24(日) 16:05:290678デフォルトの名無しさん
2010/10/24(日) 16:06:27Pythonみたいな奴はcall by sharingと最近は呼ばれるようだから、
call by valueと区別したいのなら、単にそう呼べばいいだけ
> 値渡しですって説明したら値渡しの説明に困らないかい?
全然困らないだろ
0679デフォルトの名無しさん
2010/10/24(日) 16:10:26本当にcall by referenceを理解できているのか疑わしい。
0680デフォルトの名無しさん
2010/10/24(日) 16:11:45それはお前の場合だけ
参照渡しがデフォルトの言語というものはある(FORTRANやVBなど)
そして参照渡しというものがどういうものかを正しく知っている人間なら、
参照渡しと言われれば、そのようなものだと考える
「自分なら〜」とかいう自分の都合だけで、誤った用語を広めるな
0681デフォルトの名無しさん
2010/10/24(日) 16:22:34それだと参照の値渡しと区別が付かない。
0682デフォルトの名無しさん
2010/10/24(日) 16:25:01> 要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)
def append_zero(li):
return li.append(0)
a = []
append_zero(a)
print a # ==> [0]
0683デフォルトの名無しさん
2010/10/24(日) 16:27:56>>638はPythonが「参照渡しではない」ことを確かめる例なのだから、
「参照の値渡しかどうか」が分からなくてもよいのでは
0684デフォルトの名無しさん
2010/10/24(日) 16:31:50> Pythonみたいな奴はcall by sharingと最近は呼ばれるようだから、
> call by valueと区別したいのなら、単にそう呼べばいいだけ
だから「実際の動作や概念的な仕様はどうでもいい」んだってば。
> > 値渡しですって説明したら値渡しの説明に困らないかい?
> 全然困らないだろ
ではどう説明するの?
>>680
VBは大昔だったので失念してた。でもintを普通に渡ししてたらByValだろゴラ!だったよ。
誤った用語を広めたいとは思わないけど、正確であることにあまり意義を見出せない。
0685デフォルトの名無しさん
2010/10/24(日) 16:36:07>> > 値渡しですって説明したら値渡しの説明に困らないかい?
>> 全然困らないだろ
> ではどう説明するの?
値渡しだからコピーだが、Pythonの場合、値はオブジェクトインスタンスへの参照
なので、symbolic linkをコピーしたのと同じ
リンクがコピーされるだけで、指してる実体は同じ
そんだけの話だろ
0686デフォルトの名無しさん
2010/10/24(日) 16:37:340687デフォルトの名無しさん
2010/10/24(日) 16:39:00ここで話にでてる参照渡しが、本当の意味の参照渡しか参照の値渡しかは微妙なところだぜ。
さらに http://www.python.jp/doc/release/ref/assignment.html の
> 代入文 は、名前を値に (再) 束縛したり、 変更可能なオブジェクトの属性や要素を変更したりするために使われます:
を考えると、さらに微妙になる。
Pythonでの代入文の挙動は、中身の置き換えではないから、
仮に参照であったとしても、その「名前」を「再束縛」したときの挙動が、
必ずしも「名前」の値を置き換えたものになるとは解釈できない。
0688デフォルトの名無しさん
2010/10/24(日) 16:40:34> 「実際の動作や概念的な仕様はどうでもいい」
じゃあ何が知りたいの?
魔法でなんとかなるって説明でいい?
0689デフォルトの名無しさん
2010/10/24(日) 16:41:500690デフォルトの名無しさん
2010/10/24(日) 16:42:090691デフォルトの名無しさん
2010/10/24(日) 16:42:11> 値渡しだからコピーだが、Pythonの場合、値はオブジェクトインスタンスへの参照
めんどくさいの湧くことははっきりしてるんだから、参照の意味はっきりさせろ。
Cでいうポインタ渡し的な意味で、参照の値渡しってことでいいんだな?
0692デフォルトの名無しさん
2010/10/24(日) 16:44:22みんな、call by referenceな言語を使ったことないのか?
0693デフォルトの名無しさん
2010/10/24(日) 16:44:44Pythonの仕様って話だったら、call by sharingが正しい。
CPythonの具体的な動作って話だったら、ソース読めば分かるが、Cで書かれてるんだからきっとcall by valueだろう。
0694デフォルトの名無しさん
2010/10/24(日) 16:45:06え、Pythonの場合、代入は普通に破壊的で、中身の置き換えでしょ?
変数の中身は「インスタンスへの参照」なので、「インスタンス」には
影響がないというだけで
>>> x = 0
>>> def f(): return x
...
>>> f()
0
>>> x = 1
>>> f()
1
関数型だと、言語によっては2度目のf()が0を返すものもあるよね
0695デフォルトの名無しさん
2010/10/24(日) 16:46:06じゃあcall by referenceにおいて値の入れ替えではなく、束縛って何なのよ?
少なくとも、値の束縛って概念のあるcall by referenceな言語は使ったことが無いな。
0696デフォルトの名無しさん
2010/10/24(日) 16:52:030697デフォルトの名無しさん
2010/10/24(日) 16:52:30>>688>>693 実際の使い方において>>627の仮定で困るケース
0698デフォルトの名無しさん
2010/10/24(日) 16:54:16なんだこいつ
今度はもっとお母さんみたいに言ってくれとかいいそうだな
0699デフォルトの名無しさん
2010/10/24(日) 16:57:27破壊も何も、名前の束縛こそ本質。
そのコードはf()を呼び出したときにxが再評価されてるだけだよ。
もちろん、実装としては中身の置き換えだけど、概念としては。
0700デフォルトの名無しさん
2010/10/24(日) 17:00:20いやだから、
> 必ずしも「名前」の値を置き換えたものになるとは解釈できない。
とか言ってたけど、これが中身の置き換え以外の何だというの
0701デフォルトの名無しさん
2010/10/24(日) 17:07:15変数に中身なんてないよ。
0702デフォルトの名無しさん
2010/10/24(日) 17:25:28Cだと変数はメモリ上のブロック(Cではobjectと呼ぶ)につけられた
名前で、そのメモリブロックに書かれている2進数の列が
まさに変数の中身であり値だが、Pythonは変数モデル自体が違うよ
と言いたいわけね?
確かにそれは違う
俺はPythonのシンボルテーブルにおいて、名前に紐づいているオブジェクトIDを
変数の値と表現しているだけ
名前に対応するオブジェクトIDのスロットがあるのだから、一般的な
箱と中身モデルで話しても比喩としては差し支えないと思うけど
0703デフォルトの名無しさん
2010/10/24(日) 18:08:43それ
> 言いたい内容は分かるんだけど今の話はそういう話じゃなくて、説明上、値渡しと
> 参照渡しだけでいいんじゃないかと。Cのポインタも参照渡しでいいよね?
> 値渡しですって説明したら値渡しの説明に困らないかい?
って話だからPythonじゃ全く回答になってないんだよ
0704デフォルトの名無しさん
2010/10/24(日) 18:16:53箱と中身モデルで考えることもできるだろうし、実装はCだから箱と中身モデルなんだけど、
PythonがPythonなりの変数モデルを目指して設計されている以上、
他のモデルで語る必要性っていうのが分からない。
(他の言語の変数モデルで置き換える方法を探るのは、処理系実装者の仕事だろう、と思う)
完全に別モデルで考えることがそう簡単にはできないからこそ、こんだけレスが付いてスレが読みづらくなったんだと思うし、
別のモデルに置き換えるのなら、変数の渡し方だけじゃなくて、=の意味とかも定義しないと意味をなさない気がする。
それに、今後の実装によって別のモデルとPythonのモデルで齟齬が出たときに当然優先されるのはPythonのモデルだし、
明確な矛盾までは出なくても「気持ち悪い、Pythonらしくない」という評価はPythonのモデルを元に行われるから、
そこらへんのニュアンスまで含めて数学的に等価なモデルじゃないと、面倒な思いをする可能性がある。
0705デフォルトの名無しさん
2010/10/24(日) 18:19:40なるほど了解した
0706デフォルトの名無しさん
2010/10/24(日) 18:22:16VBに参照渡しが存在してるから?
0707デフォルトの名無しさん
2010/10/24(日) 18:22:200708デフォルトの名無しさん
2010/10/24(日) 18:25:390709デフォルトの名無しさん
2010/10/24(日) 18:28:20ましてや議論もできないよ
0710デフォルトの名無しさん
2010/10/24(日) 18:29:02pythonは値渡しです、もしくは参照の値渡しです
pythonはcall by valueです、もしくはcall by sharingです
とか説明するためのものでしょ。
あらかじめpythonのモデルがわかってるなら値渡しだのと説明する必要は全くないわけで。
わざわざpythonのモデルを使って参照渡しを再定義しようとするからややこしくなる。
0711デフォルトの名無しさん
2010/10/24(日) 18:30:02sub f { ++$_[0]; }
f($x);
とかやると、$xが書き換わるよね
0712デフォルトの名無しさん
2010/10/24(日) 18:32:150713デフォルトの名無しさん
2010/10/24(日) 18:35:28尋ねたら馬鹿には理解できないと言われました。
Pythonって誰でも簡単に扱える言語なんじゃないの?
0714デフォルトの名無しさん
2010/10/24(日) 18:38:490715デフォルトの名無しさん
2010/10/24(日) 18:40:41そうなの?
0716デフォルトの名無しさん
2010/10/24(日) 18:42:08誰でも扱う事はできるけど、考えるのは馬鹿には無理って事では?
0717デフォルトの名無しさん
2010/10/24(日) 18:43:14「また、Python は非常に習得しやすい言語で、初心者が学習するためにも
最適な言語となっています。アメリカでは Python を学習用言語とする
プログラミング教育プロジェクト CP4E(Computer Programming For
Everybody)が、DARPA(米国防衛高等研究企画庁)からの出資を得て
活動しています。」
0718デフォルトの名無しさん
2010/10/24(日) 18:44:07fizzbuzz解けない人にプログラミングは無理
0719デフォルトの名無しさん
2010/10/24(日) 18:45:330720デフォルトの名無しさん
2010/10/24(日) 18:46:39引数の渡し方についての考え方について、どういう問題があるのか聞いてるだけなんですが考えるって何?
0721デフォルトの名無しさん
2010/10/24(日) 18:48:05「引数の渡し方についての考え方について、どういう問題があるのか」を考えることだろw
0722デフォルトの名無しさん
2010/10/24(日) 18:52:42え、じゃあ全員馬鹿ってことですか?
0723デフォルトの名無しさん
2010/10/24(日) 18:53:300724デフォルトの名無しさん
2010/10/24(日) 18:54:22はい
0725デフォルトの名無しさん
2010/10/24(日) 18:55:27一件落着
0726デフォルトの名無しさん
2010/10/24(日) 18:57:370727デフォルトの名無しさん
2010/10/24(日) 19:00:51引数の渡し方についての考え方について、どういう問題があるのか教えてください。
詳細は>>627です。
0728デフォルトの名無しさん
2010/10/24(日) 19:03:180729デフォルトの名無しさん
2010/10/24(日) 19:05:53議論の対象になってるのは「引数の渡し方についての言い方」だけだと思うがな。
もし「考え方」だけに集中したいなら参照渡しと呼称するのを止めた方がいいんでね?
0730デフォルトの名無しさん
2010/10/24(日) 19:11:06馬鹿は糞して寝てろ
0731デフォルトの名無しさん
2010/10/24(日) 19:13:39そもそもが間違ってる。考え方以前の問題
そしてそれを指摘しても「有効回答がない」
全く話が進まない。
大体は分かってて用語だけ間違えてるのか、それとも本当に全く理解できてないのか
それとも全部知ってて荒らしたいだけなのか、それ以前にID出ないから偽物かもしれんし
もうスルーでいいんじゃね。
0732デフォルトの名無しさん
2010/10/24(日) 19:18:01議論が何を指しているのか分かりませんし呼称を変える必要も感じませんが、
文脈から判断できないのであれば、自分のいう値渡しをA、参照渡しをBとして
説明して頂いて構いません。
>>627を言い換えるなら
「pythonで数値を渡す -> javaでprimitiveな型の値を渡す感じ
pythonでリストを渡す -> javaのStringBufferを渡す感じ
pythonでタプルを渡す -> javaのStringを渡す感じ
みたいに考えていいんだよね?
であれば、数値はAで、リスト・タプルはBみたいに考えると諸々含めて
スッキリするんだけど、やっぱり数値の0もオブジェクトみたいに
考えないとどこかで違いが出てきて困ったりするの? 」
となります。
0733デフォルトの名無しさん
2010/10/24(日) 19:20:42どこが間違っているため、結論がどうなるのでしょうか?
0734デフォルトの名無しさん
2010/10/24(日) 19:22:17なんで呼称を変える必要を感じないの?
0735デフォルトの名無しさん
2010/10/24(日) 19:23:49同意。
0736デフォルトの名無しさん
2010/10/24(日) 19:27:04文脈から判断可能だと思うからです。
なお万一結論に関係しない質問なら、今はご遠慮願います。
0737デフォルトの名無しさん
2010/10/24(日) 19:28:26> 数値はAで、リスト・タプルはBみたいに考えると
数値もリストもタプルも全部同じ渡り方
分けるのなら「数値・タプル」組と「リスト」であって、その分け方はおかしい
前者はオブジェクト自体が変更されることはない(immutable)
後者はオブジェクトが変更されることが有り得る
関数呼び出しの観点で言うと、前者では関数に渡した後でオブジェクトが変わっている
心配をする必要がない
後者はある
0738737
2010/10/24(日) 19:29:29俺も以後スルーするわ
0739デフォルトの名無しさん
2010/10/24(日) 19:42:17Pythonやってる人は皆そんな失礼な方なのですか?
分け方がおかしいかどうか、ではなく、その分け方でどう具体的に問題があるのか
という点を聞いています。後半5行において、その指摘がまったくなく、その分け方
でも矛盾しないというだけの話です。
またオブジェクトが生成時にimmutableであることと、渡し方には関連がないと
考えています。違うのでしょうか?
0740デフォルトの名無しさん
2010/10/24(日) 19:46:070741デフォルトの名無しさん
2010/10/24(日) 19:47:510742デフォルトの名無しさん
2010/10/24(日) 19:50:190743デフォルトの名無しさん
2010/10/24(日) 19:52:570744デフォルトの名無しさん
2010/10/24(日) 19:56:050745デフォルトの名無しさん
2010/10/24(日) 20:12:58Wikipediaで参照渡し調べてから
JavaなんとかってMLで今をときめくセキュリティ専門家と
ポインタ完全制覇の人の瑞々しい議論を楽しんでくればいいのにと思った
暇がつぶせると思うぞ
0746デフォルトの名無しさん
2010/10/24(日) 20:27:090747デフォルトの名無しさん
2010/10/24(日) 20:33:450748デフォルトの名無しさん
2010/10/24(日) 20:37:12はい
0749デフォルトの名無しさん
2010/10/24(日) 20:37:19Pythonは初心者をバカにして楽しむ連中しかいないんだな
0750デフォルトの名無しさん
2010/10/24(日) 20:39:200751デフォルトの名無しさん
2010/10/24(日) 20:41:40そんな暇があったらもうちょっと有意義なことしようぜ
0752デフォルトの名無しさん
2010/10/24(日) 20:45:15少なくとも日本では初心者にはおすすめできないPythonってことだな
0753デフォルトの名無しさん
2010/10/24(日) 20:48:350754デフォルトの名無しさん
2010/10/24(日) 20:48:59大体目くそ鼻くそのやり取りだったと思うけどな。本人は酷く傷ついたらしい
0755デフォルトの名無しさん
2010/10/24(日) 20:50:39paramikoを使いこなせない俺
0756デフォルトの名無しさん
2010/10/24(日) 20:51:18ばーかばーか
0757デフォルトの名無しさん
2010/10/24(日) 20:58:54少なくとも日本では初心者にはおすすめできないPythonってことだな
0758デフォルトの名無しさん
2010/10/24(日) 21:00:220759デフォルトの名無しさん
2010/10/24(日) 21:07:290760デフォルトの名無しさん
2010/10/24(日) 21:27:570761デフォルトの名無しさん
2010/10/24(日) 21:34:01>>756は訂正してお詫びします
ごめんなさい
>>759
ばーか
0762デフォルトの名無しさん
2010/10/24(日) 21:42:04馬鹿なレスが許されるのは馬鹿にされる覚悟がある者だけだ
0763デフォルトの名無しさん
2010/10/24(日) 22:08:17ばーか
0764デフォルトの名無しさん
2010/10/24(日) 22:14:000765デフォルトの名無しさん
2010/10/24(日) 22:17:160766デフォルトの名無しさん
2010/10/24(日) 22:19:12パッケージエクスプローラのpythonパス上(python\lib\site-packages以下)でちゃんと認識されてるし
#@UnresolvedImport つけたら問題なく実行できて結果も正常です。
けど↑これはずすとUnresolved importってなってエラーになります。
実行はできてもコンテンツアシストが効かなくて不便なので困っています。
easy_install でパッケージを入れてからpydevの設定→インタープリターで新しく作った構成で、その後pydev自体も再起動してます。
その他のパッケージではコンテンツアシストが使えるので、easy_installだとダメってことはないようです。
助言よろしくお願いします
0767デフォルトの名無しさん
2010/10/24(日) 22:35:590768デフォルトの名無しさん
2010/10/24(日) 22:37:080769デフォルトの名無しさん
2010/10/24(日) 22:51:460770デフォルトの名無しさん
2010/10/24(日) 23:14:250771デフォルトの名無しさん
2010/10/24(日) 23:21:260772デフォルトの名無しさん
2010/10/24(日) 23:35:07pydevはおろかeclipseスレもないのに
0773デフォルトの名無しさん
2010/10/24(日) 23:36:30でインストールしたツールをアンインストールするにはどうすればよいでしょう?
0774デフォルトの名無しさん
2010/10/24(日) 23:39:34ttp://www.glamenv-septzen.net/view/373
0775デフォルトの名無しさん
2010/10/24(日) 23:50:42海外にフォーラムがあるよ
0776デフォルトの名無しさん
2010/10/24(日) 23:52:45clipse統合M30【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1280027133/
0777デフォルトの名無しさん
2010/10/24(日) 23:56:20eclipse使ってないから知らなかったけどそんな名前のスレになってたのか。
0778デフォルトの名無しさん
2010/10/25(月) 01:08:10少なくとも、関数呼び出しにおいて、数値(int, float, long)とリストとタプルに関しては、それで問題ないんじゃないの?
他の場合に関しては>>604にあるとおり、事情は単純じゃないし、現時点であっててもいつまでもそうあるとは限らない。
0779デフォルトの名無しさん
2010/10/25(月) 01:15:35> そもそも値渡しが何かを分かってる人に
> pythonは値渡しです、もしくは参照の値渡しです
> pythonはcall by valueです、もしくはcall by sharingです
わかる人はこれでわかるんだけど、わかる人用の説明なんだよなw
値渡しと参照渡し混同してるとか(ポインタの値渡しを参照渡しと思っているとか)、
もしくはどちらかしか知らないと余計わからなくなるという
0780デフォルトの名無しさん
2010/10/25(月) 01:16:22mutableとimmutableは、生成時のみの話じゃないし、むしろ生成後の方が重要。
(値を変更するのは生成時じゃなくて、生成後だからね)
渡し方に関係はないけど、それを言うとPythonは渡し方自体がどうでもいい言語で、
言語の中にメモリアドレスなんて概念が出てこないのと同様、値渡し、参照渡し、ポインタ渡しという概念が出てこない。
知りたいのは仕様でも実装でもないとか言ってたけど、実装見るのが一番早いよ。
Jythonのソース落としてきて本当にそれでいいか確認するといい。
0781デフォルトの名無しさん
2010/10/25(月) 01:17:48それ面白そうだから、リンクくれ。暇な後輩に読ませる
0782デフォルトの名無しさん
2010/10/25(月) 01:38:550783デフォルトの名無しさん
2010/10/25(月) 02:06:05こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
そうであるならよく見ておかないといけませんね。
>>780
> mutableとimmutableは、生成時のみの話じゃないし、むしろ生成後の方が重要。
後からmutableになったりimmutableになったりするオブジェクトがある
ということですか?例えばどんなことができるということなのでしょうか?
> 渡し方に関係はないけど、それを言うとPythonは渡し方自体がどうでもいい言語で、
推測ですが全てがオブジェクトであり、全て参照の値渡しだという説明なら区別する
必要がないためにXX渡しという言葉を出していないだけの話かと思います。
つまり仮に値渡しなどが可能な型が出来たとしても、mutableかどうかは渡し方には
関係ないと思うということです。
> Jythonのソース落としてきて本当にそれでいいか確認するといい。
厳密である必要はないので、実装から見るコストまではかけられません。
また、このレベルのことを実装から見なければ問題があるかどうか分からないほど
Pythonは曖昧な言語ということなのでしょうか?
0784デフォルトの名無しさん
2010/10/25(月) 03:26:50http://hibari.2ch.net/test/read.cgi/tech/1287944631/
新スレ
0785デフォルトの名無しさん
2010/10/25(月) 04:07:16桁を削らずに取得したい場合はこんな感じでいいですか?
削らずにというのは、9月なら month='09' が欲しいということで。
date = datetime.date.today() + datetime.timedelta(days = delta)
year, month, day = date.isoformat().split("-")
なんか環境依存で全然違う結果が出てくる可能性とかありますか?
month = date.strftime("%m")
とかでも同じ結果だったけど、無駄がおおい気がしたので
0786デフォルトの名無しさん
2010/10/25(月) 04:26:330787デフォルトの名無しさん
2010/10/25(月) 04:32:48おお、なるほど
言われてみればそれが一番すっきり
ありがとうございます。
0788デフォルトの名無しさん
2010/10/25(月) 10:14:56> こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
多分、関数呼び出しの、数値(int, float, long)とリストとタプルに関してはこれからも変わらない。
> 後からmutableになったりimmutableになったりするオブジェクトがある
そんなものはない。
> つまり仮に値渡しなどが可能な型が出来たとしても、
今の変数モデルを捨てないと、xx渡しという言葉は出てきようがない。
> また、このレベルのことを実装から見なければ問題があるかどうか分からないほど
> Pythonは曖昧な言語ということなのでしょうか?
厳密に、Pythonの変数モデルに従ってる。
それを無理やり、別のモデルに置き換えようとするから面倒になる。
上にも書いたとおり、関数呼び出しの、数値(int, float, long)とリストとタプルに関しては、君の認識で問題は起こらないだろう。
けれど、それと同じ考え方を別の似た何かに持ち込んでも、必ずしもそうなるかどうかは知らんということだ。
0789デフォルトの名無しさん
2010/10/25(月) 10:57:19... 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)
0790デフォルトの名無しさん
2010/10/25(月) 11:59:31immutableなオブジェクトの変更はできません。
0791デフォルトの名無しさん
2010/10/25(月) 19:33:56> > こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
> 多分、関数呼び出しの、数値(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
ですよね
0792デフォルトの名無しさん
2010/10/25(月) 20:07:030793デフォルトの名無しさん
2010/10/25(月) 20:35:25再度以下を読み直しましたが、意見に変更はありません。
http://www.python.jp/doc/release/ref/assignment.html
それとも何か別のものが必要なのでしょうか?
もし他になければ書いてある内容に基づき、矛盾する部分を見つけて
指摘して頂けませんか?
0794デフォルトの名無しさん
2010/10/25(月) 20:45:58コテつけて
鬱陶しいと思ってる人もNGしやすいだろうし
0795デフォルトの名無しさん
2010/10/25(月) 20:47:08immutableとmutableの関係も完全一致だし。
0796デフォルトの名無しさん
2010/10/25(月) 21:11:35Javaは関係なく「全てがオブジェクトであり、全て参照の値渡し」というモデルと考えてOKということですか?
0797デフォルトの名無しさん
2010/10/25(月) 21:14:23何を聞いてたんだよ
0798デフォルトの名無しさん
2010/10/25(月) 21:17:20いいえ。>>788が以下のように言っていたので
> > つまり仮に値渡しなどが可能な型が出来たとしても、
> 今の変数モデルを捨てないと、xx渡しという言葉は出てきようがない。
確認した次第です。
0799デフォルトの名無しさん
2010/10/25(月) 21:18:38俺の知る限り、一般にはPythonはcall by sharingと認識されているし、
その考え方で特に矛盾は生じない
0800デフォルトの名無しさん
2010/10/25(月) 21:22:48ここの
How do I write a function with output parameters (call by reference)?
の項目でも読むといい
公式のFAQだから
0801デフォルトの名無しさん
2010/10/25(月) 21:24:480802デフォルトの名無しさん
2010/10/25(月) 21:25:330803デフォルトの名無しさん
2010/10/25(月) 21:31:21であれば、モデルについては矛盾がないこと確認が取れました。ありがとうございます。
>>795に戻りますが、考え方的に、初心者の立場からすると、定数リテラルまでオブジェクト
という部分は、どこかに置いておきたいのです。そうしないとオブジェクトって何?どこまで
できるの?という疑問が最初に発生してしまい、全体像をつかまないうちは完全理解した
つもりになれる部分が皆無になり、習得する新しいものについて常に多くのケースを考える
必要がでてきます。
それよりは、数値リテラルはjavaでいうprimitiveな型と考えた方が可能な操作が限定的で
理解しやすく初期の文法理解で困りません。なので最初の質問をした次第です。
>>800
申し訳ありませんが、値の返し方を尋ねたいわけではないので何の説明にもなっていません。
0804デフォルトの名無しさん
2010/10/25(月) 21:31:59http://docs.python.org/reference/datamodel.html#objects-values-and-types
0805デフォルトの名無しさん
2010/10/25(月) 21:33:280806デフォルトの名無しさん
2010/10/25(月) 21:35:47> 可能な操作が限定的で理解しやすく初期の文法理解で困りません。
> なので最初の質問をした次第です。
なぜそう「考えたい」のか、よくわからないな
実際違うものなのだし
Pythonで可能な操作を知りたければ、REPL(対話環境)を起動して
objectに対してdir()してみるのが手っ取り早いよ
>>> type(1)
<type 'int'>
>>> id(1)
4677432
>>> dir(1)
(省略)
>>> help(1)
(省略)
全てはオブジェクトで、それゆえ全ての値に対して
こうしたイントロスペクションが行えるのがPythonだ
0807デフォルトの名無しさん
2010/10/25(月) 21:35:470808デフォルトの名無しさん
2010/10/25(月) 21:38:23http://www.python.jp/doc/release/ref/datamodel.html
0809デフォルトの名無しさん
2010/10/25(月) 21:52:340810デフォルトの名無しさん
2010/10/25(月) 21:53:33>>806
書いたように、「オブジェクトって何?どこまでできるの?という疑問が最初に発生してしま」うからです。
この整数リテラルは属性持たせたりできるんだろうか?
メソッドも追加できるんだろうか?
演算子も実は全然違う意味にできたりするんだろうか?
クラスとかもあるのかな?
そもそも型はどういうものなんだ?
とか最初は例示で理解するものなのに単純かつ具体的で限定的なものがないと、それを使った説明を
理解する際にケースが増えてしまって分かった気になれません。
0811デフォルトの名無しさん
2010/10/25(月) 21:55:000812デフォルトの名無しさん
2010/10/25(月) 21:57:300813デフォルトの名無しさん
2010/10/25(月) 21:58:49なるほどねえ。
まあ、そういうことなら、数値は単に他の多くの言語のように足したり引いたりできる
「もの」と思っておけばいいんじゃないの。
「Javaのprimitive型のような」といった妙に限定的な比喩を出すから
余計な議論や誤解を招くのであって。
初期の学習では、「primitive型のような」といった(誤った)理解さえ
不要だと思うよ。
0814デフォルトの名無しさん
2010/10/25(月) 22:06:07そうはいうけど問題ないか尋ねる際に、オブジェクトでない別の何に例えればいいのさ
0815デフォルトの名無しさん
2010/10/25(月) 22:12:00いや、実際にはオブジェクトなのだから、「オブジェクトではないXと
同じようなものだと考えて問題ないか?」といわれたら、そりゃ「はい」とは
答えにくいだろうw
質問者が本当は「何を」気にして、問題にしているのかはちゃんと説明しなきゃ、
質問者にしか分からんのだからな
Pythonのintは整数の値をあらわす型で、四則演算ができて、
1 + 1が2になるようなものか?という質問なら答えはYesだ
0816デフォルトの名無しさん
2010/10/25(月) 22:14:58強いて言うならIntegerとかStringみたいなもんだ
0817デフォルトの名無しさん
2010/10/25(月) 22:20:26JavaのIntegerは+演算子で足したりできないので、その比喩もまた
誤解を与えるんじゃないかな
0818デフォルトの名無しさん
2010/10/25(月) 22:21:32だからそう厳密でなくていいように質問も限定的にして
「実際の動作や概念的な仕様はともかく使い方だけで考えれば」
と最初から前置きをしているじゃなイカ。
とまあ、この話はこの辺で。>>815もレスくれた方もありがとね。
>>817
丁度質問書いてたとこだった。
0819デフォルトの名無しさん
2010/10/25(月) 22:25:07> 質問者が本当は「何を」気にして、
うっかりどこかで参照渡しと説明してしまって
引くに引けなくなったとかじゃないか
0820デフォルトの名無しさん
2010/10/25(月) 22:27:451.5以降だと暗黙のうちにboxing変換やunboxing変換されるから、
見かけ上Integerなのに+演算子使えてるように見えるコード書けるんだよ。
要するに、いくらでも誤解の余地があるわけで。
0821デフォルトの名無しさん
2010/10/25(月) 22:28:30なるほどね
0822デフォルトの名無しさん
2010/10/25(月) 22:34:08いや単に昨日の深夜まで有効回答がなかっただけ。
半分以上はその深夜で片付いたんだけど、そこで出た疑問が今まで解決してなかった。
>>816
よく見たら意味が違ってた。質問は以下。
「Integerは中の値を変更できない(多分)けど、Pythonの数値オブジェクトってmutableなの?」
0823デフォルトの名無しさん
2010/10/25(月) 22:37:06「数値オブジェクトは変更不能です」
http://www.python.jp/doc/release/ref/types.html
0824デフォルトの名無しさん
2010/10/25(月) 22:43:210825デフォルトの名無しさん
2010/10/25(月) 22:46:350826デフォルトの名無しさん
2010/10/25(月) 22:50:42んー、俺は今でも参照渡しと参照の値渡しは無理に区別しなくていいと思うし、
mutableとimmutableはそれほど重要な違いとは思わないし、
何かを間違えてたとは思ってないけどね。
0827デフォルトの名無しさん
2010/10/25(月) 22:52:500828デフォルトの名無しさん
2010/10/25(月) 22:56:33コテというのは同一人物を主張したい人が自発的につけるもの。
何が嬉しくてそんなもんつけるんだよ。
0829デフォルトの名無しさん
2010/10/25(月) 22:59:190830デフォルトの名無しさん
2010/10/25(月) 23:02:340831デフォルトの名無しさん
2010/10/25(月) 23:07:32うざいからあぼんするためにコテをつけることを要求してるだけだろ
0832デフォルトの名無しさん
2010/10/25(月) 23:14:20だからなんでそんな要求聞く必要があるんだよ。うざすぎ。
0833デフォルトの名無しさん
2010/10/25(月) 23:33:48変数への代入と関数の引数の受け渡しの話をしているところに、他の操作の
話まで持ち出したらカオスになるだけだろ。
0834デフォルトの名無しさん
2010/10/26(火) 00:08:42可変と不可変、簡単な話だろ?
0835デフォルトの名無しさん
2010/10/26(火) 01:00:34そこはもう一通り話が終わった後なのであまり気にしないでください。
>>834
可変と不可変は関係ありませんでしたが、話は全部ごく簡単な内容です。
こじれた原因は一目瞭然なので割愛します。もし本当に理解できないと
いうことなら自分の見解を書きますが、誰も望んでいないでしょう。
0836デフォルトの名無しさん
2010/10/26(火) 01:06:420837デフォルトの名無しさん
2010/10/26(火) 01:18:470838デフォルトの名無しさん
2010/10/26(火) 01:19:21どの部分まで指しているのか質問なのか知らないけど、ないよ。
回答もらってからは別に用はないんだけど、触れば(気が向けば)反応するってだけ。
汚すつもりはない。
0839デフォルトの名無しさん
2010/10/26(火) 01:33:090840デフォルトの名無しさん
2010/10/26(火) 01:51:16ほんとしつこいな。なんで内容に関係ない部分ばかりで意味もなく絡んでくんの?
0841デフォルトの名無しさん
2010/10/26(火) 02:01:130842デフォルトの名無しさん
2010/10/26(火) 02:09:53同じ人だろ?食う清め
0843デフォルトの名無しさん
2010/10/26(火) 02:46:18> そうですよね。だとすると何が重要だったのかよくわかりませんが。
「生成時にmutable」の「生成時」ってなんだよ。生成時に限定する意味が分からんし、変更するのは生成時じゃなくて生成後だろ。
という意味で書いた。
もし君の理解不足でなく、僕の書き方が悪かったのなら、ごめん。
> 説明上でてきた仮定
その仮定が、Pythonの今の変数モデルでは相容れないの。
> 例えば今のモデルは「全てがオブジェクトであり、全て参照の値渡し」と
> 書きましたが、それでは説明できない状況があるということでしょうか?
だから、そんなもんは処理系実装者か数学者に聞け、と。
それに関しては「参照」という言葉が、メモリ上のどこかに実体があることを前提にしていないのなら、
単に冗長なだけで、間違ってもいないと思うけど。
多分「参照の値の参照の値渡し」って言葉でも「チューリング機械」って言葉でも、
等価な概念は作れるから、分類なんて無限にあるんだけどね。
> では曖昧なモデルを厳密に実装しているということですか(なんだか変な言い回しですが)?
曖昧なモデルって、あなたの脳内にしかないでしょ?
> 例えばC++で
> void hoge(const int& hoge);
> void hoge(int& hoge);
> はどちらも参照渡しに分類されると思いますが、上はimmutableで下はmutableですよね。
mutableかimmutableは渡し方には関係ないんじゃなかったの?
引数でmutableかimmutableか指定できるなら、少なくともPythonでのmutable/immutableとは別用語
0844デフォルトの名無しさん
2010/10/26(火) 03:59:12> 「生成時にmutable」の「生成時」ってなんだよ。生成時に限定する意味が分からんし、変更するのは生成時じゃなくて生成後だろ。
> という意味で書いた。
もう説明の必要はないと思いますが、限定したのは決定するタイミングだからです。
それ以降immutableなら常に変更不可なのは渡されるかどうかに関係なく自明
なので、何が重要だったのかよく分からないと書きました。謝る必要はありません。
> その仮定が、Pythonの今の変数モデルでは相容れないの。
別に仕様に関する仮定の話なので、今の設計モデルに拘る必要もないと思います。
> それに関しては「参照」という言葉が、メモリ上のどこかに実体があることを前提にしていないのなら、
> 単に冗長なだけで、間違ってもいないと思うけど。
実体がどこにあるかを限定する必要はなく、また先に言っているとおり、厳密である必要はないので
その回答で十分です。余談ですが等価な概念を別の分類にする必要ありません。
> 曖昧なモデルって、あなたの脳内にしかないでしょ?
ちょっと何を言いたいのか量りかねますが、Pythonの実装を見ないと分からないと言ったので
それではモデルがその部分を規定していないということになります、と言っているだけです。
> mutableかimmutableは渡し方には関係ないんじゃなかったの?
独立してる(=無関係である)ことを例示したつもりです。何が伝わってないのかよく分かりません。
> 引数でmutableかimmutableか指定できるなら、少なくともPythonでのmutable/immutableとは別用語
渡しているオブジェクトの分類の問題です。コンパイル時にチェックするか実行時にチェックするか
だけの違いで、用語まで別にすることはないでしょう?
0845デフォルトの名無しさん
2010/10/26(火) 04:13:180846デフォルトの名無しさん
2010/10/26(火) 05:01:37* mutable/immutableと、call by value/call by name/call by referenceは直交した概念
* pythonの呼び出しは、参照をcall by valueで渡す、call by sharing
以上の事実を受け入れないのであれば、pythonを使わないほうがいい。
0847デフォルトの名無しさん
2010/10/26(火) 09:56:28荒らしが許せないからだろ
0848デフォルトの名無しさん
2010/10/26(火) 10:18:39> 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か?
0849デフォルトの名無しさん
2010/10/26(火) 11:02:00そもそもwindows上で動かすこととか考えるなということか
それともpython3だともっとやりやすくなってるのかな?
0850デフォルトの名無しさん
2010/10/26(火) 11:03:09まったく考えなくていい、ということはないよ
0851デフォルトの名無しさん
2010/10/26(火) 11:06:48馬鹿には無理
0852デフォルトの名無しさん
2010/10/26(火) 11:36:59理屈がわかればどうってこともないんだけどね
俺はとりあえず解決方法で sitecustomize.py を説明しているページは投げ捨てろと思う
0853デフォルトの名無しさん
2010/10/26(火) 11:41:51>俺はとりあえず解決方法で sitecustomize.py を説明しているページは投げ捨てろと思う
ハゲドウ
0854デフォルトの名無しさん
2010/10/26(火) 13:06:30・unicodeとstrの名前が変わる
・文字列リテラルがデフォルトでユニコードになる
・openでencodingとかも扱えるようになり、codecs.openみたいな特別仕様の関数を使う必要が無くなる
・reprがユニコードを返すので、printに渡したリストや、エラーメッセージが文字化けしない
0855デフォルトの名無しさん
2010/10/26(火) 13:27:40全く持って同意
0856デフォルトの名無しさん
2010/10/26(火) 13:33:470857デフォルトの名無しさん
2010/10/26(火) 14:11:17エキ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)
って出来てたのが、出来なくなった。
0858デフォルトの名無しさん
2010/10/26(火) 21:07:03> だから、実装は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と扱われますね。
0859デフォルトの名無しさん
2010/10/26(火) 21:10:350860デフォルトの名無しさん
2010/10/26(火) 21:17:12そもそも自分の質問は他の方の回答でほぼ解決しているので、このまま終了でも
無問題なのですが、質問した手前放り出すわけにも行かずお付き合いしています。
というわけでどうするかは>>848に任せます。
0861デフォルトの名無しさん
2010/10/26(火) 21:28:120862デフォルトの名無しさん
2010/10/26(火) 21:32:13違います
0863デフォルトの名無しさん
2010/10/26(火) 21:43:58気持ちいいし、少子化も防げるぞ
0864デフォルトの名無しさん
2010/10/26(火) 21:50:180865デフォルトの名無しさん
2010/10/26(火) 21:50:560866デフォルトの名無しさん
2010/10/26(火) 21:58:490867デフォルトの名無しさん
2010/10/26(火) 22:02:170868デフォルトの名無しさん
2010/10/26(火) 22:08:370869デフォルトの名無しさん
2010/10/26(火) 22:16:190870デフォルトの名無しさん
2010/10/26(火) 22:18:59嵐とかどうでもよくなるぞ(wWWwwWWwww
0871デフォルトの名無しさん
2010/10/26(火) 22:30:00はげどう
宗教戦争になりやすいOS板にも何故か無い
0872デフォルトの名無しさん
2010/10/26(火) 22:33:440873デフォルトの名無しさん
2010/10/26(火) 22:48:21> 私はPythonのモデルは↓以外にはないと考えていました。
> http://docs.python.org/reference/
それ。置き換える先は、JavaのStringやらStringBuffer。
> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
別の解釈で置き換える方法が自明じゃないことをもってして、曖昧であることを示せない、ということを挙げたまで。
> 質問だったのですが答えては頂けないんですね。
そもそも、質問がおかしかったのだから答えようがない。
> とりあえずnはimmutableと扱われますね。
C++ではそうなる。
が、Pythonではmutableのものをimmutableにすることはできないのだから、
C++でのimmutableはPythonでのimmutableとは全くの別物。
0874デフォルトの名無しさん
2010/10/26(火) 23:13:392日もあればなんか作れるよね、そうだといいなぁ
0875デフォルトの名無しさん
2010/10/26(火) 23:22:44>>859に配慮しないのですか?
> それ。置き換える先は、JavaのStringやらStringBuffer
なら実装なんて見る必要ないよね?
> > 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> > どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
> 別の解釈で置き換える方法が自明じゃないことをもってして、曖昧であることを示せない、ということを挙げたまで。
論理が破綻してますよ。あらゆる解釈が成立していない例を示しても意味ないでしょ?
説明をする気ならする、しないなら取り下げて。無駄な話をしたくない。
> そもそも、質問がおかしかったのだから答えようがない。
であれば解釈が二通り以上成立する文脈を一意に正すための質問をしてから
回答してください。あなたの場合は、無関係な質問をして話題を変えているだけ。
> C++でのimmutableはPythonでのimmutableとは全くの別物。
同じですよ。f()内でそういう型として扱われているだけ。
immutableなオブジェクトを渡すためにはimmutableな引数が必要ですよね?
mutableな引数ではどちらも渡せます。どちらを渡す場合でも参照渡しという
渡し方になっているため、渡し方にmutableとimmutableは関係ないですよね?
C++ではimmutableかどうかを、文脈ごとに宣言される型に基づき、コンパイル時に
正しくチェックできます。
Pythonでは、実行時、変更するオブジェクトがimmutableかどうかを見てチェックする
必要があります。
双方のimmutableは同じ意味としてどこかに問題がありますか?
0876デフォルトの名無しさん
2010/10/26(火) 23:34:55を対応付けようとする行為は、主観が入るので人ごとに話が食い違って当たり前。
「C/C++で言えば」という話題は全く生産的ではない。
Javaの object 型変数のみに限定すれば、Pythonの変数とオブジェクトのモデルに
ほぼ一致する。
0877デフォルトの名無しさん
2010/10/26(火) 23:39:36javaのオブジェクトって中身をmutableにできたっけ?
0878デフォルトの名無しさん
2010/10/26(火) 23:41:150879デフォルトの名無しさん
2010/10/26(火) 23:42:37Javaの参照型/Pythonのobject型はポインタからポインタ演算を無くしたようなもんだし。
Cの値型やJavaのプリミティブ型、C++の参照型は対応するものが存在しないからややこしいけど……。
0880デフォルトの名無しさん
2010/10/26(火) 23:51:00> >>859に配慮しないのですか?
あなたこそ。
> なら実装なんて見る必要ないよね?
なぜそういえる?
> あらゆる解釈が成立していない例
の意味が分からない。
実装見るか数学者に聞けって話を、モデルが曖昧であると勘違いしたレスがあったから、
モデルが曖昧でなくても、別のモデルで説明することが困難な場合があると書いているだけ。
> 解釈が二通り以上成立する
私には、1通りすら解釈が思い浮かばない。ナンセンスで答えようのない質問にしか読めない。
> あなたの場合は、無関係な質問をして話題を変えているだけ。
関係がないのですか?
あると推測して聞いてみたのですが、質問の意図をあなたしか知らない以上、それはどうしようもないです。
> 同じですよ。f()内でそういう型として扱われているだけ。
そういう概念が、Pythonにはない。
> 双方のimmutableは同じ意味としてどこかに問題がありますか?
ゆえに受け入れられないし、それ以前に、なんで別のものを同じだと言いたがるのかが分からない。
0881デフォルトの名無しさん
2010/10/26(火) 23:56:20参照はポインタ演算もないし自動デリファレンスしてくれるしで
「何かを指すもの」として抽象化されている
だったらわざわざ低レベルなポインタを持ち出して
Pythonの参照を理解しようなんて真似をする必要はないと思うんよ
ところでJavaの参照型なんかはヒープに確保されるんだろうけど
Pythonのintなんかもそうなの?
0882デフォルトの名無しさん
2010/10/27(水) 00:13:29> あなたこそ。
>>860で意思表示しています。あなたがレスをするので続けているだけ。
> > なら実装なんて見る必要ないよね?
> なぜそういえる?
そのモデルで厳密に実装されていると、あなたが言っていたし、
私は厳密でなくていいと何度も言っているから。
> > あらゆる解釈が成立していない例
> の意味が分からない。
そのレスは、>>858の
> > Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
> > Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
という部分の引用です。
> > あなたの場合は、無関係な質問をして話題を変えているだけ。
> 関係がないのですか?
何度も無関係と書いています。検索してみてはどうですか?
> あると推測して聞いてみたのですが、質問の意図をあなたしか知らない以上、それはどうしようもないです。
そこが噛み合わない原因ですね。記述してある内容と矛盾する推測に基づいてレスをしています。
> > 同じですよ。f()内でそういう型として扱われているだけ。
> そういう概念が、Pythonにはない。
そういう機能がないから何?
> > 双方のimmutableは同じ意味としてどこかに問題がありますか?
> ゆえに受け入れられないし、それ以前に、なんで別のものを同じだと言いたがるのかが分からない。
それで何も問題がないからでしょう?
0883デフォルトの名無しさん
2010/10/27(水) 00:21:13やるならちゃんとやれよ
投げやりになってるぞ
0884デフォルトの名無しさん
2010/10/27(水) 00:22:150885デフォルトの名無しさん
2010/10/27(水) 00:32:56JavaのStringやIntegerはimmutableだよ。Pythonととても似てる。
>>881
Pythonの全てのオブジェクトはヒープに格納される。
0886デフォルトの名無しさん
2010/10/27(水) 00:38:530887デフォルトの名無しさん
2010/10/27(水) 00:46:34thx.
JavaやC#みたいに値型はスタックで参照型はヒープとかじゃないんだ
なら尚更そういうモデルは持ち込まないほうがよさげか
0888デフォルトの名無しさん
2010/10/27(水) 00:53:25スレ汚すなアホ
0889デフォルトの名無しさん
2010/10/27(水) 00:54:10本人は難しそうな言葉を駆使して厳密な議論をしてるつもりなんだけど、とても残念なことに頭が悪い
(´・ω・)カワイソス
0890デフォルトの名無しさん
2010/10/27(水) 01:05:530891デフォルトの名無しさん
2010/10/27(水) 01:09:33配列スライスが変態すぎるだろ
[index...index]使わせてくれよ
0892デフォルトの名無しさん
2010/10/27(水) 01:11:41perlもrubyも[index..index]だったね
0893デフォルトの名無しさん
2010/10/27(水) 01:15:06inclusive range は提案されたけど、たかだか -1 や +1 の2タイプを省略するためだけに
構文ルールは増やさないってさ。
スライスにstep指定できるのはホントに変態だよな。
rgb = range(24)
rgb[::3] = [255]*8 # Rが全部255に!
0894デフォルトの名無しさん
2010/10/27(水) 01:25:57すげぇ・・・変態すなぁ
0895デフォルトの名無しさん
2010/10/27(水) 02:08:37> 私は厳密でなくていいと何度も言っているから。
厳密でなくていいって前提が、まずおかしい。
間違っていてもいいなら、初めから質問しなくてもいいし、
間違っていないことを検証しなくてもいいなら、間違っていないことを示せていない点で、間違っていてもいいと同じこと。
> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
そこの時点で、意味が分からなかった。
なので
> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
にのみ答えた。
> 何度も無関係と書いています。
ないというわりには、ない根拠が明確でない。
> そこが噛み合わない原因ですね。
なら、その部分を明確にする気がないのですか。
> 記述してある内容と矛盾する推測
具体的に、どことどこ?
> そういう機能がないから何?
ないから、同じとはいえない。
> それで何も問題がないからでしょう?
そりゃ「ないから何?」で済ませるなら、問題になりようがないわな。
同じ質問だが、なんで別のものを同じだと言いたがるの?
「同じ」じゃなくて「似てる」とかだったら同意するのに、どうして同じだと言い張る?
>>889
正直、難しい言葉なんて自分が混乱するだけだから使いたくないし、面倒を避けるために厳密にしたら余計に面倒になってしまう。俺はとても残念なことに頭が悪い。
0896デフォルトの名無しさん
2010/10/27(水) 02:09:38コテ付けてくれ。長すぎて邪魔だからNGできるように
0897デフォルトの名無しさん
2010/10/27(水) 03:42:190898デフォルトの名無しさん
2010/10/27(水) 03:43:48よし、言いだしっぺ頼むぜ
0899デフォルトの名無しさん
2010/10/27(水) 04:02:08OK。ここで続けるのですね。
> 厳密でなくていいって前提が、まずおかしい。...間違っていてもいいと同じこと。
厳密でなくていいというのは漏れや例外があったとしても大筋合っていれば構わないということ。
> > どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
> そこの時点で、意味が分からなかった。
↓を噛み砕いて説明できればOKです。
> Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
> Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
没解釈例)「 Javaで書かれた処理がラムダ式で表現できることは証明されているはずだがそのラムダ式がどう表現されているかは推測できないだろう?」
なぜ手続き型のJava?なぜラムダ式?となり、仮にそれらを許容したとしても仕様は1つでも実装は何通りも書けるでも同じで、数学の出る幕はない。
> > 何度も無関係と書いています。
> ないというわりには、ない根拠が明確でない。
その場で聞きましょう。例えば、今続いてる話は一体何を目的としてその目的とどう関係しているのか考えてみてください。
> > そこが噛み合わない原因ですね。
> なら、その部分を明確にする気がないのですか。
>>882で「何度も無関係と書いている」のに関係「あると推測して聞いて」いると言っているからです。
> > 記述してある内容と矛盾する推測
> 具体的に、どことどこ?
無関係と言っているのにそれを放置して続けている部分です。自分で検索してください。
> ないから、同じとはいえない。
引数の型修飾が「ない」となぜmutable/immutableの意味が「同じとはいえない」のですか?
> そりゃ「ないから何?」で済ませるなら、問題になりようがないわな。
何が問題か尋ねているのに何も問題を書いていないかったからです。
> 同じ質問だが、なんで別のものを同じだと言いたがるの?
これはただの水掛け論ですね。
> 「同じ」じゃなくて「似てる」とかだったら同意するのに、どうして同じだと言い張る?
結論が変わらない(引数の渡し方は渡すオブジェクトがmutable/immutableかどうかとは無関係である)なら表現はなんでも構いません。
0900デフォルトの名無しさん
2010/10/27(水) 04:36:06pythonじゃなくてsambaが問題だったorz
0901デフォルトの名無しさん
2010/10/27(水) 06:01:50この辺テンプレにいれるの?
0902デフォルトの名無しさん
2010/10/27(水) 06:14:540903デフォルトの名無しさん
2010/10/27(水) 07:06:39むしろチュートリアルを内部検索してる時間が無駄
組み込み関数ならググれば一発だし、
ライブラリもそれ用のドキュメントページがヒットする
0904デフォルトの名無しさん
2010/10/27(水) 07:55:19CやC++は使ったことがあります。
皆さんのお勧めの本を教えてください。
0905デフォルトの名無しさん
2010/10/27(水) 07:58:27日本のDjangoは死んでるから、何書いても返事帰ってこないよ
0906デフォルトの名無しさん
2010/10/27(水) 08:04:340907デフォルトの名無しさん
2010/10/27(水) 08:09:24これって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
温泉逝ってる場合じゃないな
0908デフォルトの名無しさん
2010/10/27(水) 08:49:09テンプレは>>1だけだ
0909デフォルトの名無しさん
2010/10/27(水) 09:51:590910デフォルトの名無しさん
2010/10/27(水) 11:09:14チュートリアルとオライリーのクックブックと今年出たエキスパートなんとかって本
この3つあれば最強
0911デフォルトの名無しさん
2010/10/27(水) 11:54:44> Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
ごめんよ、ここは少なくともJavaでできることはラムダ計算でもできる、の間違い。
その理由は以下のとおり
1. ラムダ計算は、チューリング機械と等価
2. コンピュータでできることは、チューリング機械にもできる
3. Javaでできることはコンピュータにもできる
> Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
これについては、私には証明できない。あなたは自明と思っているのか?
> なぜ手続き型のJava?なぜラムダ式?となり、(中略)数学の出る幕はない。
文章の意味が分からない。
> 今続いてる話は一体何を目的としてその目的とどう関係しているのか考えてみてください。
むしろ、あなたの目的が分からない。私は、以下が主張したいだけ。
・何かのモデルを別のモデルで説明することは、簡単なことではない。ましてや、それができないからといって、元のモデルが曖昧とはいえない。
・何かと何かが全く同じであると説明することは、慎重を要する。簡単に、同じであると言うことができない
> >>882で「何度も無関係と書いている」のに
検索したけど、無関係である理由をあなたは何一つ説明していない。
私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?
> 引数の型修飾が「ない」となぜmutable/immutableの意味が「同じとはいえない」のですか?
型修飾がないことじゃなくて、あることが問題。mutableなオブジェクトはずっとmutableでないといけない。
> 何が問題か尋ねているのに何も問題を書いていないかったからです。
上述のとおり。一応、勘違いのないように言っておくけど、
「同じとみなしても問題がないなら同じ」というのは真だけど、「同じとみなしても問題が見つからないのは同じ」は偽だからね。
> 結論が変わらない(引数の渡し方は渡すオブジェクトがmutable/immutableかどうかとは無関係である)なら表現はなんでも構いません。
引数の渡し方から、だいぶ話がずれてるように思えるけど。Pythonでは変わらないよ。
C++じゃ、mutable/immutableがオブジェクトに付随してると言えるかは疑問だが、どっちも同じ渡し方だよ。
0912デフォルトの名無しさん
2010/10/27(水) 12:04:300913デフォルトの名無しさん
2010/10/27(水) 16:02:090914デフォルトの名無しさん
2010/10/27(水) 16:11:180915デフォルトの名無しさん
2010/10/27(水) 16:37:150916デフォルトの名無しさん
2010/10/27(水) 18:11:180917デフォルトの名無しさん
2010/10/27(水) 18:20:26> 3. Javaでできることはコンピュータにもできる
この辺が最初の行の解釈ということですね。
任意の処理がラムダ式で表現可能であることがどうしてJavaと結びつく必要があるのでしょうか?
> これについては、私には証明できない。あなたは自明と思っているのか?
まずご自分の文(2行目)の解釈をしてください。
> 文章の意味が分からない。
「手続き型のJava?ラムダ式?」関数型ならさほど違和感がないがJavaは不明。
「仕様は1つでも実装は何通りも書ける」仕様を実装しても、まったく同じ実装にはなりません。
「数学の出る幕はない」あなたの2行の意味が前述と同じならラムダ式も数学も出る幕はない。
> ・何かのモデルを別のモデルで...曖昧とはいえない。
> ・何かと何かが全く同じであると...同じであると言うことができない
二つまとめて「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」と聞こえます。
私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
もし私に納得させることが必要なら、定理の証明のような限定的な局面においてのみ納得します。
私は>>860に書いたとおり目的はなく、あなたの意志を尊重してお付き合いしています。
> 無関係である理由をあなたは何一つ説明していない。
理由が必要なら聞きましょう。
> 私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?
いいえ。結論に関係するなら問いただし、でなければスルーします。
> 型修飾がないことじゃなくて、...ずっとmutableでないといけない。
pythonでもC++でもmutableであることの意味は違っていません。理由をご説明ください(*1)。
> 「同じとみなしても問題が...同じ」は偽だからね。
問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> C++じゃ、mutable/immutableが...どっちも同じ渡し方だよ。
なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。
0918デフォルトの名無しさん
2010/10/27(水) 18:23:050919デフォルトの名無しさん
2010/10/27(水) 18:29:29ジエンしてるんだから言っても無駄だよ。
書いてる内容に全く変化が無いだろ?自分の知識の範疇から抜けだした解説が出来ないからね。w
0920デフォルトの名無しさん
2010/10/27(水) 19:10:060921デフォルトの名無しさん
2010/10/27(水) 19:40:00仕様を実装しても、まったく同じ実装にはなりません。
「数学の出る幕はない」あなたの2行の意味が前述と同じならラムダ式も数学も出る幕はない。
任意の処理がラムダ式で表現可能であることがどうしてJavaと結びつく必要があるのでしょうか?
「手続き型のJava?ラムダ式?」関数型ならさほど違和感がないがJavaは不明。
> 「同じとみなしても問題が...同じ」は偽だからね。
問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> これについては、私には証明できない。あなたは自明と思っているのか?
まずご自分の文(2行目)の解釈をしてください。
> 文章の意味が分からない。
> C++じゃ、mutable/immutableが...どっちも同じ渡し方だよ。
なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。「仕様は1つでも実装は何通りも書ける」
> ・何かのモデルを別のモデルで...曖昧とはいえない。
私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
もし私に納得させることが必要なら、定理の証明のような限定的な局面においてのみ納得します。
私は>>860に書いたとおり目的はなく、あなたの意志を尊重してお付き合いしています。
> 型修飾がないことじゃなくて、...ずっとmutableでないといけない。
理由が必要なら聞きましょう。
> 私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?
いいえ。結論に関係するなら問いただし、でなければスルーします。
> ・何かと何かが全く同じであると...同じであると言うことができない
二つまとめて「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」と聞こえます。
> 無関係である理由をあなたは何一つ説明していない。
pythonでもC++でもmutableであることの意味は違っていません。理由をご説明ください(*1)。
> 3. Javaでできることはコンピュータにもできる
この辺が最初の行の解釈ということですね。
0922デフォルトの名無しさん
2010/10/27(水) 19:47:59どこを縦読みすればいいの?
0923デフォルトの名無しさん
2010/10/27(水) 20:26:260924デフォルトの名無しさん
2010/10/27(水) 20:30:080925デフォルトの名無しさん
2010/10/27(水) 20:43:590926デフォルトの名無しさん
2010/10/27(水) 22:19:18Java云々のところは、あなたが一体何をいっているのか分からない。
コンピュータはチューリング機械で表現できて、ラムダ計算はチューリング機械と等価。
それは(あなたの直感に従おうと、従うまいと)数学的に証明された事項です。
結びつく必要、ではなく、結びついているのです。
> なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。
ええ。なら、似ているけれど、同じではないのです。
> 「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」
その通りでしょう。
> 私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
曖昧と言い出したのはあなたです。曖昧であることを、あなたは説明できていません。取り下げるなら取り下げてください。
そして、厳密でないなら「(必ずしも)同じでない」という私の意見にどうして「同じである」と反論する必要がなかった。
「必ずしも同じでないかもしれないが、私の使いたい局面では同じものと扱っても問題はない」であった。
> 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
どんだけ、数学が苦手なんですか?
フェルマーの最終定理証明した人も、こんないわれ方されたら酬われないわ。
> 理由が必要なら聞きましょう。
むしろ、無関係と主張したいのなら、その理由を書きましょう。
>>921
??
0927デフォルトの名無しさん
2010/10/27(水) 22:48:00> それは(あなたの直感に従おうと、従うまいと)数学的に証明された事項です。
それは任意の処理がラムダ式で表現できることと同じことで、それ自体は否定していませんよ。
ただこの話にラムダ式もJavaも出る必要がないと言っています。2行目の解釈次第です。
> ええ。なら、似ているけれど、同じではないのです。
終了判断を要求しているだけですよ。(*1)は書かれていないので終了と判断します。
> 曖昧と言い出したのはあなたです。曖昧であることを、あなたは説明できていません。取り下げるなら取り下げてください。
取り下げません。分からないなら聞いてください。曖昧であるという主張をした部分をまとめると以下のとおりです。
「Pythonの実装を見なければ分からないのであれば、実装が厳密にモデルを反映している以上、
Pythonのモデルが曖昧だということになります。」
> そして、厳密でないなら「(必ずしも)同じでない」という私の意見にどうして「同じである」と反論する必要がなかった。
「私の意見」とはどこですか?
> 「必ずしも同じでないかもしれないが、私の使いたい局面では同じものと扱っても問題はない」であった。
先の質問の回答に依存するので保留します。
> > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> どんだけ、数学が苦手なんですか?
苦手意識は全くありません。
> フェルマーの最終定理証明した人も、こんないわれ方されたら酬われないわ。
定理の証明をするのなら全ての言葉や記号に厳密な定義を要求します。
フェルマーの最終定理は天才が何十年もかけた長い証明で理解している人も世界中でも一握りでしょう。
今の話とは無関係です。
> > 理由が必要なら聞きましょう。
> むしろ、無関係と主張したいのなら、その理由を書きましょう。
どこですか?
0928デフォルトの名無しさん
2010/10/27(水) 22:51:390929デフォルトの名無しさん
2010/10/27(水) 23:26:08http://hibari.2ch.net/test/read.cgi/tech/1169473442/
↑みたいな感じにスレッドを分けて、
気が済むまでやってもらえばいいよ。
さて、スレッドの名前はどうするよ?
0930デフォルトの名無しさん
2010/10/27(水) 23:31:48次スレまでまたがるようなら、と考えていました。私は今でも
「このまま終わりでいい」
んですけどね。
0931デフォルトの名無しさん
2010/10/27(水) 23:34:33> Pythonのモデルが曖昧だということになります。
みたいな意味不明な文書くのは終わらせる気無いからだろ
0932デフォルトの名無しさん
2010/10/27(水) 23:39:02> この話にラムダ式もJavaも出る必要がない
うん。知ってた。例として挙げただけ。
> 「Pythonの実装を見なければ分からないのであれば、実装が厳密にモデルを反映している以上、
> Pythonのモデルが曖昧だということになります。」
意味が分からない。
> 「私の意見」とはどこですか?
あなたの「無関係」と同等かそれ以上に、「同じでない」あるいは「違う」という言葉を使っているはずですが。
人に検索しろというなら、あなたもやってはどうですか。
> 今の話とは無関係です。
いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
> > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
とありましたが、その通り「今のところは問題がない(が、必ずしもないとは限らない)」で話は終わってしまい、進まないのです。
> どこですか?
え?どこか把握してなかったの? 道理で、検索してもあんまりヒットしないわけだ。
0933デフォルトの名無しさん
2010/10/27(水) 23:43:36ただでさえ長いってのにIDもないし追いかけるの面倒すぎるんですけど
0934932
2010/10/27(水) 23:45:13・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない
・今のところは問題がない(が、必ずしもないとは限らない)
で、これ以上話が進まなくなればいいと思っています。
Javaとラムダ式が気にくわなかったのなら、Schemeとチューリングマシンでも、小麦粉とうどんでも、
パッと見、前者で後者を表現できるとは思えないけど実はできるもの、ならなんでもよかったのです。
0935デフォルトの名無しさん
2010/10/27(水) 23:45:59まるで得るところのない話になってるな
0936デフォルトの名無しさん
2010/10/27(水) 23:49:470937デフォルトの名無しさん
2010/10/27(水) 23:56:33> うん。知ってた。例として挙げただけ。
なら仕様を実装する方法が1通りではない、で置き換えて問題なく、数学は関係ないですよね?
> 意味が分からない。
これ以上噛み砕いた説明はないと思います。モデルから見れば分からず、実装を見れば分かるのであれば
モデルが曖昧だというだけですよ?
> 人に検索しろというなら、あなたもやってはどうですか。
回答するために絞りたいだけです。
> いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
> それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
フェルマーの最終定理は関係あるはずはないでしょう。頭を冷やしてください。
まずは詰まっている部分に回答をしてから新しい話をしてください。
> > > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> とありましたが、その通り「今のところは問題がない(が、必ずしもないとは限らない)」で話は終わってしまい、進まないのです。
ではそれで厳密にする必要がないのだから問題がないことにすればいいでしょう?
> え?どこか把握してなかったの? 道理で、検索してもあんまりヒットしないわけだ。
回答するために絞りたいだけです。
0938デフォルトの名無しさん
2010/10/27(水) 23:58:02> ということで、私は、話を進める気なんて一つもなくて、
> ・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない
> ・今のところは問題がない(が、必ずしもないとは限らない)
> で、これ以上話が進まなくなればいいと思っています。
これは話を続ける必要はないと言っているのですか?
> Javaとラムダ式が気にくわなかったのなら、Schemeとチューリングマシンでも、小麦粉とうどんでも、
> パッと見、前者で後者を表現できるとは思えないけど実はできるもの、ならなんでもよかったのです。
では仕様と実装の話でさっさと手を打てばよかったでしょう?
0939デフォルトの名無しさん
2010/10/28(木) 00:09:350940デフォルトの名無しさん
2010/10/28(木) 00:14:32アホ親が残念に育てたようなド低能か病気持ちには言っても無駄かもしれんが
ここはてめー(ら?w)の家の便所じゃないんだから、次からは自分(ら?)で立てたスレでクソたれろ
0941デフォルトの名無しさん
2010/10/28(木) 00:16:43さっさとスレッド名を決めてね♪
0942デフォルトの名無しさん
2010/10/28(木) 00:18:090943デフォルトの名無しさん
2010/10/28(木) 00:32:36非難と言うより煽りと考えて無視しました。続くようなら、
「【触るな】Python隔離スレ Part1【危険】」でお願いします。
0944デフォルトの名無しさん
2010/10/28(木) 00:44:54つか、このスレ俺とジエンしてる奴の二人しか居ない感じだね。
wwwwwwwwwwwwwwwwwwwwwwwwwwwwww
0945デフォルトの名無しさん
2010/10/28(木) 01:28:000946デフォルトの名無しさん
2010/10/28(木) 01:29:200947デフォルトの名無しさん
2010/10/28(木) 01:43:16> なら仕様を実装する方法が1通りではない、で置き換えて問題なく、
実装する方法は1通りじゃないけど、そのこととの関係性が分からない。
> 数学は関係ないですよね?
なぜ?
> モデルから見れば分からず、実装を見れば分かるのであればモデルが曖昧だというだけですよ?
曖昧なら実装できない。
> フェルマーの最終定理は関係あるはずはないでしょう。頭を冷やしてください。
うん。関係ない。けど、それを持ち出した経緯とは関係がある。つまり
> > いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
> > それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
ということだな。
> ではそれで厳密にする必要がないのだから問題がないことにすればいいでしょう?
それってなに? なぜ厳密にする必要がない?
人には検索しろ、回答しろ。自分は、回答してほしけりゃ場所教えろ。いい加減にしたら。
> これは話を続ける必要はないと言っているのですか?
うん。あなたが
> > ・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない
> > ・今のところは問題がない(が、必ずしもないとは限らない)
を認めるなら。
> では仕様と実装の話でさっさと手を打てばよかったでしょう?
上述の通り、その関係性が分からない。
0948デフォルトの名無しさん
2010/10/28(木) 01:45:030949デフォルトの名無しさん
2010/10/28(木) 01:57:58エラーでスレ立てできません。よろしくお願いします。名前はなんでも構いません。
>>947
スレ立つまで返事はできません。
0950デフォルトの名無しさん
2010/10/28(木) 02:18:32このスレ埋まったらもう出てくんな
0951デフォルトの名無しさん
2010/10/28(木) 02:26:290952デフォルトの名無しさん
2010/10/28(木) 02:33:350953デフォルトの名無しさん
2010/10/28(木) 02:35:49>>950でもいいやと書いてましたが、それいいですね。それでいきましょ。
0954デフォルトの名無しさん
2010/10/28(木) 04:31:000955デフォルトの名無しさん
2010/10/28(木) 07:01:050956デフォルトの名無しさん
2010/10/28(木) 16:13:060957デフォルトの名無しさん
2010/10/29(金) 01:07:240958デフォルトの名無しさん
2010/10/29(金) 04:34:42C以外も勉強したいと思いPythonをやろうとおもうんですけど、
CとPythonの明確又は大きな違いはズバリどこなんでしょうか?
0959デフォルトの名無しさん
2010/10/29(金) 04:40:460960デフォルトの名無しさん
2010/10/29(金) 07:04:46C言語と、Pythonをはじめとしたスクリプトとの大きな違いとして
リスト/配列や文字列などが非常に楽に、かつ安全に扱えるという点が大きいかな。
あとポインタやメモリ確保/解放に当たる要素もかなり抽象化されていて、そこも安全。
逆に欠点はやや実行速度に欠けるところと、抽象化されているために直接メモリ管理を扱うようなコードが書けない点。
0961デフォルトの名無しさん
2010/10/29(金) 07:42:200962デフォルトの名無しさん
2010/10/29(金) 07:48:550963デフォルトの名無しさん
2010/10/29(金) 08:53:55いろいろあるだろうけど、自分なりの説明。
C言語
・静的なコンパイル型言語
・いろんなことがコンパイル時に決まってないといけない
・高速だけど不便
Python
・動的なインタプリタ型言語
・いろんなことが実行するときに決められる(実行しないと決められない)
・低速だけど便利
0964デフォルトの名無しさん
2010/10/29(金) 08:57:15でも構文的にはCに偏ってるから学習ははかどるよ
俺もCしか出来なかったけどPythonでオブジェクト指向を学んである種に開眼した
0965デフォルトの名無しさん
2010/10/29(金) 09:38:410966デフォルトの名無しさん
2010/10/29(金) 11:42:570967デフォルトの名無しさん
2010/10/29(金) 11:46:030968デフォルトの名無しさん
2010/10/29(金) 11:54:38FILE* なんかが良い例
だがオブジェクト指向の一部が理解出来るだけだから
それだけでは全体は理解出来ない
0969デフォルトの名無しさん
2010/10/29(金) 12:04:540970デフォルトの名無しさん
2010/10/29(金) 12:13:050971デフォルトの名無しさん
2010/10/29(金) 12:34:260972デフォルトの名無しさん
2010/10/29(金) 13:18:210973デフォルトの名無しさん
2010/10/29(金) 14:24:000974デフォルトの名無しさん
2010/10/29(金) 14:48:060975デフォルトの名無しさん
2010/10/29(金) 17:55:04http://hibari.2ch.net/test/read.cgi/tech/1288342460/
0976デフォルトの名無しさん
2010/10/30(土) 09:22:24乙
0977デフォルトの名無しさん
2010/10/30(土) 12:18:06乙。以下良く分からない難しい長文で論議する人が
良く分からない難しい長文で論議するスペースになるんですか?
んじゃ私は新スレの方に行きますノシ
0978デフォルトの名無しさん
2010/10/30(土) 13:41:34│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0979デフォルトの名無しさん
2010/10/30(土) 22:47:46論議しない人も、雑談にでも使って埋めてくれると助かる
950超え980未満で放置されたスレ(人任せで放棄)が溜まっていると、
投稿ペースが芳しくなくても需要のあるスレが落ちて困るんだよ
0980デフォルトの名無しさん
2010/10/30(土) 22:56:040981デフォルトの名無しさん
2010/10/30(土) 22:59:48落ちるスレッドは今のところ38個。
基準は最後の書き込みが古い順だ。
0982デフォルトの名無しさん
2010/10/30(土) 23:32:510983デフォルトの名無しさん
2010/10/31(日) 00:11:04│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0984デフォルトの名無しさん
2010/10/31(日) 00:11:45│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0985デフォルトの名無しさん
2010/10/31(日) 00:12:54( ゚∀゚)彡 初ぱい!初ぱい!
( ⊂彡
| |
し ⌒J
0986デフォルトの名無しさん
2010/10/31(日) 01:02:26│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0987デフォルトの名無しさん
2010/10/31(日) 01:03:33│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0988デフォルトの名無しさん
2010/10/31(日) 01:08:59│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0989デフォルトの名無しさん
2010/10/31(日) 01:26:12お前ら何目的でpython使っておます?
0990デフォルトの名無しさん
2010/10/31(日) 01:32:30逃げ道として使わせていただいております
0991デフォルトの名無しさん
2010/10/31(日) 01:50:053DCGツールのスクリプトが殆どPythonだから
高機能バッチファイルとして
聞いた話では工業系で使ってる人多いらしいね
0992デフォルトの名無しさん
2010/10/31(日) 01:53:05結局書く人に依存してスパゲッティはスパゲッティになっちゃうんだよね…
テキストエディタじゃなくてIDE使うべきなのかなぁ
0993デフォルトの名無しさん
2010/10/31(日) 02:53:48ファイラーとか音楽プレイヤーとか設定ファイルいじるツールとか
0994デフォルトの名無しさん
2010/10/31(日) 03:00:250995デフォルトの名無しさん
2010/10/31(日) 03:02:180996デフォルトの名無しさん
2010/10/31(日) 03:06:40SPAMフィルタ
0997デフォルトの名無しさん
2010/10/31(日) 03:10:24│●│
└─┤
_ ∩
( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘
0998デフォルトの名無しさん
2010/10/31(日) 03:10:360999デフォルトの名無しさん
2010/10/31(日) 03:12:021000デフォルトの名無しさん
2010/10/31(日) 03:15:53http://hibari.2ch.net/test/read.cgi/tech/1288342460/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。