5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Pythonのお勉強 Part39

1 :デフォルトの名無しさん:2010/08/05(木) 10:52:59
Pythonオフィシャルサイト
http://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/

2 :デフォルトの名無しさん:2010/08/05(木) 10:54:33
おっPython

3 :デフォルトの名無しさん:2010/08/05(木) 10:56:05
Rubyリファレンスマニュアル刷新計画
http://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/

4 :デフォルトの名無しさん:2010/08/05(木) 10:56:33
>>3 クズ人間はシネ

5 :デフォルトの名無しさん:2010/08/05(木) 11:02:45
◆関連リンク
Python の 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

   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

6 :デフォルトの名無しさん:2010/08/06(金) 03:05:06
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

7 :デフォルトの名無しさん:2010/08/06(金) 09:22:27
>>1

8 :デフォルトの名無しさん:2010/08/06(金) 20:23:03
ウノウがZyngaに買収されて、gumiは脂肪なの?

9 :デフォルトの名無しさん:2010/08/06(金) 23:55:01
ウノウって見辛いよね
検索もいい加減だし

10 :デフォルトの名無しさん:2010/08/07(土) 12:08:24
PythonのIDEで人気な物ってなんでしょうか?
FedoraとWindows使っているのでクロスプラットフォームのものがいいです。

11 :デフォルトの名無しさん:2010/08/07(土) 12:21:08
eclipse

12 :デフォルトの名無しさん:2010/08/07(土) 12:40:13
NetBeans

13 :デフォルトの名無しさん:2010/08/07(土) 13:02:55
pidle

14 :デフォルトの名無しさん:2010/08/07(土) 15:21:10
Mr Beans

15 :デフォルトの名無しさん:2010/08/08(日) 02:30:35
うんこなう

16 :デフォルトの名無しさん:2010/08/08(日) 20:20:22
gvim

17 :デフォルトの名無しさん:2010/08/08(日) 22:37:01
ぼくらの西尾さんが本を執筆中らしいぞ

18 :デフォルトの名無しさん:2010/08/08(日) 23:58:10
Jython本並みに売れそうな予感。

19 :デフォルトの名無しさん:2010/08/09(月) 00:21:22
Jython本って売れてたのか。俺もその本買ったけど積んだままだ。
Jythonって結局なんだったんだろう。今も使ってる人いるの?

20 :デフォルトの名無しさん:2010/08/09(月) 00:28:53
売れてたよ
java-ja脳の内部では

21 :デフォルトの名無しさん:2010/08/09(月) 01:22:59
開発が止まってバージョンが上がらなくなってたときは失望してたけど、
今は使ってもいいかなという気分。

22 :デフォルトの名無しさん:2010/08/09(月) 05:48:34
あるクラスの中で自分自身の参照をしたい場合
定義中に is not defined を出ないようにするには
どうすればよいのでしょうか?

23 :デフォルトの名無しさん:2010/08/09(月) 08:38:44
>>22
そんなの出たことないぞ。何やったんだ?

24 :デフォルトの名無しさん:2010/08/09(月) 08:49:35
23はダメな子。
22はやればできる子。

25 :デフォルトの名無しさん:2010/08/09(月) 09:08:44
>>26 is not defined
こうなったらどうする?
そう、定義すればいい

26 :デフォルトの名無しさん:2010/08/09(月) 10:14:00
ああ、こうやったら出るのか。
class Klass:
    klass = Klass

class Klass:
    pass
Klass.klass = Klass
でいいんじゃないのか?

27 :デフォルトの名無しさん:2010/08/09(月) 22:27:45
ついさっき、python始めました。
文字列の連結で、+じゃなくて、,(カンマ)で連結するとスペースが入るんですが
これは、特別な意味があるんですか?

28 :デフォルトの名無しさん:2010/08/09(月) 22:38:57
カンマで文字列の連結はできないよ
print 'abc', 'def' とかしてるなら http://www.python.jp/doc/2.5/ref/print.html でも読んで

29 :デフォルトの名無しさん:2010/08/10(火) 02:22:11
カンマは改行させたくないときにのみ使う

30 :デフォルトの名無しさん:2010/08/10(火) 11:50:53
たまに
hoge("foo" "bar")
って間違えたときに"foobar"とくっついて送られてビックリする

31 :デフォルトの名無しさん:2010/08/10(火) 12:04:06
それは普通

32 :27:2010/08/10(火) 12:47:56
>>28
ありがとうございます。理解しました。

33 :デフォルトの名無しさん:2010/08/10(火) 13:48:53
未経験者
ばかりです
¥(^o^)/

34 :デフォルトの名無しさん:2010/08/11(水) 01:33:03
Jython本はPython初心者にとって良い本だよね

35 :デフォルトの名無しさん:2010/08/11(水) 05:43:59
良くも悪くもPythonの本じゃなくてJythonの本だからなぁ


36 :デフォルトの名無しさん:2010/08/11(水) 08:04:35
Jython本を良い本なんていうのは、メンヘラ女くらいだろ

37 :デフォルトの名無しさん:2010/08/13(金) 03:47:13
女がいるのか

38 :デフォルトの名無しさん:2010/08/13(金) 19:52:44
九州にPythonはありますか?

39 :デフォルトの名無しさん:2010/08/13(金) 20:17:48
Pythonはあなたの中にあります。

40 :デフォルトの名無しさん:2010/08/14(土) 21:03:43
西尾さんが執筆した本はすべて良い本だよ。Jython本が代表。

41 :デフォルトの名無しさん:2010/08/16(月) 02:50:32
ユーザ毎の設定ファイルを置く場所は
UNIXやLinux だとホームディレクトリ化のドットファイルだったり
最近のWindows だとAppDataの下だったりと
プラットフォームによってまちまちですが、
その違いを吸収してくれるようなライブラリは有りませんか?



42 :デフォルトの名無しさん:2010/08/16(月) 03:55:56
os.path.expanduser('~')

http://stackoverflow.com/questions/1084697/how-do-i-store-desktop-application-data-in-a-cross-platform-way-for-python

43 :デフォルトの名無しさん:2010/08/16(月) 11:58:43
ありがとうございました

44 :デフォルトの名無しさん:2010/08/19(木) 16:57:45
age

45 :デフォルトの名無しさん:2010/08/21(土) 17:02:31
weakrefってどんな風に使うのかな?かな?

46 :デフォルトの名無しさん:2010/08/21(土) 18:54:51
とあるゲームを作成しており、二次元配列に盤面の状態を保持しています。
REDO機能を実装するため、すべて盤面の状態を保持しておきたいのですが、
再帰関数の引数に二次元配列を渡すと、参照渡しになっているため
関数の呼び出し先で状態を書き換えると上書きされてしまいます。

この場合、値渡しにすればよいと思うので、copyモジュールの
deepcopy()を使おうと思っていますが、ほかに何か方法はありますでしょうか?

よろしくお願いいたします。

47 :デフォルトの名無しさん:2010/08/21(土) 19:12:23
そもそも参照渡ししかないんだってw
なんでdeepcopyじゃダメなの?

48 :デフォルトの名無しさん:2010/08/21(土) 19:16:49
>>47
モジュールを使う以外に、標準的なやりかたがあるのかなあと思いまして。
ありがとうございました!

49 :デフォルトの名無しさん:2010/08/21(土) 22:17:21
>>> a = [[1, 2, 3], [4, 5, 6]]
>>> [x[:] for x in a]
[[1, 2, 3], [4, 5, 6]]
こんな感じでコピーして渡せばいいはず。一次元配列のほうが楽だけどな

50 :デフォルトの名無しさん:2010/08/22(日) 02:17:30
プログラマでもないのにクォータニオンを使って
任意軸を中心とした回転がどうのこうのを作って言われて
Pythonも超初心者なもので頭どっかんばっこんすぱーーーーーんな状態なんですが
なんか簡単にやるためのモジュールとか無いでしょうか

51 :デフォルトの名無しさん:2010/08/22(日) 02:28:58
つーか何者?

52 :デフォルトの名無しさん:2010/08/22(日) 03:15:20
今中学です。夏休みの宿題でどうしても必要で。

53 :デフォルトの名無しさん:2010/08/22(日) 04:09:09
最近の中学生はすげえんだな…

54 :デフォルトの名無しさん:2010/08/22(日) 04:53:16
クオータニオンは4元数だっけ、3Dゲームでジンバルロック回避して任意軸での回転させるのに使った覚えある
Pythonと超複素数どっちもわからんなら、どっちかからある程度やっていく必要あると思うけど
適当に結果だけ理解して進めるならググってC++なんかのコードを参考にやってみるのがいいんじゃないかな

そもそも3Dやるんなら、自前でやらずに3D系のライブラリのPython用インターフェスを探したほうがいいな

55 :デフォルトの名無しさん:2010/08/22(日) 04:56:41
pythonで3dゲームて

56 :デフォルトの名無しさん:2010/08/22(日) 04:56:57
俺もググった以上の説明はできんから、他にこのスレで分かる人いなさそうなら、
Python以外は他にあたったほうがいいかもしれんな。3Dプログラミングスレとかあるんじゃないの。

俺は数学好きだったが、高校時分に当時3Dグラフィックス数学だったか、あと超複素数の本読んでも
その部分はさっぱりだったな。
相当前の話しだけど



57 :デフォルトの名無しさん:2010/08/22(日) 05:00:27
Rubyで3Dゲームほど珍しくないと思うけどな。

海外のフリーで使えるような主要な3D EngineはPythonから使えるの多いし、
Panda3DとかPythonを組み込みスクリプトとして使う3Dエンジンもあるくらいだw
商用は殆ど無いと思うけどね(Panda3Dは商用でも使われた例ある。元々そういう用途だし)

ゲーム用途じゃなかったら、3DのオーサリングツールはPythonで制御するのとか拡張するのばっかりじゃね?確か


58 :50:2010/08/22(日) 05:23:07
>>54
色々とありがとうございます。
使用目的はゲームではなく
映像制作においての3DCG制作ソフト内にて
ルービックキューブ回転のアニメーションを付けるという
とても単純な作業を求められているのですが
その中で>>54さんのおっしゃる通りジンバルロックの問題等が回避できず
聞き回ってみた所、ルービックキューブ全ての頂点を
クォータニオン?の任意軸を中心に回転させることが必要だとのことで
以前2chの3Dプログラミングスレのような場所でも聴いてみたのですが
ソフト毎に違うから使用ソフトのスレに行けと言われましたが
私の使用ソフトであるMayaのスレッドは、質問すると喧嘩になるばかりで
返答が返ってくることが少なく、特にこういったプログラミング関係の詳しい話では盛り上がりません
おそらく回答してもらえることはないと思われます。
Maya内で使用できるPythonのスレならばと思い質問させて貰いましたが
解決しそうにないのであれば、諦めるしかないようですかね…。
正直自分でも>>50はバカな文章を書いてしまったと思いました。
Maya内のプログラムはMelという言語も最初からあって最近Pythonが使えるようになったとのことで
移行してきたのですがどう質問すれば皆さんに答えて貰えるか分からないと思った結果
頭がこんがらがってあんな風になりました…。

59 :デフォルトの名無しさん:2010/08/22(日) 05:32:45
Mayaのことなら、Mayaのコミュニティが他にもあるんじゃないの?2ch以外に
掲示板とかMLとか知らんが
日本にないなら海外で検索だな




60 :デフォルトの名無しさん:2010/08/22(日) 08:52:26
四元数か。

三次元の回転をジンバルロックとかの問題無しに解決してくれる魔法と思って、
中身のことを気にせず(気にし出すとよくわからなくなる)行列の変換に使ってやればよい。
回転の中心軸と回転角から四元数を求めるのは公式通りに。

日本語で読める、プログラミング寄りの(数学寄りでない)解説書が工学社から
出てたと思うけど、自分は読んでないので内容はわからない。

61 :デフォルトの名無しさん:2010/08/22(日) 08:59:12
Mayaのスレッドは、質問すると喧嘩になるばかりで
返答が返ってくることが少なく

62 :デフォルトの名無しさん:2010/08/22(日) 10:14:29
CG板はマ板とム板がごっちゃになったような所だからなあ

63 :デフォルトの名無しさん:2010/08/22(日) 11:02:28
C++でやったほうが良いと思いますけど

64 :デフォルトの名無しさん:2010/08/22(日) 11:08:19
パイソンスレでジンバルロックが出てくるとはおもわなんだ。

65 :デフォルトの名無しさん:2010/08/22(日) 11:27:35
>>58
理解すべきはpythonやmelとかいう言語のことじゃないだろ

66 :デフォルトの名無しさん:2010/08/22(日) 11:28:05
マスマスマスマスマスカルポーネ

67 :デフォルトの名無しさん:2010/08/22(日) 11:52:57
Mayaスレッドで質問するのはまずいからここでするしかない、というのはわかるが・・・

68 :デフォルトの名無しさん:2010/08/22(日) 13:45:32
ちょっとググってみた
ttp://cgkit.sourceforge.net/doc2/index.html

69 :デフォルトの名無しさん:2010/08/23(月) 10:25:25
Google appengine がJava対応して
AndroidもJavaだし(バイトコードは違うけど)
GoogleはJavaシフトかと思ってたんだが
Oracleに訴訟起こされてPythonもまだ
使われ続けそうだな。

まぁGoogleがどうこうってのはあまり
Python界にはあまり関係無いのかも知れないけど。

70 :デフォルトの名無しさん:2010/08/23(月) 10:31:42
ほとんど関係ない

71 :デフォルトの名無しさん:2010/08/23(月) 10:44:49
オラクルがオープンソースの敵であることだけは確実

72 :デフォルトの名無しさん:2010/08/23(月) 11:24:52
MySQLこの先どうなんの?

73 :デフォルトの名無しさん:2010/08/23(月) 12:09:46
My SQuL, Your Beats!

74 :デフォルトの名無しさん:2010/08/24(火) 00:58:05
>>69
実際のところはプロダクトではGoogleのバックエンドほとんどJavaで
むしろ、Pythonはほんの少しって聞いたけど・・・


この話、どっかにソースないかな?

75 :デフォルトの名無しさん:2010/08/24(火) 00:59:25
>>71
OracleがGoogleのように競合をどんどん買収しておいて潰す(矛先が結果としてオープンソースプロダクト)
みたいなことになったら阿鼻叫喚じゃ済まないな・・・

76 :デフォルトの名無しさん:2010/08/24(火) 05:34:25
ORACLEは金のためならなんでもする会社

77 :デフォルトの名無しさん:2010/08/24(火) 06:49:14
Oracleを嫌って飛び出した元Sunの開発者は沢山いるよね

78 :デフォルトの名無しさん:2010/08/24(火) 06:57:08
もっとも、Sun自体が保守的になって、過去の技術指向の会社ではなくなっていたから、
技術者の流出は数年前から既に始まっていたけどね。

79 :デフォルトの名無しさん:2010/08/24(火) 07:06:04
SUNがどうあれORACLEがオープンソースの敵であることは間違いないけどね

80 :デフォルトの名無しさん:2010/08/24(火) 07:11:59
オラクル関係者が必死すぎて可哀想

81 :デフォルトの名無しさん:2010/08/24(火) 07:15:52
>>75
googleが潰したオープンソースプロダクトって?例えば?

82 :デフォルトの名無しさん:2010/08/24(火) 07:20:44
Oracle関係者は糞過ぎるからPythonを使わないで欲しいです

83 :デフォルトの名無しさん:2010/08/24(火) 07:32:01
>>81
嘘を蔓延させたり,訴訟を起こしてまで金儲けしようとするのがオラクルの手法

84 :デフォルトの名無しさん:2010/08/24(火) 07:35:20
>>83
ライセンスだけで食ってる会社って最後はそうなる運命

85 :デフォルトの名無しさん:2010/08/24(火) 15:06:56
''.encode('utf(*´∀`*)8'.decode('cp932'))

86 :デフォルトの名無しさん:2010/08/25(水) 06:03:30
コマンドの返り値がabcだとして

select = コマンド
select.replace('ab','cc')

これだと上手くいかないのは何故

87 :デフォルトの名無しさん:2010/08/25(水) 07:03:31
オラクルが糞過ぎるからだよ

88 :デフォルトの名無しさん:2010/08/25(水) 08:00:04
>>> help("".replace)
Help on built-in function replace:

replace(...)
S.replace (old, new[, count]) -> string

Return a copy of string S with all occurrences of substring
old replaced by new. If the optional argument count is
given, only the first count occurrences are replaced.

89 :デフォルトの名無しさん:2010/08/25(水) 10:36:03
>>88
…で、どうしたらいいの

90 :デフォルトの名無しさん:2010/08/25(水) 10:55:16
でけた

>>> 'abc'.replace('ab','cc')
'ccc'


91 :デフォルトの名無しさん:2010/08/25(水) 11:03:56
>>81
>>75 じゃないが、(Googleがサービス買収して競合をつぶしたように)OracleがOSSを潰すのでは?ということじゃないのかな

92 :デフォルトの名無しさん:2010/08/25(水) 11:19:43
>Googleがサービス買収して競合をつぶしたように

kwsk

93 :デフォルトの名無しさん:2010/08/25(水) 12:38:05
>>86

コマンドが何を意味するのか分からないけど、以下のようにしたらできたよ。

>>> select = 'abc'
>>> select.replace('ab', 'cc')
'ccc'


94 :デフォルトの名無しさん:2010/08/25(水) 13:53:33
>>> def コマンド():
    return "abc"
>>> select = コマンド()
>>> select.replace("ab", "cc")
'ccc'

95 :デフォルトの名無しさん:2010/08/25(水) 19:31:20
>>92
OrkutとかJaikuのことじゃね

96 :デフォルトの名無しさん:2010/08/25(水) 23:32:35
2chでバカを矯正することは不可能だと思うけど、OrkutはGoogleオリジナルのサービスだし潰れてないよ。

97 :デフォルトの名無しさん:2010/08/26(木) 00:02:14
なんでいちいち癇に障る言い方をするんだw
Orkutってどこかの会社を買収して手に入れたわけじゃなかったんだね。勘違いしてたわ

98 :デフォルトの名無しさん:2010/08/26(木) 00:05:39
性格

99 :デフォルトの名無しさん:2010/08/26(木) 00:10:12
>>90
おお、ありがとうございます

100 :デフォルトの名無しさん:2010/08/26(木) 17:38:46
ぱいぱい
はあるのに
ぱふぱふ
がないのはおかしい

101 :デフォルトの名無しさん:2010/08/26(木) 17:48:45
ばいばいおさるさん

102 :デフォルトの名無しさん:2010/08/26(木) 17:48:52
つくればいい

103 :デフォルトの名無しさん:2010/08/26(木) 19:38:23
おらくるがじゃましてつくれない

104 :デフォルトの名無しさん:2010/08/26(木) 20:25:21
ワロタ

105 :デフォルトの名無しさん:2010/08/26(木) 21:01:42
Apple
Oracle
Microsoft
IBM
Google
Intel

この業界トップ6のクローズ度順


106 :デフォルトの名無しさん:2010/08/26(木) 22:45:27
>>86
Pythonでは文字列型は数値型とかと同じでimmutable(変更不能)なので、新しい文字列を返すメソッドはあるけれど、文字列そのものを変更するメソッドはない。
だから、replaceも置換結果に変更するのではなく置換結果を返すだけ。
math.sqrtがそういう動作だったり、tuple.sortが存在しないのと全く同じ理由で。

107 :デフォルトの名無しさん:2010/08/28(土) 00:43:48
httplibのBadStatusLineってkeep-aliveのタイムアウトで出るエラーだったのね
分かりづらいわー

108 :デフォルトの名無しさん:2010/08/30(月) 04:50:12
>>74
> http://d.hatena.ne.jp/torazuka/20100120/hbstudy
> Googleでは2002年頃から使われている。Googleのコードの30%がPythonといわれる。
> 例:Youtube、Google Group、アカウント取得時のシステム

たまたま読んだブログにこんな記述があったがあったが、
もともとのソースは分からない

109 :デフォルトの名無しさん:2010/08/30(月) 08:08:14
Googleのコードベースのうち15%はPython
http://coreblog.org/ats/python-accounts-15-percent-of-Google-code-base

110 :デフォルトの名無しさん:2010/08/30(月) 09:14:18
>運用が手軽
>
> * 開発環境でテストもちゃんとできる

まともに使ったことあるひとなら
これが嘘だと知ってるんだけどな

111 :デフォルトの名無しさん:2010/08/30(月) 09:18:25
出たよ自称識者w

112 :デフォルトの名無しさん:2010/08/30(月) 09:21:20
自己紹介乙

113 :デフォルトの名無しさん:2010/08/30(月) 09:25:53
開発環境でもテストはできるよ。
範囲が限られるだけ。

114 :デフォルトの名無しさん:2010/08/30(月) 09:26:39
それを「ちゃんと」と言えるひとって

115 :デフォルトの名無しさん:2010/08/30(月) 09:28:03
どうみても気休めです
ほんとうにありがとうございました

116 :デフォルトの名無しさん:2010/08/30(月) 09:33:04
108で喋ってる人と109のブログを書いてる人は同一人物だよね?
数字が違うのはなぜだろう。

117 :デフォルトの名無しさん:2010/08/30(月) 09:36:16
叩きたいだけなんだろうけど

118 :デフォルトの名無しさん:2010/08/30(月) 09:48:26
>108
Googleのサイトつくってるのか、すごいな

119 :デフォルトの名無しさん:2010/08/30(月) 13:47:43
そんなにGoogleがバカな訳ないじゃん
開発者が楽になるようにPythonを取り入れてるだけで
負荷のかかるのはC++、Java、WEBならPHPのが楽だし

120 :デフォルトの名無しさん:2010/08/30(月) 14:21:43
くやしいのう(wwWwwWWwwwwWwW
くやしいのう(WwwwWwwWWwwWWWw


121 :デフォルトの名無しさん:2010/08/30(月) 15:15:26
何その死語

122 :デフォルトの名無しさん:2010/08/30(月) 17:21:46
高卒レベルの煽り

123 :デフォルトの名無しさん:2010/08/30(月) 17:23:09
ぼるけいのうwwwぼるけいのうwww

124 :デフォルトの名無しさん:2010/08/30(月) 18:42:39
IDでNGしてーよ

125 :デフォルトの名無しさん:2010/08/30(月) 19:30:49
Webでパフォーマンスが必要ならJava一択だろ。
PHPとか何の冗談だよ?

126 :デフォルトの名無しさん:2010/08/30(月) 19:38:39
javascript最強ですねわかります

127 :デフォルトの名無しさん:2010/08/30(月) 21:14:13
>>125
LuaJITだろう
Javaとかゴミ

128 :デフォルトの名無しさん:2010/08/30(月) 21:16:36
http://www.youtube.com/watch?v=iWOSn0LcAxc

129 :デフォルトの名無しさん:2010/08/30(月) 21:19:55
Pythonスレに貼られたリンクを踏むときが一番慎重になる

130 :デフォルトの名無しさん:2010/08/30(月) 21:31:23
ニコ動とようつべのリンクなんて踏まないわ

131 :デフォルトの名無しさん:2010/08/30(月) 21:35:31
http://www.youtube.com/watch?v=FHLnp9j9cog

132 :デフォルトの名無しさん:2010/08/30(月) 21:58:15
いちいちくだらねえんだよ
いい加減にしろよ高卒!

133 :デフォルトの名無しさん:2010/08/30(月) 23:48:11
学歴に劣等感でもあるの?

134 :デフォルトの名無しさん:2010/08/31(火) 07:16:20
だろうなw

135 :デフォルトの名無しさん:2010/08/31(火) 07:36:24
夏が終われば糞専門・大学生が沸くのか
ここで燻って何か利益があると思っているのか

136 :デフォルトの名無しさん:2010/08/31(火) 09:26:19
2.5しか使ったこと無いやつなんだけど、
マルチスレッド対応はどうなの?
まぁマルチスレッドと言うよりは
ノンブロッキング処理をしたかっただけなので、
ネットワークアプリでもないのにtwistedの
リアクターで回してたけど、OSの持ってる
スレッド機能がそのまま使えるなら使いたい。

137 :デフォルトの名無しさん:2010/08/31(火) 09:32:07
ぼるけいのうwwwぼるけいのうwww

138 :デフォルトの名無しさん:2010/08/31(火) 09:40:10
threading.Thread

139 :デフォルトの名無しさん:2010/08/31(火) 10:27:51
マルチスレッド処理用のモジュールがあったのか、不勉強だった。
マルチコアを使い切りたいという用途だとGILがあるから
何か別の(popenするとか)工夫が必要なのだろう。

140 :デフォルトの名無しさん:2010/08/31(火) 10:32:35
>>125
Googleならサーバー増やしたほうが早くね?
いや、逆か。Googleほどになるとサーバー多いから、ちょっとでもパフォーマンス挙げたら
かなり違うか

141 :デフォルトの名無しさん:2010/08/31(火) 11:48:40
やはりRubyのほうが優れている言語らしいな。

142 :デフォルトの名無しさん:2010/08/31(火) 11:57:22
Ruby使うぐらいならPerlの方がよっぽどマシだな

143 :デフォルトの名無しさん:2010/08/31(火) 12:08:52
>>139
2.6以降ならmultiprocessingというモジュールも使えるよ
ttp://gihyo.jp/dev/serial/01/pythonhacks/0005


144 :デフォルトの名無しさん:2010/08/31(火) 13:22:28
GILが必要なのはPythonオブジェクトを操作するときだけだから、
zlib.deflateとか、Cで書かれた重いロジックを実行中はGILを開放できる。
Pythonで書かれたアプリでも、画像処理とかCPU食ってる場所がGILの外なら
マルチスレッドでマルチコアを使いきれる。

145 :デフォルトの名無しさん:2010/08/31(火) 14:41:00
つまりどういうことです?

146 :デフォルトの名無しさん:2010/08/31(火) 15:14:28
もうperlでいいやと思ってKENTの本を買った

147 :デフォルトの名無しさん:2010/08/31(火) 15:33:08
>>136
multiprocessing とか livevent + gevent 使えばよいと思うの

148 :デフォルトの名無しさん:2010/08/31(火) 15:44:13
PythonのスレッドはGILだけでなくそもそも効率悪いから大量に使うようならば設計を見直した方がよいかもね

149 :デフォルトの名無しさん:2010/08/31(火) 17:37:28
大量ってどのくらいですか

150 :デフォルトの名無しさん:2010/08/31(火) 17:43:22
6つくらい

151 :デフォルトの名無しさん:2010/08/31(火) 17:54:14
そんくらいで重くなったりすんの?

152 :デフォルトの名無しさん:2010/08/31(火) 18:15:18
http://lotus-network.net/?p=308

153 :デフォルトの名無しさん:2010/08/31(火) 18:47:56
GILの取り合いが激しい状況でオーバーヘッドが大きくなる問題があるから、
スレッド6つでも、全スレッドがCPU100%で動こうとするとGILによるオーバーヘッドが
1割を超えるかもしれない。
Python 3.2 ではこの問題は解決される。

154 :デフォルトの名無しさん:2010/09/01(水) 02:19:00
Rubyを使うと最初から解決されてるよ。

155 :デフォルトの名無しさん:2010/09/01(水) 02:28:27
XRCedを使おうとしたのだがfoldpanelbarのエラーが出て鬱陶しいので
一つ戻してみたら出なかった。(2.8.11.0→2.8.10.1)


156 :デフォルトの名無しさん:2010/09/01(水) 02:29:32
そうだね。JRubyはいい実装だとおもうよ。

157 :デフォルトの名無しさん:2010/09/01(水) 02:50:20
>>154
Ruby1.8のスレッドは重すぎて使い物にならない。
100スレッドで並列にHTTPリクエストするだけでCPU100%食う。
Ruby1.9のスレッドはPythonと同等。

158 :デフォルトの名無しさん:2010/09/01(水) 04:06:57
Ruby1.9は既にPython3を越えているよ。
Ruby2.0ではもはや追いつけない。

159 :デフォルトの名無しさん: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 個ぐらい作っても止まらない


どうでもいいけど、コア数個しかないのに並列処理どのくらいいみあるんだろ

160 :デフォルトの名無しさん:2010/09/01(水) 10:57:21
ssig33 wwwwwそんなペテンのエントリ持ってこられてもwwww

161 :デフォルトの名無しさん:2010/09/01(水) 11:53:13
Rubyとの比較よりperlとの比較はないのか

162 :デフォルトの名無しさん:2010/09/01(水) 11:54:00
Rubyのスレかと思った

163 :デフォルトの名無しさん:2010/09/01(水) 12:05:52
RubyスレPython支部

164 :デフォルトの名無しさん:2010/09/01(水) 12:14:07
>>159
HTTPならIO待ちだから、1個1個のリクエストを十分高速に処理できて、
スレッド切り替えも高速なら、数千並列が可能。
Rubyの場合、1.8のスレッド切り替え時間の遅さと、GCの停止時間がネック。

165 :デフォルトの名無しさん:2010/09/01(水) 12:30:12
どれが本当の話なの?

166 :デフォルトの名無しさん:2010/09/01(水) 12:33:43
phpでいいじゃん

167 :デフォルトの名無しさん:2010/09/01(水) 12:42:20
>>166 それはないわ

168 :デフォルトの名無しさん:2010/09/01(水) 12:59:15
ペテンわろた

169 :デフォルトの名無しさん:2010/09/01(水) 13:01:26
Pythonで3000個とか16000個くらいスレッド動かしてくれる人を期待age

170 :デフォルトの名無しさん:2010/09/01(水) 13:08:46
>>169
もしいたら天然記念物級の馬鹿だなw

171 :デフォルトの名無しさん:2010/09/01(水) 14:34:46
PythonはGCの停止時間も(循環参照を作りまくらない限り)ないし、
64bitマシンなら普通に数千スレッド使えるよ。
import threading, time
def foo(n):
    while True:
        time.sleep(n*100)
        print n

threads = [threading.Thread(target=foo, args=(n+1,)) for n in xrange(4000)]

for t in threads:
    t.start()

実メモリ2GBの64bit Linuxで、仮想メモリは31.4GB使うけど実メモリ(RES)は83MB。

172 :デフォルトの名無しさん:2010/09/01(水) 15:02:58
>64bitマシンなら普通に数千スレッド使えるよ。

time.sleep(n*100)

しかしてないからじゃね?

普通はQueueに入れたり出したり色々処理すると
そっちの競合で渋滞になるっしょ

173 :デフォルトの名無しさん:2010/09/01(水) 15:07:25
>>172
それはもう言語関係なくね?

174 :デフォルトの名無しさん:2010/09/01(水) 15:27:26
>>171 のをちょと改造してみた
sleepが1秒で、1万スレッドが切り替わりまくっても、Core2Duo 1.86GHzのCPU使用率は1%だった。
スレッド全部作り終わるまでは、1秒sleepなのに1.05秒以上かかるケースがちょろちょろあったけど、
スレッド作り終わった後は安定してる。
Ruby1.8で同じ事やったらスレッド切り替えだけでCPU100%使うだろうし、Ruby 1.9でもやっぱり
GCのせいで安定した応答性能を実現できないだろうな。

import threading
from time import time, sleep
def foo():
    while True:
        t = time()
        sleep(1)
        t = time() - t
        if t > 1.05:
            print t
for _ in xrange(10000):
    t = threading.Thread(target=foo)
    t.daemon = True
    t.start()
print "100000 threads are created."
sleep(1000)


175 :デフォルトの名無しさん:2010/09/01(水) 16:10:55
お前がRuby最高と思うならそうなんだろう、お前ん中ではな。

176 :デフォルトの名無しさん:2010/09/01(水) 17:08:02
  File "C:\Python25\lib\threading.py", line 434, in start
    _start_new_thread(self.__bootstrap, ())
thread.error: can't start new thread

177 :デフォルトの名無しさん:2010/09/01(水) 17:21:33
だれがいい加減なことを言っているのだろう

178 :デフォルトの名無しさん:2010/09/01(水) 19:49:47
>>176
32bitマシンでやってない?
メモリ空間が広くないと、ネイティブスレッドはたくさんは作れない。
その場合、stackless pythonなり、greenletなりの、マイクロスレッドを使わないといけない。

179 :デフォルトの名無しさん:2010/09/01(水) 19:51:53
>>178
ありがとうございます
32bitでした
でも1000個も作れれば充分なのでこれでいいです
っていうかこれだけ作っても常時CPU10%も行かないので満足です
(生成中だけは一時的に増えますが)

180 :デフォルトの名無しさん:2010/09/01(水) 20:40:47
>>176
threadingのstack_size()でスタックサイズを変更すればいいじゃない

181 :デフォルトの名無しさん:2010/09/01(水) 20:54:17
>>180
増やしてみたけど駄目でした

182 :デフォルトの名無しさん:2010/09/01(水) 21:07:54
>>181
減らすんだよw

183 :182:2010/09/01(水) 21:09:30
スレッドのメモリ管理を今すぐ勉強するんだ!

184 :デフォルトの名無しさん:2010/09/01(水) 21:16:49
>>173
PythonにはGILもんだいがあるから関係あるだろう
実質1スレッドしか同時実行できないのに各スレッドが重い処理を行えば悲惨な結果に・・・

185 :デフォルトの名無しさん:2010/09/01(水) 21:28:14
>>184
「Queueに入れたり出したりの競合」は、GILじゃなくて普通にオブジェクトのsynchronizeだよね?
GILが問題になるのは、CPUぶん回すようなGILを開放しないコードが複数スレッドで動くとき。

186 :デフォルトの名無しさん:2010/09/01(水) 23:49:08
そっち方面には全然詳しくないけどthreadよりmultiprocessing使えって
なんかに書いてあった気がす

187 :デフォルトの名無しさん:2010/09/01(水) 23:52:32
Ruby試しに使ってみたけど、速いねこれ。

188 :デフォルトの名無しさん:2010/09/02(木) 00:12:02
Ruby信者w

189 :デフォルトの名無しさん:2010/09/02(木) 00:13:30
Rubyが速いとか(笑

190 :デフォルトの名無しさん:2010/09/02(木) 00:13:39
>>186

>>143


191 :デフォルトの名無しさん:2010/09/02(木) 02:11:38
>>185
別に反論するつもりじゃないけど
外部に作用しないPython環境内で収まるコードのがレアじゃない?実際

192 :デフォルトの名無しさん:2010/09/02(木) 02:25:13
>>191
>>185 は、>>184に対するレスで、 >>172 が例に挙げているQueueに対する出し入れは
GILが無い言語でもスレッドセーフを守るために同期するからGILが問題になる例として
ふさわしくないという反論をしたうえで、GILが問題になるケースを挙げているだけ。

>>174 の実験結果が、Pythonで沢山のコネクションをスレッドで裁くサーバーを作っても
実用になる事を示しているのはちゃんと理解できる。

193 :デフォルトの名無しさん:2010/09/02(木) 05:40:03
だれかが勝手にGILの話をし出して混乱させていることは分かった

194 :デフォルトの名無しさん:2010/09/02(木) 09:14:27
>>192
>Pythonで沢山のコネクションをスレッドで裁くサーバーを作っても
>実用になる事を示しているのはちゃんと理解できる。
GILがある限りそれでは実用にならねーよ

195 :デフォルトの名無しさん:2010/09/02(木) 09:18:44
↓では実用にならないサンプルを >>194 が晒してくれます

196 :デフォルトの名無しさん:2010/09/02(木) 10:35:11
>>172
> time.sleep(n*100)
> しかしてないからじゃね?
はその通りじゃないの
>Queueに入れたり
とか微妙なことを言うから混乱するんであって…

GILを開放する
time.sleep(n*100)
のかわりにピュアPythonでなんか処理をやってれば、
そこで刺さって直列化されるわけでしょ

197 :196:2010/09/02(木) 10:36:38
ああ、「数千スレッド使えるかどうか」の議論には確かにGIL関係ないね
直列化されようが、使えるには使える

ただ直列化されてしまうなら、そもそも並列化する意味は無い
ってことだよね


198 :デフォルトの名無しさん:2010/09/02(木) 10:57:31
>>197
そもそもこの話題>>136から始まってるから、 >>192 が結論で、
GILが邪魔になるケースならmultiprocessingを使うってのは >>143 から既出なんだが。。。

複数のIO待ちを並列に処理したい、あるいはC言語でかかれたルーチンを並列で動かしたい場合は
スレッド、GILを開放しないピュアPythonコードをマルチコアで高速化したいならmultiprocessing

特定の条件だけ挙げて「GILがあるからPythonは並列処理できない」という主張はFUD。

199 :デフォルトの名無しさん:2010/09/02(木) 11:26:25
>>197
それを「使える」と表現するか「使えない」と表現するかの違いだろう
まともな技術者なら使えない・使い物にならないと言うだろうな

200 :デフォルトの名無しさん:2010/09/02(木) 11:31:25
まともな技術者(キリッ

201 :デフォルトの名無しさん:2010/09/02(木) 11:37:18
>>198
>特定の条件だけ挙げて「GILがあるからPythonは並列処理できない」という主張はFUD。
だれもそんな事いってないのにな
熱中症か?

202 :デフォルトの名無しさん:2010/09/02(木) 12:19:21
どうみてもRuby信者です
ほんとうにありがとうございました

203 :デフォルトの名無しさん:2010/09/02(木) 14:26:50
おわり

204 :デフォルトの名無しさん:2010/09/02(木) 14:32:17
スレッド周りは詳しくないんだが、
スレッドって並行処理させるのが目的なら、コアが数千もないのに数千スレッドってまともに処理できなくない?

デスクトップOSで動いているたくさんのアプリみたいに、軽い処理もしくは短時間の処理後に待つ時間が多いならいいのかもしれないけど

205 :デフォルトの名無しさん:2010/09/02(木) 15:32:10
>>204
並行処理といっても、「処理」がCPUコアを使うものとは限らない。
例えばクローラーだったら、並列に1000サイトからページを取得するという事が考えられる。

206 :デフォルトの名無しさん:2010/09/02(木) 15:51:10
Hyper-Heading-Hexadecimal is assured Intel inside.
Intel get started 256 Core Processor at 2005,
first surprised in 2007, next will be at 01.01-2011
But it is not available, least is coming in 20-years later.
You will be still alive? Don't worry, HHH Tech will be release on time.

207 :デフォルトの名無しさん:2010/09/02(木) 16:24:38
>>204
read/writeなどブロッキング処理がブロックしている間他のスレッドを実行できるからI/O関連に限ってはそんな事はない
純粋に計算をさせる場合は同時実行できるコア数以上にスレッドを作ってもパフォーマンスは良くなるどころか悪くなる

208 :デフォルトの名無しさん:2010/09/03(金) 12:21:05
そうか、IO待ちしたり、CPU使う以外でもスレッド立てるのね

209 :デフォルトの名無しさん:2010/09/03(金) 18:41:07
acceptしたソケットをリストに入れています。
このリストに入れたすべてのソケットの受信要求を見るにはどうしたらいいでしょうか?
ちなみにhttp://oshiete.goo.ne.jp/qa/1467156.html を参考にしています。

210 :デフォルトの名無しさん:2010/09/03(金) 18:59:25
>>209
selectモジュールと、asyncore, asynchat モジュールを見ると良いよ。

211 :デフォルトの名無しさん:2010/09/03(金) 19:06:11
>>210
ありがとうございます。みてみます。

212 :デフォルトの名無しさん:2010/09/04(土) 00:52:23
関数の再帰呼び出しの時は、関数名を記述したくありません。
そのような方法はありますか?

213 :デフォルトの名無しさん:2010/09/04(土) 09:17:36
>>212

import types, inspect
def factorial(n):
    if n == 0:
        return 1
    else:
        return n * types.FunctionType(inspect.currectframe().f_code, globals())(n - 1)


214 :デフォルトの名無しさん:2010/09/04(土) 09:46:15
>>213
それ、lambdaでも使えますか?

215 :デフォルトの名無しさん:2010/09/04(土) 10:53:25
>>214

やってみた。

import types, inspect
print (lambda n:1 if n==0 else
n*types.FunctionType(inspect.currentframe().f_code,globals())(n-1))(10)

3628800


216 :デフォルトの名無しさん:2010/09/04(土) 16:02:41
>>212
できないことは無いが、Pythonicではない。
自己満足オナニーコード以外では、名前で再帰しな。

217 :デフォルトの名無しさん:2010/09/05(日) 02:58:09
mac osx10.6でmysql-python1.2.3を入れたいのですが、ビルドすると長い警告とエラーがでてしまいます。
ちなみにエラーの最後は error: command 'gcc-4.2' failed with exit status 1 となっています。
原因は何でしょうか?
linuxだとpython-develがないとおきるとあったのですが。

218 :デフォルトの名無しさん:2010/09/05(日) 08:47:53
原因はリソース不足だよ
大抵の場合おつむの容量が足りていない

219 :デフォルトの名無しさん:2010/09/05(日) 11:03:12
警告が出てもそのまま続行

220 :デフォルトの名無しさん:2010/09/05(日) 17:46:00
そうだな、若いうちにおつむのリソースを十分
拡張してなかったことに気がついた時にはもう
サービスインしてるので、拡張する余裕がないんだよな。

警告が出てもそのまま実行するしかない。
そのせいで隣のプロセスもとも連れで落ちたりするが
実行するしかないんだ。

221 :デフォルトの名無しさん:2010/09/06(月) 02:37:10
new style classオブジェクトはtypeクラスのインスタンスですが、
classic classオブジェクトは何のインスタンスなのですか?
__class__を参照するとエラーが出るので困っています。

222 :デフォルトの名無しさん:2010/09/06(月) 03:10:21
types.ClassType

223 :デフォルトの名無しさん:2010/09/06(月) 04:08:36
typesはビルトインじゃないので違くないです?

224 :デフォルトの名無しさん:2010/09/06(月) 04:41:37
違くないです

225 :デフォルトの名無しさん:2010/09/06(月) 04:47:18
typesをimportしなくても旧スタイルクラスを生成できるんだから違うでしょう?
それだと読み込んでもいないクラスのオブジェクトを生成してることになりますよ

226 :デフォルトの名無しさん:2010/09/06(月) 05:51:13
知らない人だけ質問してください

227 :デフォルトの名無しさん:2010/09/06(月) 10:28:36
ドジャンゴに怪しい外人や自称カリスマやうさんくさいヘッドハントが集まってくるのは何で?

228 :デフォルトの名無しさん:2010/09/06(月) 12:01:01
向こうはdjangoには何であやしい日本人が集まるんだろうと思ってるだろうな

229 :デフォルトの名無しさん:2010/09/06(月) 12:04:01
Pythonコミュニティ = 温泉の人たち = 内輪での結束力が異常 = 排他的
という印象がある。中に入りづらいというか。

230 :デフォルトの名無しさん:2010/09/06(月) 12:08:48
同意
だけど無理に仲間になる必要は全く無いからご安心ください

231 :デフォルトの名無しさん:2010/09/06(月) 12:24:05
あれはPythonエンジニアのグループだろ
コミュニティなんてネット上にいくらでもあるしここもそう


232 :デフォルトの名無しさん:2010/09/06(月) 15:33:43
いや、温泉はpythonつーよりdjango。

233 :デフォルトの名無しさん:2010/09/06(月) 21:21:57
ジャンゴというよりケツマンコぼるんたす

234 :デフォルトの名無しさん:2010/09/06(月) 23:47:52
あるクラス X のオブジェクトを生成するには、Python では X() とします。
このとき X.__call__() が呼ばれると思ってたんですけど、違うんでしょうか。
自分で X.__call__() をクラスメソッドとして上書きしたのに、X() の挙動はかわりませんでした。

>>> class X(object):
...  @classmethod
...  def __call__(cls): # X() のとき呼ばれるはず
...   print 'hello'
...   print 'cls=%r' % cls
...
>>> x = X() # 挙動はかわらない
>>> x()
hello
cls=<class '__main__.X'>

なぜでしょうか。


235 :デフォルトの名無しさん:2010/09/07(火) 00:29:50
クラスのインスタンスが生成されるときはコンストラクタ __init__ が呼ばれる
インスタンスを関数みたいに使うとき(?)に呼ばれるのが __call__


236 :デフォルトの名無しさん:2010/09/07(火) 00:34:44
>>235
__init__() は __call__() 内部で呼ばれているだけだから、今回の話にはあまり関係ないですよね。
X.__call__() をクラスメソッドで定義したのに上書きされないのはなぜ?という話なので。

237 :デフォルトの名無しさん:2010/09/07(火) 00:42:34
>>> help(classmethod)
It can be called either on the class (e.g. C.f()) or on an instance.......

らしい。だからクラスでもインスタンスでも呼べるメソッドという扱いになるからちゃんと __call__(cls) はクラスメソッドになってる。
インスタンスから呼べないようなものは staticmethod を使う。

238 :デフォルトの名無しさん:2010/09/07(火) 00:47:53
__init__ ではなく __call__ で処理しなければならない理由とは?

239 :デフォルトの名無しさん:2010/09/07(火) 01:24:03
>>237
クラスメソッドの定義方法を質問したんじゃありません。
あとstaticmethodはインスタンスからも呼べます。

>>238
挙動を質問しているだけなのに、理由が必要ですか?
理由をあえていえば、Pythonでは X() を実行すると実際には X.__call__() が
実行されるというふうに聞いたのですが、
実際に上書きして試してみたけど上書きされなかった、のが理由です。



240 :デフォルトの名無しさん:2010/09/07(火) 01:57:42
X.__call__() と X().__call__() は違う

X.__call__() はクラスオブジェクトの __call__ で X().__call__() はインスタンスの __call__ が呼ばれることになる
だからインスタンスの関数呼び出しをエミュレートする __call__ をクラス定義内で上書きしても無駄なんじゃない
よく解らないけど

241 :デフォルトの名無しさん:2010/09/07(火) 05:02:40
メタクラスでググれ

242 :デフォルトの名無しさん:2010/09/07(火) 09:20:27
>>240
>X.__call__() と X().__call__() は違う

それはわかってます。だから class X のクラスメソッドとして __call__ を定義したんじゃないですか。
234のコードをもう一度見てみてください。

>>241
メタクラスもあまり関係なくないですか?
X() を呼び出したとき、実際には X.__call__() が呼び出されるはずだけど、
実際に上書き定義してみたけど挙動が変わんないよという話です。
メタクラス、関係ありますか?

243 :デフォルトの名無しさん:2010/09/07(火) 09:25:07
>>242
http://d.hatena.ne.jp/hope-echoes/20080409/1207732499
>この理解は後にメタクラスを学習する際に役立つ。

244 :デフォルトの名無しさん:2010/09/07(火) 09:34:44
>>> X() # 1
hello
cls=<class '__main__.X'>

>>> X().__call__() # 2
hello
cls=<class '__main__.X'>

>>> X.__call__() # 3
hello
cls=<class '__main__.X'>

>>> X() # 4
<__main__.X object at 0x02850C30>


xにX()を代入しxを呼び出せば、1ではなく2
X()あるいはx = X()とすれば4となる
3は本来のclassmethodの呼ばれ方。

245 :デフォルトの名無しさん:2010/09/07(火) 09:42:33
>>244
#1 と #4 って何が違うの?

246 :デフォルトの名無しさん:2010/09/07(火) 09:45:38
>>245
すまんtypo

>>> X()() # 1
hello
cls=<class '__main__.X'>

247 :デフォルトの名無しさん:2010/09/07(火) 10:01:42
>>243
そこのページにも
> ようするに、
> obj = Class()
> obj = Class.__call__()
> は同じ意味である。
と書かれてありますよね。
しかし X.__call__() を上書きしてみたのに、X() を実行しても
上書きされてないので、質問してるのですが、わかってもらえてますか?

>>244
だから、X() を実行した時に、X.__call__() が呼ばれるはずなのに
呼ばれてないのはなぜですか、という質問なんですけど。


248 :デフォルトの名無しさん:2010/09/07(火) 10:16:59
X()を実行したときにX.__call__()が呼ばれるってのは間違い
X()を実行するとまず__init__が処理される、__call__は関係なし。
x = X()で、x()を呼べば__call__が呼ばれる。
つまり>>246にあるX()()のことで、__init__を無視し__call__を呼ぶには以下
X()() # 1
X().__call__() # 2
X.__call__() # 3 (classmethod)
__call__をclassmethodとして定義しても#3が使えるようになるだけで、X()は関係なし

249 :デフォルトの名無しさん:2010/09/07(火) 10:32:24
>>234-236の時点で間違い
>>235は大体合ってるし
__call__が__init__を呼び出してるなんて初めて聞いたが
http://www.daniweb.com/forums/thread39004.html

250 :デフォルトの名無しさん:2010/09/07(火) 10:41:21
>>248
>X()を実行したときにX.__call__()が呼ばれるってのは間違い

これは何を根拠に言ってますか?
できれば公式のドキュメントでそう書いてある箇所を教えてください。

なおPythonのドキュメントでは、
http://www.python.jp/doc/2.5/ref/callable-types.html
> x(arg1, arg2, ...) は x.__call__(arg1, arg2, ...) を短く書いたものに なります。
と書いてあります。


> X()を実行するとまず__init__が処理される、__call__は関係なし。

__init__ はインスタンスメソッドなので、まずインスタンスオブジェクトを作成する操作があるはずです。
__init__ が呼ばれるのはそのあと。
そして、インスタンスオブジェクトを作成する操作を、__call__() の中で行ってると思ったのですが、違いますか。

251 :デフォルトの名無しさん:2010/09/07(火) 10:46:20
>>250
ドキュメントにもxって書いてあるじゃん
このxはどう考えても、x = X()の時のx

252 :デフォルトの名無しさん:2010/09/07(火) 11:29:04
>>251
x() では __call__() が呼ばれるけど、X() では呼ばれないということですか。
なんか一貫性に欠けた仕様ですね。

じゃあ>>243のページに書かれている
> ようするに、
> obj = Class()
> obj = Class.__call__()
> は同じ意味である。
というのは間違いということですか?
#間違ってるなら紹介しないでほしい


253 :デフォルトの名無しさん:2010/09/07(火) 11:31:07
x()でユーザ定義のx.__call__()が呼ばれるのはインスタンスのみだと思うけどどうなんだろ

254 :デフォルトの名無しさん:2010/09/07(火) 12:09:01
>>> class Meta(type):
...  def __call__(self, *args):
...    print "hello"
...
>>> class X(object):
...  __metaclass__ = Meta
...
>>> X()
hello

255 :デフォルトの名無しさん:2010/09/07(火) 12:19:24
結局、>>243のページの説明は間違っている、ということでいいんでしょうか。

256 :デフォルトの名無しさん:2010/09/07(火) 12:27:53
別に間違っちゃいないが
__init__と__call__の違いがわからなければ
理解できなくて当然のハイレベルな機能なので特に気にしなくて良い

257 :デフォルトの名無しさん:2010/09/07(火) 12:39:57
って、よく読み返したら全然違うじゃん……
多分obj = Class.__init__()の間違いだと思うよ

258 :デフォルトの名無しさん:2010/09/07(火) 12:41:36
正確に言うと、
X: 当該クラス
instance: Xのインスタンス
metaX: Xのメタクラス
Xに定義された__init__ -> X(): コンストラクタ
Xに定義された__call__ -> instance(): C++でいう関数オブジェクトみたいなものを作る時に使う。
Xに定義されたクラスメソッドの__call__ -> X.__call__(): X()では呼び出せない。
というかclassmethodの効果はドット「.」でメンバアクセスする場合のみ

メタクラスとかはマニアックな仕様なので無視の方向で。

259 :デフォルトの名無しさん:2010/09/07(火) 12:43:14
読み返したらmetaXいらないな……なんか疲れてるな

260 :デフォルトの名無しさん:2010/09/07(火) 12:48:59
>>257
>多分obj = Class.__init__()の間違いだと思うよ

それはないでしょう。
だって __init__() はインスタンスメソッドであり、インスタンスがないのに呼び出せないでしょ?

obj = Class()
obj = Class.__init__() # TypeError

そっちこそ __init__ と __call__ の違いが分かってるの?w

261 :デフォルトの名無しさん:2010/09/07(火) 12:49:43
あー、いきなりメタクラスの話がどうのとか言い出したのは
metaX.__call__がX.__init__に相当する(同じタイミングで呼ばれる)って話か。
そりゃあ関係ないわな。X.__call__の話なんだもの。

262 :デフォルトの名無しさん:2010/09/07(火) 12:53:50
>>258
>Xに定義された__call__ -> instance(): C++でいう関数オブジェクトみたいなものを作る時に使う。

「Xに定義された__call__」って何ですか?


263 :デフォルトの名無しさん:2010/09/07(火) 12:54:04
ん、じゃあtype.__call__(X)か。
なんかわかんなくなってきたぞ

264 :デフォルトの名無しさん:2010/09/07(火) 13:03:31
そもそも__call__メソッドをクラスメソッドにするのが意味不明

265 :デフォルトの名無しさん:2010/09/07(火) 13:14:53
もう、なにがなんやら。256みたいなのがいるから混乱するけど、
結局、>>243のページは大間違いということでいいんだよね?




266 :デフォルトの名無しさん:2010/09/07(火) 13:15:18
3.4.5. Emulating callable objects¶
object.__call__(self[, args...])
Called when the **instance** is “called” as a function;
if this method is defined, x(arg1, arg2, ...) is a shorthand for x.__call__(arg1, arg2, ...).

267 :デフォルトの名無しさん:2010/09/07(火) 13:16:58
なんで極端に合ってる間違ってるって決めたがるの?
適応性なさすぎ、仕様がスマートじゃないPythonには向いてないよ。

268 :デフォルトの名無しさん:2010/09/07(火) 13:24:20
3万円の商品が無料で売られてる
今の内に貰っとくが吉。
http://www.mail-marketing-club.jp/aff/6934/59/

269 :デフォルトの名無しさん:2010/09/07(火) 13:36:25
>>239
>理由をあえていえば、Pythonでは X() を実行すると実際には X.__call__() が
>実行されるというふうに聞いたのですが、

誰に「聞いた」のか知らんが、それが嘘でした、で終了でしょ
呼ばれるというのは嘘なんだから、いくら頑張ってそこ弄っても挙動変わらないのは
当たり前
何が疑問なのかさっぱり分からん

x = X() とするときに呼ばれるのは
メタクラスの__call__()
-> Xの__new__()(性的メソッド)
-> xの__init__()(インスタンスメソッド)
が正解のはずだよ

270 :デフォルトの名無しさん:2010/09/07(火) 13:39:15

なんで >>243 が正しいと思っちゃった人は
どこの馬の骨かわからんサイトに書いてることを信用するんだろう


271 :デフォルトの名無しさん:2010/09/07(火) 13:57:02
>>270
正しくない根拠は?
君こそどこの馬の骨かわからないよね・・

272 :デフォルトの名無しさん:2010/09/07(火) 14:28:43
>>250
そのページにまんま書いてあるのだが
>__call__( self[, args...])
> インスタンスが関数として ``呼ばれた'' 際に呼び出されます;
よってクラスオブジェクトが関数として呼ばれた際には呼び出されない

273 :デフォルトの名無しさん:2010/09/07(火) 14:36:13
これは高度の再帰型質問ですね

274 :デフォルトの名無しさん:2010/09/07(火) 15:15:22
http://www.slideshare.net/Isoparametric/c-horror-kai
python ....

275 :デフォルトの名無しさん:2010/09/07(火) 17:16:56
話題に乗り遅れたから__call()__/__init()__ 論議の結末をだれかまとめくれ

276 :デフォルトの名無しさん:2010/09/07(火) 17:27:59
実務でプログラミングしたことないキチガイが自演を交えて暴れただけ

277 :デフォルトの名無しさん:2010/09/07(火) 18:50:36
ドジャンゴでは怪しい外人や自称カリスマやうさんくさいヘッドハントが集まってポルンタスってことでFA?

278 :デフォルトの名無しさん:2010/09/07(火) 18:52:08
ダンジョーはゲイの会

279 :デフォルトの名無しさん:2010/09/07(火) 18:56:01
ダンジョーなのに男ばかりとはこれいかに

280 :デフォルトの名無しさん:2010/09/07(火) 19:08:38
X() では type(X).__call__(X) が実行される。
Xがインスタンスオブジェクトの場合、これは X.__call__() と同じである。

281 :デフォルトの名無しさん:2010/09/07(火) 19:18:13
>>279
tsubotta

282 :デフォルトの名無しさん:2010/09/07(火) 19:19:06
In [16]: class Foo: pass
....:
In [17]: classobj = type(Foo)
In [18]: classobj
Out[18]: <type 'classobj'>
In [19]: Foo()
Out[19]: <__main__.Foo instance at 0x853124c>
In [20]: classobj.__call__(Foo)
Out[20]: <__main__.Foo instance at 0x85316ac>
In [21]: Bar = classobj('Bar', (), {})
In [22]: Bar
Out[22]: <class __main__.Bar at 0x859295c>
In [23]: type(classobj)
Out[23]: <type 'type'>
In [24]: Baz = type(classobj).__call__(classobj, 'Baz', (), {})
In [25]: Baz
Out[25]: <class __main__.Baz at 0x859298c>

ふむ。

283 :デフォルトの名無しさん:2010/09/07(火) 20:56:47
http://itpro.nikkeibp.co.jp/article/COLUMN/20060921/248617/

284 :デフォルトの名無しさん:2010/09/08(水) 07:09:40
>>266
その章題にもあるように、それは、callableの説明であって、classの説明ではない。
callableなオブジェクトxに対して、
x()はx.__call__()の短縮形として解釈される。

一方、classであるXに対して
X()はインスタンス生成の記法であり、オブジェクトが生成された後、そのオブジェクトの__init__メソッドが叩かれる。

以上、メソッドとコンストラクタの概念の違いがわかっていれば、
たまたま記法が似ているけれども意味論的には別々のものだということがわかる。

285 :デフォルトの名無しさん:2010/09/08(水) 13:15:24
つか>>234は公式、公式いうんならちゃんとリファレンスを読むべき。
特に3. Data modelの部分を100回音読しろ。

クラス(new-styleクラス)はcallableで、クラスのstatic methodの__new__が呼ばれる。
Classicクラスは直接インスタンスを作って__init__を呼び出す。
クラスインスタンスは「インスタンスメソッドの__call__」を持っている場合だけcallableをエミュレートできる。

で、ここからはメタクラスの話。
クラスってのはメタクラス(type派生クラス)のインスタンスだ。
だから、(インスタンスメソッドの)__call__メソッドを作ってやれば呼ばれたときの挙動を変更できる。

ただ、>>234の考えた、@classmethodでクラス(のインスタンスメソッド)を上書きできると思ったのは残念。
typeの実装は、「クラスメソッドの__call__」でクラスの呼び出しをオーバライドしない。
だから、クラスのインスタンスメソッド__call__をクラスメソッドで上書きするメタクラスを書く必要がある。

@classmethodでクラスの(インスタンス)辞書をオーバライドできる、って発想は惜しいんだけどな。
実際はtypeの実装が、インスタンスメソッドの特殊メソッドを見つけてディスクプリタを書き換えてるだけなんだよ。
クラス辞書をオーバライドしてディスクプリタを書き換えようとするのは逆なんだ。

286 :デフォルトの名無しさん:2010/09/08(水) 13:19:25
そんな引っ張る話題じゃないだろ
そもそも間違った認識と推測と仮定で話進めて何が楽しいんだか

287 :デフォルトの名無しさん:2010/09/08(水) 13:23:27
>>286
>>285>>234 本人の自演

288 :デフォルトの名無しさん:2010/09/08(水) 13:24:52
__new__はclassのインスタンスメソッドとして定義するが、特例としてstatic methodとして呼び出される。ああややこしい

ttp://docs.python.org/reference/datamodel.html#object.__new__

289 :デフォルトの名無しさん:2010/09/08(水) 13:26:27
すまん、この手のメタクラスな話題は好物なんでつい食いついた

290 :デフォルトの名無しさん:2010/09/08(水) 13:31:37
PythonってRubyのRailsみたいなメタクラスFWあるの?

291 :デフォルトの名無しさん:2010/09/08(水) 13:38:48
ORMとかは大体メタクラス使ってんじゃないか

292 :デフォルトの名無しさん:2010/09/08(水) 13:40:11
Django.dbとかSQLObjectとかGenuisとか

293 :デフォルトの名無しさん:2010/09/08(水) 14:03:26
290の引きこもり度は100%

294 :デフォルトの名無しさん:2010/09/08(水) 14:48:46
>>293
残念だけど当たってます
ところで >>292 のどの辺がメタクラスなんでしょう?

295 :デフォルトの名無しさん:2010/09/08(水) 15:34:19
「RailsみたいなメタクラスFW」を存じているPythonicがこのスレに居ると?

296 :デフォルトの名無しさん:2010/09/08(水) 16:46:39
Pythonicは形容詞的に使うんだぜ。

297 :デフォルトの名無しさん:2010/09/08(水) 17:47:22
メインのデスクトップマシンのpythonを2.6から2.7に上げるのはまだまだ先のほうがいいのかなあ

298 :デフォルトの名無しさん:2010/09/08(水) 18:01:01
2.6から2.7ならほぼなんの苦労もなくいけちゃうんじゃない?
2.5から2.6(Python3準拠)はそれなりに面倒だったけど

299 :デフォルトの名無しさん:2010/09/08(水) 18:10:32
>>297
基本的に主流のLinux(Ubuntu, Fedora, OpenSUSE)に入ってる
Pythonのバージョンを使えば問題ない(ライブラリやオープンソースなどがほぼ有効なため)
今はPython2.6.5で様子見状態、おそらく2.7はなくて3.xに飛ぶはず

300 :デフォルトの名無しさん:2010/09/08(水) 18:42:56
Python2の資産を切り捨てるなんてできっこないよ

301 :デフォルトの名無しさん:2010/09/08(水) 19:02:30
漏れまだRuby1.6.7使ってるもんな

302 :デフォルトの名無しさん:2010/09/08(水) 20:49:30
http://sourceforge.jp/magazine/10/09/07/0436202

303 :デフォルトの名無しさん:2010/09/08(水) 21:10:26
>>302
どこのスレの住民か知らないけどよほど嬉しかったんですね
TDPL日本語版出るといいね

304 :デフォルトの名無しさん:2010/09/08(水) 21:30:23
「RailsみたいなメタクラスFW」を存じているPythonicがこのスレに居ると?


305 :デフォルトの名無しさん:2010/09/08(水) 22:09:44
>>303
いや
一応Python対応強化って書いてあったからね

306 :デフォルトの名無しさん:2010/09/08(水) 23:07:52
GNUは宗教です
教祖様であるRMSこそが真の英雄であると教え込まれます
Rubyの教祖様より自意識が強くLinuxはカーネルを指しGNU OSだと言い張ります。

307 :デフォルトの名無しさん:2010/09/09(木) 13:35:08
あまりガタガタ言っているとRailsスレに透過されてる自動投稿爆撃スクリプトの目標にされるぞ

308 :デフォルトの名無しさん:2010/09/09(木) 15:02:10
おおこわっ(w

309 :デフォルトの名無しさん:2010/09/09(木) 15:20:31
ストールマン尊師!
http://www.youtube.com/watch?v=9sJUDx7iEJw

310 :デフォルトの名無しさん:2010/09/09(木) 17:53:55
初心者スレから質問失礼します。
echoサーバーをselect使って書いています。
アクセプトしたソケットがクライアント側で切断された場合にサーバー側でそれを感知することはできるでしょうか?

311 :デフォルトの名無しさん:2010/09/09(木) 17:59:45
はい

312 :デフォルトの名無しさん:2010/09/09(木) 18:11:59
>>311
できれば、どんな感じでやるのか教えてくれませんか

313 :デフォルトの名無しさん:2010/09/09(木) 20:20:36
import


314 :デフォルトの名無しさん:2010/09/09(木) 20:57:50
>>311
あははとても面白い回答ですねうける

315 :デフォルトの名無しさん:2010/09/09(木) 20:59:12
はいじゃないが

316 :310:2010/09/09(木) 22:22:03
定期的にデータを送ってもらって確認するしかないのでしょうか?

317 :デフォルトの名無しさん:2010/09/09(木) 22:25:27
for ... in使えば多くの場合はリストのインデックス使わなくても何かできるし、
たまに必要なときもenumerateで事足りることも多いんだけど。

例えばこういうのを、range使わないで書く方法ってどんなのがある?
a = get_some_list()
b = [a[i-1]+a[i] for i in range(len(a))]

318 :317:2010/09/09(木) 22:26:21
ごめ、
> b = [a[i-1]+a[i] for i in range(len(a))]
じゃなくて
b = [a[i-1]+a[i] for i in range(1, len(a))]

319 :デフォルトの名無しさん:2010/09/09(木) 23:14:20
[x + y for x, y in zip(a, a[1:])]

320 :デフォルトの名無しさん:2010/09/10(金) 00:33:59
>>309
ストールマン会ったことあるけど意外と小さい人だった
160cmくらいか

321 :デフォルトの名無しさん:2010/09/10(金) 00:35:19
そういや、リストのスライス作ったときって、毎回リストオブジェクトが作られるのかな。

lst = range(1000)
lst2 = lst[1:]
としたとき、lst2 は 1000-1 個の要素を持つリストだよね。
だから
for (var i = 1, n = lst.length; i < n; i++) var v = lst[i]
と比べて
for v in lst[1:]:
は長いリストを生成する分、メモリ的には無駄のように思える。

322 :デフォルトの名無しさん:2010/09/10(金) 00:36:38
>>317
reduce

323 :デフォルトの名無しさん:2010/09/10(金) 01:01:24
[1, 2, 3, 4] があったときに [3, 5, 7] が欲しいのだから
reduceじゃダメだろ

324 :デフォルトの名無しさん:2010/09/10(金) 01:11:05
えっ

325 :デフォルトの名無しさん:2010/09/10(金) 01:27:10
>>321
ソース見たら作られてるっぽい

326 :デフォルトの名無しさん:2010/09/10(金) 01:28:33
スライス作るのが嫌なら
イテレータを使えばいいじゃない

327 :デフォルトの名無しさん:2010/09/10(金) 01:29:28
リストのスライスはコピーされる(2.6までは)
2.7とか3以降も同じかどうかはしらない

328 :デフォルトの名無しさん:2010/09/10(金) 10:00:56
>>321
作られる。
巨大なら、xrangeか何か使うといい。

けど、lst[1:]をジェネレータ化しようと思ったら
(x for i,x in enumerate(lst) if i != 0) # 毎回条件分岐が入ってCPUの無駄
なので、
(lst[i] for i in xrange(1, len(lst)))
になってしまう。rangeとかxrange使うのに抵抗なんかしても仕方ないのかなぁ。

329 :デフォルトの名無しさん:2010/09/10(金) 10:03:59
it = iter(lst)
it.next()
it # lst[1:]相当

330 :デフォルトの名無しさん:2010/09/10(金) 10:12:07
>>322
こうか?
reduce(lambda ls,x: ls[:-1]+[ls[-1]+x, x], a, [0])[1:-1]

331 :デフォルトの名無しさん:2010/09/10(金) 10:45:34
>>330
そうそうそれそれ

332 :デフォルトの名無しさん:2010/09/10(金) 11:27:11
lambdaの中にif文とか書きたいなあ

333 :デフォルトの名無しさん:2010/09/10(金) 11:29:03
家の猫が読めないので暗号みたいなプログラムは書かないで下さい
お願いします

334 :デフォルトの名無しさん:2010/09/10(金) 12:56:52
reduce()はある意味万能だけど、この問題なら
map(operator.add, a[:-1], a[1:])
でいいと思う
>>319のほうが読みやすいけど

335 :デフォルトの名無しさん:2010/09/10(金) 13:16:29
it = iter(a)
it.next()
[x + y for x, y in zip(a, it)]

336 :デフォルトの名無しさん:2010/09/10(金) 20:41:53
>>334
いやmapのが早いし
Listのindex理解してればそっちの方がパッと見で理解できる

337 :デフォルトの名無しさん:2010/09/10(金) 20:57:55
>>332
〜 if 〜 else 〜 とかじゃなくて?

338 :デフォルトの名無しさん:2010/09/10(金) 22:24:37
mapとかlambdaとかreduceとか、他と毛色違いすぎるんだよぉぉぉ
しかもよく分からんが、えらいパワフルなしかけで必習っぽいのが困る

339 :デフォルトの名無しさん:2010/09/10(金) 22:49:22
mapはリストない方があるから不要(速度とかの問題とかで使うくらい)
lambdaはdefとほぼ同じなので分からんほうが変
reduceは紳士の嗜みで必修ではない

340 :デフォルトの名無しさん:2010/09/10(金) 22:50:27
×リストない方
○リスト内包

341 :デフォルトの名無しさん:2010/09/10(金) 23:02:28
map過小評価しすぎだよ
map(int, ...)のかわりに[int(e) for e in ...]とかするのやだよ

342 :デフォルトの名無しさん:2010/09/10(金) 23:30:51
処理がいくら等価でも簡潔で見やすい方がいいけどな。
なんで内包表記はありだけどlambdaは使い所が見えない。
仕事でコード書いてるからかな。

343 :デフォルトの名無しさん:2010/09/10(金) 23:35:25
>>341
>map(int, ...)のかわりに[int(e) for e in ...]

[(2*int(e)+1) for e in ...]
の場合
map(lambda e: 2*int(e)+1, ...)
と書く以外に簡単になる?

344 :デフォルトの名無しさん:2010/09/10(金) 23:45:42
mapに渡す関数が定義済みである場合を端的に示すのにintを使ったので
そういう例を出されて反駁されても困っちゃう

345 :デフォルトの名無しさん:2010/09/10(金) 23:49:09
特殊な場合だけ便利な例を持ち出して
過小評価(キリ
とか笑うしかないだろ

346 :デフォルトの名無しさん:2010/09/11(土) 00:08:29
>>335 が好きだなぁ。リストのコピーが生じないし。

>>338
他ってなによ?C/C++のこと? haskellやらlispのこと?

>>341
確かにそれ、やだなぁ、って気になってはいたんだがmap使えばよかったのか。
他にこれといった使いどころがないから存在意義の微妙さは変わらないが...

347 :デフォルトの名無しさん:2010/09/11(土) 00:08:57
じゃあ笑えばいいとおもうよ
あんまり実のない話しだし

348 :デフォルトの名無しさん:2010/09/11(土) 01:03:06
mapは配列群を引数として関数を再帰的に呼び出し返り値を配列にする関数
それは単なるループではないし、スマートかつ高速なコードを書けるわけだ。
リストの内包表現はただ単なる、lambda的なforであって複雑ならforでいい、可読性が失われる。

349 :デフォルトの名無しさん:2010/09/11(土) 01:32:44
>>348
>再帰的に

kwsk

350 :デフォルトの名無しさん:2010/09/11(土) 03:19:50
>>349
"再帰的に" というのは、間違いだと思うよ。
map は sequence の各要素に対して関数を呼び出すだけなので、
再帰呼び出しは発生しない。

351 :デフォルトの名無しさん:2010/09/11(土) 04:05:13
間違ってるから突っ込んだんだけどな

352 :デフォルトの名無しさん:2010/09/11(土) 09:23:53
現在2.6使いですが、結局その後 raw_input はどうなったんでしょうか?
少なくとも2.6.5ではinputがまだあり、inputではevalされます。

353 :デフォルトの名無しさん:2010/09/11(土) 09:34:09
input()がraw_input()相当になるのはPython3から

354 :デフォルトの名無しさん:2010/09/11(土) 12:56:58
そうか…まだしばらく2.xに留まりそう…
Google App Engine のアプリも作ってるし。

355 :デフォルトの名無しさん:2010/09/11(土) 13:04:42
3は黒歴史にして2.xの正統後継言語である4を早くリリースしてくれないかな

356 :デフォルトの名無しさん:2010/09/11(土) 14:03:33
Pythonに型定義を導入して今の10倍は速くしてください

357 :デフォルトの名無しさん:2010/09/11(土) 14:05:31
つBoo

358 :デフォルトの名無しさん:2010/09/11(土) 14:47:59
関数の型を決め打ちする糖衣構文はほしいなぁ。

def foo(arg: int):
pass

def foo(arg):
if not isinstance(int): raise TypeError
に置き換える感じの。

359 :デフォルトの名無しさん:2010/09/11(土) 14:49:43
ごめ、間違いまくりでぐだぐだ。

誤 関数の型
正 引数の型

正しいコード
def foo(arg: int):
    pass

def foo(arg):
    if not isinstance(arg, int): raise TypeError

360 :デフォルトの名無しさん:2010/09/11(土) 14:56:13
昔そんな話があったのだ
http://www.artima.com/weblogs/viewpost.jsp?thread=85551

もしPy3kで入ってたらと思うとぞっとしなくもない

361 :デフォルトの名無しさん:2010/09/11(土) 15:26:08
Pythonの勉強をしたいのですが、
購入する書籍に迷っています。
初めてのパイソンやみんなのパイソンが評判良いようなんですが、
どちらがいいのでしょうか。

自分はプログラミング自体ほぼ初めてで、
覚える目的は、PC上のテキストの編集などを自動化したいからです。
なので職業プログラマーほどの知識はいらないかもしれません。

362 :デフォルトの名無しさん:2010/09/11(土) 15:30:19
恥パイでいいよ
そしてPython学習において本が重要でないこと
WEBにある情報やチュートリアルの方が優れていること
これをわきまえて買わないと酷くソンをすることになる。

363 :デフォルトの名無しさん:2010/09/11(土) 15:44:35
>>362
そうなんですか
それなら値段高めの初めてのパイソンを買うのはちょっと抵抗があるような・・・

というか、今後のためにも3対応のものが良いのかなと思うので、
そうしたらPython入門―2&3対応 という書籍しか選択肢にないようなのですが、
こっちのほうが良いですか?

この本をベースに、わからないことはwebで調べていくことにするとか

364 :デフォルトの名無しさん:2010/09/11(土) 15:52:47
>>359-360
でこれー他で実現出来そうな希ガス

365 :デフォルトの名無しさん:2010/09/11(土) 15:56:33
>>363
はじぱいは
恥ぱいと
初ぱいの
2種類あるから
間違わないように気を付けて!

366 :デフォルトの名無しさん:2010/09/11(土) 15:58:46
>>365

>>363 は「Python入門―2&3対応」筆者の自演宣伝だから気を付けて!!!

367 :デフォルトの名無しさん:2010/09/11(土) 17:48:56
実践Pythonだけ買ったけどLib以下のソース見たりdir()使うのが一番参考になってるわ

368 :デフォルトの名無しさん:2010/09/11(土) 22:24:57
>>358
overloadもできないのに型を決め打って嬉しいことなんて、これっぽっちもないだろ。

369 :デフォルトの名無しさん:2010/09/11(土) 22:31:38
>>368
決め打ちには反対だが
少なくとも関数の定義だけみても
各引数がどの型を期待しているのかが判らないのが面倒
もちろん判ってしまえば問題ないんだが
その点マニュアルも100%記載されている訳ではないし

370 :デフォルトの名無しさん:2010/09/11(土) 22:33:15

戻り値についても同様ね

371 :デフォルトの名無しさん:2010/09/11(土) 22:41:06
duck typingの見通しをよくする工夫はしてもいいかもな。
docstringの中で、各パラメータが実装しているべきメソッドを挙げたり。
もちろんチェックはしないが、ソース読んで参考にはなるという形で。

372 :デフォルトの名無しさん:2010/09/11(土) 22:53:28
duck typing時の必須メソッドのチェックと言うと、継承よりもC++のconceptだな

373 :デフォルトの名無しさん:2010/09/11(土) 22:55:53
例えばJavaのInterface型は動的型とも相性がいい。

374 :デフォルトの名無しさん: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倍早くするだけだな。



来年こそは


375 :デフォルトの名無しさん:2010/09/11(土) 23:24:12
クラスで型を指定するのは最悪だから、やめようよ。

376 :デフォルトの名無しさん:2010/09/11(土) 23:25:54
>>364
kwsk

377 :デフォルトの名無しさん:2010/09/11(土) 23:59:31
メソッドのチェックというとES4のlikeとかgoのインターフェースみたいなものかな?

378 :デフォルトの名無しさん:2010/09/12(日) 01:48:30
>>364
じゃないけど、以前 pyExcelerator のソースを読んだら Deco.py ってのがあって
@accepts (引数型チェック) @returns (返り値チェック) みたいなデコレータを定
義していた。(xlutils にはなかった...)



379 :デフォルトの名無しさん:2010/09/12(日) 02:12:27
>>364 >>378
アイディアは良い感じなんだけどな
pythonの場合
def hoge(arg, *args, **kwargs):
ってよくやるからな
ちょっと難しいかもな

380 :デフォルトの名無しさん:2010/09/12(日) 03:54:48
というか PEP-318 の accepts/returns をそのまま使ってるだけだね。


381 :デフォルトの名無しさん:2010/09/12(日) 08:24:30
>>358-359
http://gihyo.jp/dev/serial/01/pythonhacks/0007
これでいいんじゃないか

382 :デフォルトの名無しさん:2010/09/12(日) 12:40:28
PEP 3107 -- Function Annotationsで定義されていて,
Python 2.6へbackportされていないので,
利用するにはPython 3.0以降が必要になります。

383 :デフォルトの名無しさん:2010/09/13(月) 01:56:10
アノテーションを活用しているライブラリとして,anntoolsを紹介します。

anntools は関数の引数や戻り値が想定している型や値になっているかどうかをチェックしたり,
期待している以外の型のオブジェクトが渡されたときに自動で型変換したりしてくれたりします。

Python 2.6以前にも対応しているので,関数アノテーションのある・なしでどう変わるか見ていきましょう。
BlogなどのWebアプリケーションで,記事を編集するリクエストを扱う関数を想定してみます。

384 :デフォルトの名無しさん:2010/09/13(月) 11:16:19
Python嫌われてるな

http://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

385 :デフォルトの名無しさん:2010/09/13(月) 11:21:39
この豚だれだ?

386 :デフォルトの名無しさん:2010/09/13(月) 14:16:00
>>384
のリンク元
http://slashdot.jp/askslashdot/10/09/08/2228201.shtml


387 :デフォルトの名無しさん:2010/09/13(月) 14:50:42
# Python 2.7 Windows installer (Windows binary -- does not include source)
# Python 2.7 Windows X86-64 installer (Windows AMD64 / Intel 64 / X86-64 binary [1] -- does not include source)

公式のダウンロードは、これとこれどっちをダウンロードすればいいんですか?

2.7と3.1.2ではどっちが良いんですか?

388 :デフォルトの名無しさん:2010/09/13(月) 14:53:19
2.6.5が一般的です
3.1.2が最新版です
2.7が人柱版です

32-bitが一般的で互換性があります
64-bitが人柱版で互換性がないです

389 :デフォルトの名無しさん:2010/09/13(月) 15:11:07
64bit linuxでも32bit版のpython動いた?

390 :デフォルトの名無しさん:2010/09/13(月) 15:13:58
LinuxとWindowsは大分違うからな
Pythonをインタプリタで動かすにも64bitだと互換性の問題が出てくる
Linuxは別に問題ないけど情報量が少ないしOS自体が人柱なんだよな

391 :デフォルトの名無しさん:2010/09/13(月) 15:17:29
2から3へは将来的にあと何年くらいで主流が入れ替わるの?

あまり難しいことはするつもりはなく、テキスト処理くらいでいいんですが、
今から覚えるなら3にしておくべきでしょうか。

392 :デフォルトの名無しさん:2010/09/13(月) 15:20:58
何が将来的だとか主流になるとか、大きなプロジェクトでも作るの?
2から3って言っても中核部を変更したから互換性の問題があるだけで
普通にマイナーチェンジ程度、数回コード書けば慣れるレベルの変更だよ
でも実用性では2.6が圧倒的だし情報も少ない3を使う意味はないと私は思うよ

393 :デフォルトの名無しさん:2010/09/13(月) 15:25:48
そうですか、なら2にしておきます。

2.6というのは、公式にある
Python 2.6.6 (August 24, 2010)
をダウンロードすればいいんですね?
>>388さんのいってる2.6.5はどこにもないんですが

394 :デフォルトの名無しさん:2010/09/13(月) 15:31:51
2.7を避けて2.6を選ぶ理由ってあるの?
Windowsは使って無いから詳しい人教えてよ

395 :デフォルトの名無しさん:2010/09/13(月) 15:40:09
>>393
オウム返しは嫌われるぞ

396 :デフォルトの名無しさん:2010/09/13(月) 20:10:06
超初心者はくだすれいけよ

くだすれPython(超初心者用) その8
http://hibari.2ch.net/test/read.cgi/tech/1282537545/

397 :デフォルトの名無しさん:2010/09/14(火) 10:19:48
pythonはプライベート属性もない欠陥言語らしいね

398 :デフォルトの名無しさん:2010/09/14(火) 10:25:39
はい

399 :デフォルトの名無しさん:2010/09/14(火) 11:06:48
そんなものは飾りです
えろいひとにはそれがわからんのです

っていうか一応 _hoge とか __hoge とかの紳士協定はある


400 :デフォルトの名無しさん:2010/09/14(火) 11:37:11
Pythonに慣れてくると他の言語が冗長でイヤになってくる
セミコロンとか付け忘れるし

401 :デフォルトの名無しさん:2010/09/14(火) 12:28:14
動的言語だと、privateのチェックも動的に行わないといけない。
クラスをオーバーライドした後に親クラスの属性を書き換えたときの挙動等、
言語仕様も大幅に複雑になる。
それだけのコストを支払って private を導入する価値があるかどうか?
Pythonが実際に中規模以上のアプリケーション開発に利用されているのがその答えだ。

402 :デフォルトの名無しさん:2010/09/14(火) 12:32:00
言語オタクが煩わしいとこを端折って
LispやHaskellの良い所をくっつけて作った言語
逆にLisp系の俺用処理系の鬱陶しさを配慮してPythonが首位を取った

403 :デフォルトの名無しさん:2010/09/14(火) 23:55:59
怪しい外人はネラーか?

404 :デフォルトの名無しさん:2010/09/14(火) 23:56:43
>>401
かなり良いテンプレ

405 :デフォルトの名無しさん:2010/09/15(水) 03:49:49
>>400
記述が冗長かどうかより、単に面倒で億劫に感じる。
C++とかC++とかC++とか、もうやりたくないよ。


406 :デフォルトの名無しさん:2010/09/15(水) 03:57:09
>>405
そんなあなたにQt4

407 :デフォルトの名無しさん:2010/09/15(水) 04:56:11
おりしもwinにも対応したそうだな
http://www.pyside.org/

408 :デフォルトの名無しさん:2010/09/15(水) 06:54:19
おりものに見えた

409 :デフォルトの名無しさん:2010/09/15(水) 07:57:15
>>391
もう遅いかもしれんが…

外部ライブラリをバリバリ使うなら別として、単なるテキスト処理だったらpython 3を使った方がよいと思うよ
文字列とバイト列がちゃんと区別されていて、自分でUnicodeにデコードしてから処理するなんて作業をしなくていいし。

410 :デフォルトの名無しさん:2010/09/15(水) 23:26:53
右から帰らなくてもいいんだよ?

411 :デフォルトの名無しさん:2010/09/15(水) 23:27:48
>>410誤爆sry

412 :デフォルトの名無しさん:2010/09/17(金) 08:18:13
重い画像処理などとネットワーク経由のやり取りを非同期で
やりたいとき、twisted のリアクタを別スレッドで回せば
いいんじゃないかと思ってるんだけど、なんか落とし穴ある?

今までtwistedを使ったことはあるけど
メインのスクリプトの最後でtwistedのリアクタをぶん回して
放置って使い方だったので、それを別スレッドでやって
さらにメインスレッドでは別の処理を継続なんてことが
できるのかどうか確信が持てない。

413 :デフォルトの名無しさん:2010/09/17(金) 08:20:58
右から右から、何かが来てる〜僕はそれを左へ受け流す〜

414 :デフォルトの名無しさん:2010/09/17(金) 08:27:23
>>412
重いCPU処理があるとtwistedはイマイチな気がする。
むしろ重いCPU処理は別プロセスにやらせたほうが
GILにやさしいシステムになると思われ。

415 :デフォルトの名無しさん:2010/09/17(金) 13:05:41
multiprocessing か…2.6からなら使えるんだっけ?
popenくらいしか使ったこと無いけど調べてみる。

416 :デフォルトの名無しさん:2010/09/18(土) 02:45:05
自称カリスマとかVとか怪しい外人とかその他ゴミムシとか、ダンジョーにはなんで自己愛満載の勘違い君ばっかり寄ってくるの?

417 :デフォルトの名無しさん:2010/09/18(土) 03:52:12
http://homepage1.nifty.com/eggs/narcis.html

418 :デフォルトの名無しさん:2010/09/18(土) 13:20:06
PythonでAtomフィードのXML文書を生成するには
どんなライブラリが標準的なんでしょうか?
http://trac.defuze.org/wiki/atomixlib
がヒットしたので見てみると

This project is now dead and deprecated
in favour of bridge which is a much more generic XML toolkit.
I will no longer update atomixlib.

とあるので他に標準的に使われているものが
有るのかと思っているのですが…
Python 2.6 を使っています。もしかしたら
Python 3.x では標準のものが有るのかも知れませんが、
まだ調べていません。

419 :デフォルトの名無しさん:2010/09/19(日) 11:42:24
atomixlibはamaraが必要で、ということはexpatが必要。
http://www.xml3k.org/Amara
http://pypi.python.org/pypi/Amara/

420 :デフォルトの名無しさん:2010/09/22(水) 13:09:07
>>414
GILはPythonオブジェクトを走査するときだけ働くから、画像処理なんかはGILを開放するようにすれば、
ちゃんとマルチスレッドでも性能出るよ。

>>412
Twistedにはワーカースレッドのスレッドプールで重い処理やブロックする処理を実行するための仕組みがあるよ。

421 :デフォルトの名無しさん:2010/09/22(水) 15:16:26
>>420
CやC++作った動的ライブラリを呼場合はGILは自動的に開放されるの?
それともGILを開放するようにあらかじめ作る必要があるのかな

422 :デフォルトの名無しさん:2010/09/22(水) 20:31:16
>>421
動的ライブラリを呼ぶ場合って、具体的に言えばctypes経由?
ctypesは、FUNCFLAG_PYTHONAPIというフラグを指定しなければ、GILを開放する。

ctypes以外の場合は自分で調べて。pywin32とかだと、たぶんAPIごとにそのAPIが
ブロックするか否かなどを考慮して、GILを開放するかどうかを決めてると思う。

423 :デフォルトの名無しさん:2010/09/22(水) 21:25:20
>>422
thx
ctypeは面倒だったからスレで以前紹介されてたswigを使ってる
けどswigのドキュメントにGILの扱いは書いてないなあ
もう少し調べてみます

424 :デフォルトの名無しさん:2010/09/23(木) 02:46:10
初めてPythonを学ぶものです。
C言語の心得は多少あるのですが、Pythonは初めてです。
一冊体系的に学んでおきたいのですが、初心者にお勧めの入門書を教えてください。


425 :デフォルトの名無しさん:2010/09/23(木) 02:47:47
公式のドキュメントでおk

426 :デフォルトの名無しさん:2010/09/23(木) 03:02:14
とりあえずのチュートリアル。あんまり面白くないけど

427 :デフォルトの名無しさん:2010/09/23(木) 03:05:55
>>424
C判ってるんならwebである程度調べればそのうち出来るようになる
ただ「体系的に」を期待してるなら本読むのもありかも

本家は Tutorial とか Library Reference とかあって便利
http://www.python.org/doc/

日本語サイトは一応あるけどイマイチどこに何があるのかわかりにくい印象がある
http://www.python.jp/doc/

428 :デフォルトの名無しさん:2010/09/23(木) 03:08:59

   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

429 :デフォルトの名無しさん:2010/09/23(木) 07:13:58
ctypes とか swig が出てきた流れで聞くんだけど、
boost::python はどうですか?

どうですか?っていうのも余りに抽象的すぎるんで、
数値計算のためのOpenMPを利用したC++クラスライブラリがあって
それをPythonで使いたい、あわよくばmatplotlibで
可視化はPythonでやれればいいな、という用途に
boost::python はどうよ?って事なんですが。

C++とBoostの機能の一部とテンプレートプログラミングには
慣れているつもりです。

430 :423:2010/09/23(木) 10:07:46
swigでGIL開放する方法見つけた
→ 17.5 Using SWIG-Generated Modules in a Multithreaded Environment
Python CookBook 2ndEditionに乗っている筈が何故か日本語版は未記載だった・・・

431 :423:2010/09/23(木) 11:48:11
でもそこに乗っている方法はswig1.1の古いサンプルみたい
swig1.3以降(2.0も)は
%exception {
Py_BEGIN_ALLOW_THREADS
$action
Py_END_ALLOW_THREADS
}
こんな感じでおkっぽい

432 :デフォルトの名無しさん:2010/09/23(木) 13:46:32
おっぱいさんくす

433 :デフォルトの名無しさん:2010/09/23(木) 15:29:51
>>429
俺が使ったのはboost-1.34くらいのときなので、ちょっとあれですが
悪くはなかったよ。
あまり過大な期待をしない限りは、ってところだったかな…
Python例外とC++例外を対応させられる、とか、結構便利だったと思う。
その時は俺的にはswigも検討したけど、swigよりはいいな、と思った
記憶がある。
個人的には、もう一つの選択肢としては、Cでブリッジ関数書いて、
それをctypesで呼び出す、というのもあって、概ねこの2つのいずれかを
当時は使っていた。

434 :デフォルトの名無しさん:2010/09/23(木) 16:39:26
boost::python は C++ のクラスライブラリをPythonから触るのには向いてるな。
swigはCのライブラリのバインディングを作る
CythonはPythonのクラスライブラリを拡張モジュールで作るのを簡単にする。
それぞれ得意分野が違うな。

435 :デフォルトの名無しさん:2010/09/23(木) 17:21:59
C++と相性のいいのはSWIGとboost::python
機能の充実は SWIG >= boost::python だな
ctypesはCのみ

436 :デフォルトの名無しさん:2010/09/23(木) 18:47:51
C/C++からPythonのモジュールを触るのに向いてるのはないの?

437 :デフォルトの名無しさん:2010/09/23(木) 18:52:48
>>436
それならboost::python

438 :デフォルトの名無しさん:2010/09/23(木) 19:01:37
swig は python だけでなく C# とかにも展開できるんで使っているけど、
typemap あたりがマニアックで使いにくいかなぁ...


439 :デフォルトの名無しさん: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 あたりがマニアックで使いにくいかなぁ
これは同意せざるを得ない


440 :デフォルトの名無しさん:2010/09/23(木) 19:13:22
とりあえず
boost::python
使っておけば安心っぽいですね
ほんとうにありがとうございました

441 :デフォルトの名無しさん:2010/09/28(火) 20:33:42
これどう思う?
ttp://www.python.org/dev/peps/pep-3146/
正直いらないと思うんだが。

442 :デフォルトの名無しさん:2010/09/28(火) 20:56:30
numpy Numeric Numarray のそれぞれの用途とか違いについて教えて下さい

443 :デフォルトの名無しさん:2010/09/28(火) 21:14:44
ところで削除したアプリのレジストリーの設定項目っていつになったら消えるんですか?

444 :デフォルトの名無しさん:2010/09/28(火) 21:32:55
>>441
以前使ってみたけど殆どパフォーマンスは上がらずおいおいって感じだったけど
最適化の余地はまだありそうだしGILはなくなるという話だし、生暖かい目でみてるよ

445 :デフォルトの名無しさん:2010/09/28(火) 21:48:25
Unladen Swallowに対抗して OPython (おっぱいそん) を作ろうとしたら 糞中国人がその名前使ってやがった
断固抗議する

446 :デフォルトの名無しさん:2010/09/29(水) 01:12:29
assert( 1 == 2, "hoge" );
>SyntaxWarning: assertion is always true, perhaps remove parentheses?
なんで?

447 :デフォルトの名無しさん:2010/09/29(水) 01:17:45
それだと assert 文にタプルを渡してることになるよ

448 :デフォルトの名無しさん:2010/09/29(水) 01:19:31
assertに()つけちゃまずいの?
printはOKなのに?
仕様がよくわからん・・・

449 :デフォルトの名無しさん:2010/09/29(水) 01:28:43
printは関数にしてもほぼ意味が変わらないけど
assertには「コンパイルオプションを変えると評価されない→実行時間に影響しない」性質が必要になるから

450 :デフォルトの名無しさん:2010/09/29(水) 01:30:34
いや、ぜんぜんちがう

>>> print 'abc', '123'
abc 123
>>> print('abc', '123')
('abc', '123')

Python は式と文をはっきり区別するので
なんでもかんでも式のように書くのはよろしくないと思う

451 :デフォルトの名無しさん:2010/09/29(水) 01:37:05
python3のことじゃないの?

452 :デフォルトの名無しさん:2010/09/30(木) 00:43:17
ふむーthx>>449 >>450

453 :デフォルトの名無しさん:2010/10/02(土) 15:11:36
Python使ってみようと、Python2.7とPyScripterを入れたんだけど。
PyScripterって、Python2.7に対応して無いのかな?
Python23.dllが無いと言って動いてくれない。(´・ω・`)

454 :デフォルトの名無しさん:2010/10/02(土) 15:21:26
For compatibility with Python 2.6 and Python 3.0, since version 1.9.9.5, PyScripter
requires the latest C++ Redistributable Package. This is automatically installed by
Python 2.6 and Python 3.x. If you do not have any of these versions installed, then
you need to download and install it manually.

455 :デフォルトの名無しさん:2010/10/02(土) 15:55:48
>>453
PyScripterのバージョンは?
俺はまだPython2.6までしか使ってないけど、2.7対応はPyScripter2.0からのハズ。
http://code.google.com/p/pyscripter/downloads/detail?name=PyScripter-v2.1.1-Setup.exe

456 :デフォルトの名無しさん:2010/10/02(土) 18:14:27
vimがいいよ
漢はみんなvimだよ

457 :デフォルトの名無しさん:2010/10/02(土) 18:24:50
男はみんなedだよ

458 :デフォルトの名無しさん:2010/10/02(土) 19:05:35
あいだを取ってEmacsでいいよ

459 :デフォルトの名無しさん:2010/10/02(土) 19:17:33
vimユーザーの俺が言うと自虐的だがemacsはed, vimより上位レイヤーだろ...

460 :デフォルトの名無しさん:2010/10/02(土) 19:19:54
emacs + slime + scheme

461 :デフォルトの名無しさん:2010/10/02(土) 19:34:26
統合環境は好きになれない
いつでもどこでもどんなときで使えるvimを極めると
電車の中でもトイレでも会議中でもセックス中でも
プログラミングできるようになる

462 :デフォルトの名無しさん:2010/10/02(土) 19:40:52
ごにょごにゅ中に素数を数える代わりに頭の中でコード書いたことはある

463 :デフォルトの名無しさん:2010/10/02(土) 19:48:47
>>462
発射時間を調整するためですか?

464 :デフォルトの名無しさん:2010/10/02(土) 21:32:23
PyScripter改造したいんだけどビルドした人いる?
次から次に必要なモジュール(←Delphi用語知らない)が出てきて困ってる。

465 :デフォルトの名無しさん:2010/10/02(土) 21:42:49
PyScripterってDelphi製なのか

466 :デフォルトの名無しさん:2010/10/02(土) 23:00:27
>>455
ども。
ろくすっぽ更新してないサイトからのリンクから、ろくすっぽ更新してないサイトに置いてあるPyScripter1.7.2をダウンロードしてました。
ああぁ…でも、ググってたらEclipseの方が絶対良いと言ってるサイトが出てきた。
もう、いいや。_| ̄|○
どうせ、必死で使う訳じゃないし…

467 :デフォルトの名無しさん:2010/10/02(土) 23:21:08
ごちゃごちゃ言ってないでコードかけや

468 :デフォルトの名無しさん:2010/10/02(土) 23:32:24
ワシ、Emacsのキーバインドを覚えられへんのや…
Vimならなんとかやっていけてるでー

469 :デフォルトの名無しさん:2010/10/03(日) 00:19:24
>>467
なんで、お前なんかに命令されなきゃ成らないんだよ?
コードかいたら、対価に金くれるんか?
あ”?

470 :デフォルトの名無しさん:2010/10/03(日) 00:24:08
お子様の落書きに金を払う物好きはおらんがな

471 :デフォルトの名無しさん:2010/10/03(日) 00:28:54
>>468
C-x C-c だけ覚えとけばええねん

472 :デフォルトの名無しさん:2010/10/03(日) 01:01:40
C-z しちゃうんだよね

473 :デフォルトの名無しさん:2010/10/03(日) 01:08:10
vimがemacsのようにシェルにもなればいいんだがな

474 :デフォルトの名無しさん:2010/10/03(日) 02:06:51
>>468
M-xだけ覚えておけば割となんとかなる

475 :デフォルトの名無しさん:2010/10/03(日) 06:13:20
>>473
tmux

476 :デフォルトの名無しさん:2010/10/03(日) 13:14:07
>>473
なるよ

477 :デフォルトの名無しさん:2010/10/03(日) 20:40:59
こういう時に>>473みたいなことを言い出す輩はたいていemacsもvimも使ってない
emacsユーザーもvimユーザーも妙な使い込みをしてるので自身のエディタにそんなに不満がない

pythonの統合開発環境ってEclipseもPysSripterも微妙で結局エディタに戻るよな

478 :デフォルトの名無しさん:2010/10/03(日) 20:45:42
ていうか、vimだかemacsだかに慣れてしまうと他のどのエディタも微妙に感じてしまうんじゃないのか。

479 :デフォルトの名無しさん:2010/10/04(月) 00:17:25
emacsは設定が面倒だけど
単純なコーディングだけでは最高な環境なんだよな。
実際に動かしながら書けるってIDEや大規模じゃ難しい
WinでNotepad++とDOS窓でやったけど気が狂いそうだった。

480 :デフォルトの名無しさん:2010/10/04(月) 00:22:37
JavaとかC#なら迷わずIDEだけど
Pythonはたしかに微妙だな

481 :デフォルトの名無しさん:2010/10/04(月) 00:57:52
emacsもviも使いこなせたらさぞかし便利だろうと思うけど、なかなか…大変だな

482 :デフォルトの名無しさん:2010/10/04(月) 02:30:46
windowsで育った人間は、仕事か研究かで必要に迫られなければ
わざわざ使い方入門なんてしないだろうとは思う <unix由来の二つ

483 :デフォルトの名無しさん:2010/10/04(月) 02:34:33
大学の授業で強いられる

484 :デフォルトの名無しさん:2010/10/04(月) 03:02:34
強いられると思ってる間は駄目だな

485 :デフォルトの名無しさん:2010/10/04(月) 03:25:15
自分から使おうとは思わないよ

486 :デフォルトの名無しさん:2010/10/04(月) 23:01:01
気が付いたらダメな感じのヲタ

487 :デフォルトの名無しさん:2010/10/05(火) 01:51:34
やりたくないことを無理してやることないよ

488 :デフォルトの名無しさん:2010/10/06(水) 07:21:51
PythonにもメタプログラミングRubyっぽい本が欲しい
つまりPythonの言語仕様や考え方をとことん詰め込んだ本

489 :デフォルトの名無しさん:2010/10/06(水) 07:45:54
import this の逐条解説から始まる本なら知ってる

490 :デフォルトの名無しさん:2010/10/06(水) 08:53:51
>>488
エキスパートPythonはもう読んだ?

491 :デフォルトの名無しさん:2010/10/06(水) 09:43:30
>>488
Django のソースとか読んでみたらどう?

492 :デフォルトの名無しさん:2010/10/06(水) 10:19:26
どっちもPythonの思想を知るには役に立たないけどね

493 :デフォルトの名無しさん:2010/10/06(水) 14:44:04
リバースエンジニアリングpyrhonによる〜はもう読んだ?

494 :デフォルトの名無しさん:2010/10/06(水) 15:46:52
リバエンは良い本だけどpythonと直接は関係ないぞ

495 :デフォルトの名無しさん:2010/10/06(水) 16:20:14
計算機プログラムの構造と解釈とschemeが直接は関係ないみたいなもんだろ?
でも良書の言語になるのは良いじゃん

496 :デフォルトの名無しさん:2010/10/06(水) 18:38:51
リバエンってPythonの言語仕様や考え方をとことん詰め込んでたっけ?

497 :デフォルトの名無しさん:2010/10/07(木) 00:03:43
はい

498 :デフォルトの名無しさん:2010/10/09(土) 18:01:14
あえてくわしく貼る

ttp://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
実例ソースのページ

499 :デフォルトの名無しさん:2010/10/09(土) 19:29:12
それってライセンス以外にPyQtよりいいことあるの?

500 :デフォルトの名無しさん:2010/10/09(土) 21:36:30
>>498
よくやった
感動はしない

501 :デフォルトの名無しさん:2010/10/10(日) 01:03:34
Dive into ppythonの日本語訳をPDFにしたものってどこかにある?

502 :デフォルトの名無しさん:2010/10/11(月) 15:07:36
./hoge.py
./hage/fuga.py

上記のディレクトリ構造で、
fuga.pyからhogeをimportしたい場合はどうすればいいですか?
今はsys.pathに"../"を追加してるんですけど、これはpythonの流儀的にOK?

503 :デフォルトの名無しさん:2010/10/11(月) 16:22:41
パッケージ構成見直した方がいいよ(__main__をimportしながら)

504 :デフォルトの名無しさん: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 を使うという手もある。

505 :デフォルトの名無しさん:2010/10/11(月) 17:10:06
>>502
メインプログラム(?)はhoge.pyかまたはhoge.pyと同じディレクトリにあるんでしょう
だったら、fuga.pyがモジュールで単独実行しない限り fuga.pyの中で import hoge でOKじゃない?
テストなどで fuga.py を単独実行させるのなら PYTHON_PATH を設定すればいいと思う

506 :デフォルトの名無しさん:2010/10/11(月) 21:44:29
至る所に付いて回るselfが気持ち悪い。。。吐き気がする。。。

507 :デフォルトの名無しさん:2010/10/11(月) 21:52:12
self.sex = onani ですよね

508 :デフォルトの名無しさん:2010/10/11(月) 21:52:29
モルダー貴方疲れてるのよ

509 :デフォルトの名無しさん:2010/10/11(月) 22:23:13
モルダーの性別=オナニーってことか
Xファイル懐かしいな

510 :デフォルトの名無しさん:2010/10/11(月) 23:05:05
ついて回るも何も、ただの引数じゃないか。

511 :デフォルトの名無しさん:2010/10/11(月) 23:36:24
生まれついてのモノだし気にするな

512 :デフォルトの名無しさん:2010/10/12(火) 15:30:13
バカって勝手に自滅するから見てて面白いよね。

513 :デフォルトの名無しさん:2010/10/12(火) 17:37:12
>>512
面白いw

514 :デフォルトの名無しさん:2010/10/13(水) 11:29:55
MySQLdbでテーブルを端から1レコードずつ読んでは整形して
出力するだけの簡単なプログラムを書いたらテーブル内容を
全部メモリに読もうとしてプロセス太りまくって死亡w

デフォルトが全部メモリにためこんでからとか作った奴馬鹿か?

515 :デフォルトの名無しさん:2010/10/13(水) 11:58:43
>>514
connection から excute しろよ馬鹿

516 :デフォルトの名無しさん:2010/10/13(水) 12:05:40
あと、MySQLdbには数ヶ月前まで、テキストをUnicodeにした場合にcodec周りで参照の開放漏れがあった。
最新版のMySQLdbとカーソルオブジェクトをちゃんと使えば大丈夫なハズ。

517 :デフォルトの名無しさん:2010/10/13(水) 12:29:07
MySQLはUTF-8で使うもんだろ常考

518 :デフォルトの名無しさん:2010/10/13(水) 17:45:52
数値入力の仕方が分からん
raw inputじゃ文字列はいけても、数値はダメみたいだし

方法を教えてけれ

519 :デフォルトの名無しさん:2010/10/13(水) 17:58:23
文字列の入力までできてるんなら、あとはその文字列を
数値に変換すればいいんじゃねーの?

520 :デフォルトの名無しさん:2010/10/13(水) 18:02:53
>>518
x = int(input())

521 :デフォルトの名無しさん:2010/10/13(水) 18:14:23
>>519
わざわざ変換なんていうプロセスを入れないとダメなの?
Cなら簡単なのに

>>520
できた
dクス

522 :デフォルトの名無しさん:2010/10/13(水) 18:16:02
>>521
>Cなら簡単なのに

kwsk

523 :デフォルトの名無しさん:2010/10/13(水) 18:26:20
scanf()じゃないかなたぶん

524 :デフォルトの名無しさん:2010/10/13(水) 18:38:52
scanf() だったら手間は >>520 と違わないだろ

525 :デフォルトの名無しさん:2010/10/13(水) 18:39:43
つ ttp://www.python.jp/doc/2.5/lib/node49.html

526 :デフォルトの名無しさん:2010/10/13(水) 20:46:12
INPUT "名前を入力してください。";name$
INPUT "年齢を入力してください。";nenrei
な時代が長かった。



527 :デフォルトの名無しさん:2010/10/14(木) 01:12:24
>>524
scanf()なんて恐ろしくてとても使えません

528 :デフォルトの名無しさん:2010/10/14(木) 01:23:35
scanfとか今時ねーわ

529 :デフォルトの名無しさん:2010/10/14(木) 02:22:11
10年近く前に、Cのスレでそんな書き込みをいっぱい見た。
結局、ネタに飢えたキチガイの書き込みでしか無かった。
今だにそんなキチガイが生きてるんだなと思った。


530 :デフォルトの名無しさん:2010/10/14(木) 04:01:10
>>528
ああ、馬鹿には使えない

531 :デフォルトの名無しさん:2010/10/14(木) 05:55:21
昔は使っちゃいけない関数の代名詞だったんだけど、今では大丈夫になったんだっけ? >sscanf
実際、%sは危険かもしれないけど%dは便利だったし、使ってはいけない関数じゃなくて使いどころ次第だった。

532 :デフォルトの名無しさん:2010/10/14(木) 06:29:32
>>531

一応今は scanf_s というのがあって %s でも安全に使えるようにはなって
いる。(普通は fgets 使うだろうけど)

普通は scanf だとエラー処理が難しいので fgets して sscanf するわけで、
手間は Python と変わらない。


533 :デフォルトの名無しさん:2010/10/14(木) 08:43:11
>>516
エキスパートさんお疲れさまです。参考になります。

534 :デフォルトの名無しさん:2010/10/14(木) 10:15:08
>>531
%s
がgets()のように危険だけど
%[255]s
のように使えばいいので、scanf()はgets()とは違ってセキュリティ上の
問題を回避不可能な関数じゃないよね

素人が陥りやすい罠はscanf()の戻り値を見ないことなんだが
getc()やfgets()だって戻り値を見ないで回せば無限ループになるだけなのに
なぜかscanf()は戻り値を見ない初心者向けのサンプルが横行していた
scanf()でのエラー処理ではrewind()しろ、などという環境依存の対処法が
横行しているのも特徴だ

こういう色々な理由で「馬鹿には使えない関数だから使わせるな」
といわれていたのがscanf()
ま、そんなわけだから、>>527>>528のように思われているぐらいがいいのかもな

535 :デフォルトの名無しさん:2010/10/14(木) 10:16:08
あー
×%[255]s
○%255s
だね、ごめん

536 :デフォルトの名無しさん:2010/10/14(木) 13:15:29
sscanf(buf, "%.*s", size, str);


537 :デフォルトの名無しさん:2010/10/14(木) 19:05:44
python 用の Mersenne Twister のモジュールはありますか?

538 :デフォルトの名無しさん:2010/10/14(木) 20:12:38
>>537
Python\Lib\random.pyに
General notes on the underlying Mersenne Twister core generator:
と書いてある

539 :デフォルトの名無しさん:2010/10/14(木) 21:22:28
>>535
これだけ偉そうに語った>>534ですら間違える書式指定。
馬鹿には使えないのは確かなようだ。



540 :デフォルトの名無しさん:2010/10/15(金) 01:05:50
ふと覗いたPythonのスレでCの勉強が出来るとは・・・Pythonistさんありがとう・・・

541 :デフォルトの名無しさん:2010/10/15(金) 01:28:47
ネタレスしたかっただけだろ。w
馬鹿か。w
Pythonの変態仕様に、今頃喰いつくなよ。w

542 :デフォルトの名無しさん:2010/10/15(金) 01:35:47
その文の最後についている"w"にはなんの意味があるんですか?

543 :デフォルトの名無しさん:2010/10/15(金) 01:38:01
セミコロンと同じ意味なんだろ
もしくはインデント

544 :デフォルトの名無しさん:2010/10/15(金) 01:38:36
ネタレスしたかっただけでは・・・?

545 :デフォルトの名無しさん:2010/10/15(金) 01:39:19
書き込むときは"w"、読み込むときは"r"

546 :デフォルトの名無しさん:2010/10/15(金) 01:45:58
。の後ろに草生やすと変な感じだな

547 :デフォルトの名無しさん:2010/10/15(金) 01:46:18
>>545
コレは勉強になるwb

548 :デフォルトの名無しさん:2010/10/15(金) 04:04:06
print("書き込むときは\"w\"、読み込むときは\"r\"")

549 :デフォルトの名無しさん:2010/10/16(土) 01:12:44
>>542
2chのオフサイドルール

550 :デフォルトの名無しさん:2010/10/16(土) 17:25:14
>>304 >>305 >>306
thxです
このプログラムはライブラリとして書いてて、
hoge.pyがメインモジュールです。
hoge内で、fugaをimportしてるのですが、
fuga内からもhogeを参照する必要がでてきてしまいまして・・・
さらにfuga.py内に
if __name__ == "__main__":
Test();
みたいな単体テストコードも書いてて、
fuga.pyだけで動かしたい場合に困ってました。
とりあえず../を未だに使ってますが、
リリースする際とかはまずいですか?

551 :デフォルトの名無しさん:2010/10/16(土) 17:26:21
完全に誤爆
>>503 >>504 >>505

552 :デフォルトの名無しさん:2010/10/17(日) 03:15:57
>>550
;は不要

553 :デフォルトの名無しさん:2010/10/17(日) 21:32:40
spamとham
プログラミング言語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

( ・∀・)つ〃∩ へぇ〜

554 :デフォルトの名無しさん:2010/10/18(月) 11:53:45
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

555 :デフォルトの名無しさん:2010/10/19(火) 17:02:27
ArchLinuxの/usr/bin/pythonがPython3になったぞー

556 :デフォルトの名無しさん:2010/10/19(火) 17:04:22
ubuntuが3になったら本気だす

557 :デフォルトの名無しさん:2010/10/19(火) 18:00:13
勝手に3にしないでほしいな

558 :デフォルトの名無しさん:2010/10/19(火) 18:06:47
Pythonを勉強しようと思うのですが、おすすめのサイトはありませんか?
C言語とPerlの基本文法は覚えて、小さなツールを作っている程度の知識です。

559 :デフォルトの名無しさん:2010/10/19(火) 18:15:12
公式のチュートリアルとPEP8

560 :デフォルトの名無しさん:2010/10/19(火) 18:22:40
無駄に分厚い恥Pyだけはやめておいた方がいい

561 :558:2010/10/19(火) 18:26:39
ありがとうございます

>>559
公式チュートリアルとは
http://www.python.jp/Zope/intro/instant_python_jp
これでしょうか?
PER8はwikiもみたのですが、どのサイトかわかりませんでした。
URIを教えていただけませんか?



562 :デフォルトの名無しさん:2010/10/19(火) 18:31:46
>>561
Python チュートリアル
http://www.python.jp/doc/2.5/tut/tut.html

PEP 8 -- Style Guide for Python Code
http://oldriver.org/python/pep-0008j.html

563 :デフォルトの名無しさん:2010/10/19(火) 18:40:50
2.6.2
http://pythonjp.sourceforge.jp/dev/

564 :デフォルトの名無しさん:2010/10/19(火) 19:02:55
入門系
ttp://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

565 :デフォルトの名無しさん:2010/10/19(火) 19:06:59
>>561
公式のドキュメントを見ながら、コーディングすれば普通に覚えられる。
特定のライブラリ・ドキュメント、あるいは言語学習のススメみたいなものは自分で探すべき。

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

566 :デフォルトの名無しさん:2010/10/19(火) 21:28:23
>>561
PEP 8 のチェックツールとして pyLint はなかなかよい

567 :デフォルトの名無しさん:2010/10/19(火) 21:52:01
その辺、次スレからテンプレ入りっすかね。
まぁ、馬鹿はテンプレ見ないっすけど。w

568 :デフォルトの名無しさん:2010/10/19(火) 23:43:54
まあ、2chも落ち目なのでまともな奴はこんなスレ見ないっすけど。w

569 :デフォルトの名無しさん:2010/10/20(水) 01:11:39
2ch落ち目なのか
んじゃ今一番ホットな場所ってどこなの?

570 :デフォルトの名無しさん:2010/10/20(水) 01:12:48
中国

571 :デフォルトの名無しさん:2010/10/20(水) 01:15:56
ほっともっと

572 :デフォルトの名無しさん:2010/10/20(水) 01:18:14
俺みたいな初心者には2ch価値あるよ。
始めて数週間だけどPython面白いな。

573 :デフォルトの名無しさん:2010/10/20(水) 01:22:05
落ち目のところは面白い人が見限って去った後なので面白くない
ホットなところは新規がどんどん入るから厨臭い
楽しめない奴はどこだって楽しめないものさ

574 :デフォルトの名無しさん:2010/10/20(水) 02:09:33
pass

575 :デフォルトの名無しさん:2010/10/20(水) 04:58:40
The Python Tutorial
http://docs.python.org/tutorial/
http://docs.python.org/release/3.0.1/tutorial/

英語で勉強してみようと思うのですが、
今読むとしたら、Python 2.7 用か Python 3.0 用の
どちらを読んだ方が良いですか?

576 :デフォルトの名無しさん:2010/10/20(水) 05:28:56
>>572

577 :572:2010/10/20(水) 08:56:14
ん?なぜ俺?最近始めただけでよく知らないんだけど。
俺はとりあえず2.6で読むよりは主にコードを書いてた(他の言語やってたので)。
期間は2週間ほど。その間の情報収集は日本語のWeb情報のみ。
何となく分かったので今はエキスパートPythonプログラミング読んでる。
英語もたまに見る。

578 :デフォルトの名無しさん:2010/10/20(水) 09:15:10
なんでお前が答えてんの?

579 :デフォルトの名無しさん:2010/10/20(水) 09:40:36
>>578
お前が答えられなかったからじゃね?

580 :デフォルトの名無しさん:2010/10/20(水) 09:41:41
何か変なのが棲み付いてるな……

581 :デフォルトの名無しさん:2010/10/20(水) 10:20:33
>>575
散々既出な質問だが...
「何のためにPythonやりたいのか?」それに尽きる。

2.xの方がライブラリはずっと充実しているので、実用的な目的でPythonやるなら2.xがいい。
ただし文字列処理は3.xでは完全にUnicode化されていて日本語が扱いやすいので、
ライブラリはあんまりどうでもよくて(or 3.xでも対応してて)文字列を扱う処理が多いときは3.xでもいいかもしれない。

何が出来るとかどうでもよくて、プログラミング言語を習得したいのなら、3.xでいい。

このレスに書いてあることがよくわからないなら、2.xにしとくといい。

582 :デフォルトの名無しさん:2010/10/20(水) 11:14:17
最後の一行で楽しくなったのは初めてだ。

583 :デフォルトの名無しさん:2010/10/20(水) 13:53:06
3.x は人柱

584 :575:2010/10/20(水) 15:09:26
>>581
ありがとうございます。

> 何が出来るとかどうでもよくて、プログラミング言語を習得したいのなら、3.xでいい。

2.x にしとこうかな…

585 :デフォルトの名無しさん:2010/10/20(水) 15:11:13
3.xを積極的に使う理由は皆無

586 :デフォルトの名無しさん:2010/10/20(水) 15:13:11
blender2.5

587 :デフォルトの名無しさん:2010/10/20(水) 15:16:32
英語でいいならTutorialよりA byte of pythonとかの方が分かりやすいんじゃない
http://www.swaroopch.com/notes/Python
こっちも無料だし2.xと3.xに分かれてるし

588 :デフォルトの名無しさん:2010/10/20(水) 15:16:58
Archerの漏れが颯爽と通り過ぎますよ

589 :デフォルトの名無しさん:2010/10/21(木) 00:14:42
Luaに居場所を削られてく。。。

590 :デフォルトの名無しさん:2010/10/23(土) 03:35:19
ネットより本派なのでみんなのパイソンを入門書として買おうかと思ってるんですが良書と言えそうですか?

591 :デフォルトの名無しさん:2010/10/23(土) 03:51:21
微妙

これが良かった希ガス
ttp://www.amazon.co.jp/dp/4798026557/

592 :デフォルトの名無しさん:2010/10/23(土) 04:03:04
>>590
Webだけで十分だよ

注意すべき点は・・・
・代入は値のコピーでなく参照するためのラベルを付ける行為
・クラスのアトリビュートとミュータブルなオブジェクトの関係

この2点に気をつければ他の言語を理解できる人が躓く事はないと思う

593 :デフォルトの名無しさん:2010/10/23(土) 04:32:24
unicode で躓いた orz

594 :デフォルトの名無しさん:2010/10/23(土) 05:07:54
>>592
注意すべき点の一点目は実は全部ポインタで扱ってるってことですか?C的な意味で

595 :デフォルトの名無しさん:2010/10/23(土) 06:28:12
>>593
具体的に

>>594
Pythonはいろんなもの(文字列や数値やクラスのオブジェクトだけじゃなく、
クラス、関数、モジュールも)がオブジェクトで、変数はオブジェクトへの参照を
格納してる。
a = [0]
b = a
a[0] = 1
print b # [1]
print a is b # True aとbは同一のオブジェクトを参照している
c = [1]
print a == c # True aとcは同じ値
print a is c # False aとcは別のオブジェクト
a[0] = 2
print c # [1]

この挙動はJavaの非プリミティブ型と同じなので、Javaの人であれば「プリミティブ型が
無いJavaの変数」と言えば理解が早いと思う。
Javaに比べると、 equals() が == に、 == が is になった。

596 :デフォルトの名無しさん:2010/10/23(土) 06:43:15
>>595
なるほど、詳しい説明ありがとうございます
はじめのほうで説明欲しい事実ですね


597 :デフォルトの名無しさん:2010/10/23(土) 07:16:48
>>595
嘘が書いてあるWebサイトを信用してたから
u'ほげほげ' と書けば utf-8 になると思ってた orz

598 :デフォルトの名無しさん:2010/10/23(土) 07:39:00
>>595

java
    System.out.println(1 == 1.0); // true
    Integer i = new Integer(1);
    Float f = new Float(1.0);
    System.out.println(i.equals(f)); // false

python
>>> 1 is 1.0
False
>>> 1 == 1.0
True


599 :デフォルトの名無しさん:2010/10/23(土) 07:49:36
>>598
だから、「非プリミティブ型」の == や is だって。 1 や 1.0 はプリミティブ型だから違う。

== が同一性チェックで、 equals が同値チェックっていう意味で、それぞれPythonの
isと==だと言った。
FlaotとIntegerで1と1.0を同値として扱うか扱わないかはまた別の問題。

結果だけ見ないで、意味を考えて。

600 :デフォルトの名無しさん:2010/10/23(土) 08:10:22
    Integer i = new Integer(1);
    Float f = new Float(1.0);
    System.out.println(i == f); // コンパイルエラー


601 :デフォルトの名無しさん:2010/10/23(土) 08:13:47
    Integer i = new Integer(1);
    Integer j = new Integer(1);
    System.out.println(i == j); // false
    System.out.println(i.equals(j)); // true

>>> 1 == 1
True
>>> i = 1
>>> j = 1
>>> i is j
True
>>> i == j
True


602 :デフォルトの名無しさん:2010/10/23(土) 08:26:44
>>591
理由もなく他者をおとしめたとしても、売れない書籍が売れるようになるものなのでしょうか。

603 :デフォルトの名無しさん:2010/10/23(土) 09:17:56
None以外のimmutable型をisで比較するとか、ソース読まずに実装を探りたい以外に用途が分からない。

604 :デフォルトの名無しさん:2010/10/23(土) 10:57:32
>>594
うん
もっと近いのは参照(リファレンス)みたいなもの(C++的な意味で)

もちろん
a = copy.copy(foo)
b = copy.deepcopy(bar)
でいわゆる「値をコピーして代入」=「値をコピーして新しいラベルを作成」も可能

ついでに2番目は説明が面倒なので対策だけ書くと
・mutableな要素はインスタンスのアトリビュートで生成する(一般的には def __init__(self): とかで・・・)
・(予期せぬ結果を防ぐため)クラスのアトリビュート(クラス変数)にmutable(変更可)な要素を指定してはならない

   >>> class Hoge(object):
   ... foo = []
   ...
   >>> hoge1 = Hoge()
   >>> hoge1.foo.append("I'm hoge1.")
   >>> hoge2 = Hoge()
   >>> hoge2.foo
   ["I'm hoge1."]
   こんな事が起こっちゃう



605 :デフォルトの名無しさん:2010/10/23(土) 11:13:47
C++の参照って代入は値のコピーだからポインタの方が近いと思うんだが

606 :デフォルトの名無しさん:2010/10/23(土) 11:16:22
C++を知ってるんなら、shared_ptrが一番近いな


607 :デフォルトの名無しさん:2010/10/23(土) 12:10:13
>>604
それは、クラス変数の期待する結果だと思うが。

608 :590:2010/10/23(土) 12:23:09
みんパイの評価はあれでしたが勉強する前に他の言語との注意するべき違いが良く分かって良かったです。皆さんありがとうございました。


609 :デフォルトの名無しさん:2010/10/23(土) 12:26:10
Python初心者お断り

610 :デフォルトの名無しさん:2010/10/23(土) 12:35:11
他の言語とか知らなくても参照とmutable/immutableさえ
ちゃんと説明してある本なら平気

ただ参照渡しとかうっかり書いてある本だと死ぬ

611 :デフォルトの名無しさん:2010/10/23(土) 13:15:44
>>610
つまりJython本最高ですねわかります

612 :デフォルトの名無しさん:2010/10/23(土) 14:23:36
>>607
そんな知識で大丈夫か?

613 :デフォルトの名無しさん:2010/10/23(土) 15:22:04
本とかちゃんと読んだことなくて初心者質問で申し訳ないんだが
>>610
> 参照渡しとかうっかり書いてある本だと死ぬ
のはどうして?
型によって値渡しと参照渡しが変わるという認識なんだけど、例えばどんなことで死ねるの?

614 :デフォルトの名無しさん:2010/10/23(土) 15:38:20
>>605
などと意味不明なことを述べており…

615 :デフォルトの名無しさん:2010/10/23(土) 15:39:00
>>612
俺も>>607と同意かな
他の言語の経験者相手の話なら、クラスフィールドがインスタンス間で共有されるのは
言うまでもない当然のことで、mutable云々は余計なお世話

> 型によって値渡しと参照渡しが変わるという認識
それが間違っているから、でしょう



616 :デフォルトの名無しさん:2010/10/23(土) 15:49:31
>>615
やべ、頭の弱い子に触れちゃったw

617 :デフォルトの名無しさん:2010/10/23(土) 16:41:47
参照渡しなんてほとんどなくね?
だいたいは値型の値渡しか参照型の値渡し

618 :デフォルトの名無しさん:2010/10/23(土) 17:17:20
>>615
もっと勉強しろよ
あきらかに経験不足だぞお前

619 :デフォルトの名無しさん:2010/10/23(土) 18:49:19
>>607,>>615
これに気づかなかったら、>>604の言いたいことは分からない
>>> class Hoge:
... ls1 = []
... ls2 = []
... num = 0
...
>>> hoge1 = Hoge()
>>> hoge1.ls1.append(1)
>>> hoge1.ls2 = [1]
>>> hoge1.num = 1
>>> hoge2 = Hoge()
>>> print hoge1.ls1, hoge1.ls2, hoge1.num
[1] [1] 1
>>> print hoge2.ls1, hoge2.ls2, hoge2.num
[1] [] 0


620 :デフォルトの名無しさん:2010/10/23(土) 18:55:41
>>613
正確には参照渡しではなく参照の値渡し…つまり
つまりオブジェクトのIDみたいなものを値渡ししてるだけで
変数そのものは渡ってない、という話だと思うぞ
本来の意味の参照渡しなら変数そのものが渡って
引数に対する操作はそのまま渡された変数に対する操作になるからね

621 :デフォルトの名無しさん:2010/10/23(土) 19:03:19
実装としては、インスタンス変数の持ってる変数テーブルに値がなかったらクラスの持つ変数テーブルを参照する。
インスタンス変数の要素に代入された場合は、インスタンス変数のテーブルに書き込むって処理になるんだろうけど。

Python的解釈では、(たとえimmutableであっても)変数名はラベルでしかないのだから、
           ______________
hoge1.num ---->|   0  |
hoge2.num ---->|____________|

だったのが、=演算子で新たな値を束縛したから、
           ______________
           |   0  |
hoge2.num ---->|____________|

hoge1.num ---->[  1  ]

になった、と考える。ls2についても同様。
ls1は、ポインタ分かるなら書かなくても分かるだろう。
=演算子は代入じゃなく、値の束縛というのがPythonでは重要。

622 :デフォルトの名無しさん:2010/10/23(土) 19:15:38
>>619
なるほどよく分かった、ありがとう


623 :デフォルトの名無しさん:2010/10/23(土) 19:30:40
>>615
> クラスフィールドがインスタンス間で共有されるのは
> 言うまでもない当然のことで
お前がそう思うんならそうなんだろう、お前ん中ではな


624 :デフォルトの名無しさん:2010/10/23(土) 21:57:20
IronPythonのJim Hugnin氏,Microsoftを去りGoogleへ
ttp://coreblog.org/ats/jim-hugnin-left-microsoft-going-to-google
ttp://opcdiary.net/?p=4466

625 :デフォルトの名無しさん:2010/10/23(土) 21:57:35
つまりどういうことだってばよ?

626 :デフォルトの名無しさん:2010/10/23(土) 22:06:27
MSBuildとか腐れビルドエンジン作るぐらいなら
IronPython使えよこの野郎っていう意思表示だなこれは

627 :613:2010/10/23(土) 22:13:15
>>620
言ってることは「なんとなく」わかるけど、実際の動作や概念的な仕様はともかく
使い方だけで考えればjavaとの対比でいって

pythonで数値を渡す -> javaでprimitiveな型の値を渡す感じ
pythonでリストを渡す -> javaのStringBufferを渡す感じ
pythonでタプルを渡す -> javaのStringを渡す感じ

みたいに考えていいんだよね?

であれば、数値は値渡しで、リスト・タプルは参照渡しみたいに考えると
諸々含めてスッキリするんだけど、やっぱり数値の0もオブジェクトみたいに
考えないとどこかで違いが出てきて困ったりするの?

628 :デフォルトの名無しさん:2010/10/24(日) 03:11:09
>リスト・タプルは参照渡し
だからそれは参照型の値渡しな

629 :デフォルトの名無しさん:2010/10/24(日) 10:09:04
>>627
> 数値の0もオブジェクトみたいに考えないと
Javaはしらんのだが、渡し型とオブジェクトかどうかは関係あるのか?
けど、数値もオブジェクトだよ。

>>> isinstance(1, object)
True
>>> 1 .__add__(2)
3

630 :デフォルトの名無しさん:2010/10/24(日) 10:13:50
Pythonには参照渡しはない。

call by object-sharing なので、オブジェクトがミュータブルオブジェクトの場合、
値を変えることができるわけ。

数値はイミュータブルオブジェクト。

631 :デフォルトの名無しさん:2010/10/24(日) 10:19:41
Cに参照渡しはないって言ってるようなもんだな。誰もそんなこと聞いてないっつうに

632 :デフォルトの名無しさん:2010/10/24(日) 10:24:25
>>627 Javaでいうならこうなるんじゃない
pythonで数値、タプルを渡す -> javaのStringを渡す感じ
pythonでリストを渡す -> javaのStringBufferを渡す感じ

>>629
Javaはオブジェクトかどうかで渡し方が決められてる(非オブジェクト→値渡し、オブジェクト→参照の値渡し)
あとJavaも実際には「参照渡し」はない。用語としては使われるけど参照の値渡しの意味

633 :デフォルトの名無しさん:2010/10/24(日) 10:36:25
用語として使ってんのにいちいちツッコむな

634 :デフォルトの名無しさん:2010/10/24(日) 10:47:42
>>631
Pythonではそこ重要だよ。
変に参照渡しだからとか考えるよりも>>630のように考えた方が挙動を一番きれいに説明できる。

635 :デフォルトの名無しさん:2010/10/24(日) 10:50:41
同じことだろ

636 :デフォルトの名無しさん:2010/10/24(日) 10:51:01
仮引数に別の値も「代入」したらcaller側の変数の値も変わるのが参照渡しだろ
つまり仮引数と実引数の「値」が同じだけでなく、同じ左辺値(いれもの)を指してる
ただの別名

Cは全部値渡しだが、ポインタを使って似たことはできる
JavaやPythonは値渡しでポインタやリファレンスもないから、2つの変数の値を交換する
swap()のような関数は書けないぞ

637 :デフォルトの名無しさん:2010/10/24(日) 10:52:58
Pythonが値渡し?

638 :デフォルトの名無しさん:2010/10/24(日) 10:54:43
>>637
確かめるのは簡単
n = 1
def f(x): x = 2
f(n) # 参照渡しならnは2になるが、1のまま

a = [1,2,3]
def f(x): x = [4,5,6]
f(a) # 参照渡しならaは[4,5,6]になるが、[1,2,3]のまま

639 :デフォルトの名無しさん:2010/10/24(日) 11:04:02
まあ実質的には値渡しだよ。本質的には違うけど

640 :デフォルトの名無しさん:2010/10/24(日) 11:09:15
>>639のようなバカに納得させるのは不可能だな。
この低能には、正しい用語と定義を理解することはできない。

641 :デフォルトの名無しさん:2010/10/24(日) 11:11:07
キレたw

642 :デフォルトの名無しさん:2010/10/24(日) 11:17:53
LLの言語のスレは何故か定期的にこの話題になるなw



643 :デフォルトの名無しさん:2010/10/24(日) 11:18:13
実質的にも本質的にも値渡しだな

644 :デフォルトの名無しさん:2010/10/24(日) 11:19:08
参照の値渡しが参照渡しに見えたりごっちゃになるのも、
慣れないうちや参照渡し以外も使える言語の経験が長いとあるとわからないでもないぞ

645 :デフォルトの名無しさん:2010/10/24(日) 11:26:30
>>640みたいなのと会話するのが一番疲れる。朝生とかでも時々いるよね

646 :デフォルトの名無しさん:2010/10/24(日) 11:29:13
オレ定義と辞書の定義が違う場合に
オレ定義が優先されるという奴とは会話がなりたたない。

647 :デフォルトの名無しさん:2010/10/24(日) 11:29:56
すぐにキレる奴とは会話が成り立たない

648 :デフォルトの名無しさん:2010/10/24(日) 11:33:22
田原総一郎なんかがそうだな
どうせ盛り上げて視聴率取れれば良いから
話の整合性とか落としどころとかそんなの考えてない

649 :デフォルトの名無しさん:2010/10/24(日) 11:44:03
C++で言う参照変数と参照渡しをごっちゃにしている馬鹿がいるな

650 :デフォルトの名無しさん:2010/10/24(日) 12:10:29
型付けられた変数の実装に関する「参照型」と、
引数の渡し方に関する「参照渡し」を区別することが、
そんなに敷居が高いこととも思えないのだが。

つうか、値渡し以外知らない人って、そんなに多いのかな?

651 :デフォルトの名無しさん:2010/10/24(日) 12:49:49
google大学の社内レクチャーってお勧め?

とりあえずあることだけはハケーンしたんだが。

652 :620:2010/10/24(日) 13:39:08
参照の値渡しと参照渡しの違いはC++のポインタ渡し(明示が必要な参照の値渡しと
考える)と参照渡しの違い程度なので正直意識的に区別せずとも本能的に区別できる。
だからそれを区別できないと使い方で困るケースは現実的にないように思う。
数値リテラルなどがオブジェクトとして扱われる言語は昔から結構あるけど、
普段それを意識しなくても使えると思う。理由はCの数値リテラルと同様な値渡しと
考えて問題がないから。

言い方悪いけど、欲しい回答と違う回答しか出てこないので明確にいうと
「実際の動作や概念的な仕様はどうでもいい」。
使い方だけで考えて、どこかで違いが出てきて困ったりする具体的なケースを教えてほしい。
(620以降自分のレスはこれが最初)

653 :デフォルトの名無しさん:2010/10/24(日) 13:43:05
誰がどのレスとか確認の仕様もないし興味ないよ。自己主張すんな

654 :デフォルトの名無しさん:2010/10/24(日) 13:47:14
ほんまやで
(653以降自分のレスはこれが最初)

655 :デフォルトの名無しさん:2010/10/24(日) 14:00:03
>>652
引数に代入したら参照渡しなら呼び出し側の変数が変わるし
参照の値渡しなら変わらないのだから、それは違うものだろ

要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)
タプルを返せるのだから、別に困りはしないが

ごく単純な話なのに、そんな長文で一体何がいいたいんだ?

656 :デフォルトの名無しさん:2010/10/24(日) 14:04:36
簡潔に言えないから。あと長文だとなんとなく説得力が増す気がするから

657 :デフォルトの名無しさん:2010/10/24(日) 14:18:17
>>655
> 引数に代入したら参照渡しなら呼び出し側の変数が変わるし
> 参照の値渡しなら変わらないのだから、それは違うものだろ
>>652に書いてあるように、そこは本能的に分かるから使い方的にはわざわざ
区別する必要ないと思うんだ。

> 要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)
> タプルを返せるのだから、別に困りはしないが
リストや辞書などは使えるが返すほうが良いと思うけど、それは無関係な話

> ごく単純な話なのに、そんな長文で一体何がいいたいんだ?
>>627の話

658 :デフォルトの名無しさん:2010/10/24(日) 14:41:35
JavaのintとStringを「値的に振舞うもの」として同列に扱うなら、
Pythonのimmutableなオブジェクトも全部同じグループに入る
デザパタで言うValue Object

が、>>627はintとStringを区別しているのだから、それを区別したいのなら、
Pythonの数値やstrやタプルは全部JavaのStringと同じグループに入り、
Javaのintに相当するものはPythonには存在しない


659 :デフォルトの名無しさん:2010/10/24(日) 14:51:26
>>658
>>652に書いたとおり「実際の動作や概念的な仕様はどうでもいい」ので同じグループに入れる必要はない。
概念的に何に適合するかではなく使い方的にどう困るかを教えてほしい。
例えばJavaのintに相当すると仮に考えた場合にどう困るかということ。

660 :デフォルトの名無しさん:2010/10/24(日) 14:56:21
>>659
端的に言えばJavaのintはオブジェクトではないので、
スタック上に配置されるし、Objectを継承していないし、メソッドを持たないし、
ジェネリックスのパラメータにできないし、
組み込み配列以外のコンテナには入れられない(ので、最近はboxingを自動で
行ってくれるようになった)

Pythonのintはごく普通のオブジェクトなので、そういう差別や区別がない

661 :デフォルトの名無しさん:2010/10/24(日) 14:58:41
プリミティブの意味が判ってない香具師がいるな

662 :デフォルトの名無しさん:2010/10/24(日) 15:00:46
Javaも15年経ってやっと設計ミスを認めてまともな言語になりつつあるな


663 :デフォルトの名無しさん:2010/10/24(日) 15:01:29
香具師とか久しぶりに見たわ

664 :デフォルトの名無しさん:2010/10/24(日) 15:02:14
>>660
つまり困ることないってことだよね?

665 :デフォルトの名無しさん:2010/10/24(日) 15:05:11
仕事でパイソン使ってます、経験者募集ってあまり見たことないのですが
仕事で使ってる方はどんな処理をパイソンでされてますか?

そんな自分はVBS使いなんですが
これもない。見るのはPHPとかC経験者募集ばかり…orz

666 :デフォルトの名無しさん:2010/10/24(日) 15:13:13
>>665
SPAMフィルタ

667 :デフォルトの名無しさん:2010/10/24(日) 15:28:17
>>652
それ参照の値渡しと参照渡しを混同しても誰も困らないじゃんって話?

668 :デフォルトの名無しさん:2010/10/24(日) 15:34:29
>>667
最初の3行はそういう主旨

669 :デフォルトの名無しさん:2010/10/24(日) 15:36:06
それは困るだろ。
参照渡しと言われたのでswap書いたけど意図通りに動きませんとか。

670 :デフォルトの名無しさん:2010/10/24(日) 15:37:48
それはウンコだろ

671 :デフォルトの名無しさん:2010/10/24(日) 15:38:19
「内部的に動作が違う」だけでなく、はっきり外部的にも違うものなのに
何で混同していいという話なのか分からんな
まあ自分でそう思いたいだけならどうぞって感じだが

C#でもclassに関しては参照の値渡し(call by sharing)になるが
わざわざrefやoutパラメータでcall by referenceも出来るようにしてあるわけだが

672 :デフォルトの名無しさん:2010/10/24(日) 15:39:14
パイソンでVBのようなフォームというかインプットできる画面を作成して
そのインプットした値に応じて処理とかって作れますか?

673 :デフォルトの名無しさん:2010/10/24(日) 15:40:36
はい

674 :デフォルトの名無しさん:2010/10/24(日) 15:56:02
>>669
>>652に書いたようにそれができないのは本能的に分かるからいいんだよ。
実際のところ正確な参照渡しがデフォルトの言語ってあまりないし。
>>671
しかしあまり使用しないでしょう?

言いたい内容は分かるんだけど今の話はそういう話じゃなくて、説明上、値渡しと
参照渡しだけでいいんじゃないかと。Cのポインタも参照渡しでいいよね?
値渡しですって説明したら値渡しの説明に困らないかい?
そういう意味から、Pythonの渡し方は参照渡しでいいんじゃないかとそう言ってます。

675 :デフォルトの名無しさん:2010/10/24(日) 16:01:57
>>674
そもそも本能的に分かるからいいって主張が間違ってる例が>>669だな。

676 :デフォルトの名無しさん:2010/10/24(日) 16:04:40
>>675
いや自分ならそれは普通できないだろうと思うから、最初からそんなことしない
そんなことないの?

677 :デフォルトの名無しさん:2010/10/24(日) 16:05:29
>>669は静的言語ですべての変数、配列をグローバルで宣言した方が良いね

678 :デフォルトの名無しさん:2010/10/24(日) 16:06:27
>>674
Pythonみたいな奴はcall by sharingと最近は呼ばれるようだから、
call by valueと区別したいのなら、単にそう呼べばいいだけ

> 値渡しですって説明したら値渡しの説明に困らないかい?
全然困らないだろ

679 :デフォルトの名無しさん:2010/10/24(日) 16:10:26
Cの関数呼び出しで何でもポインタを渡せば参照渡しになるかのように書いている人は、
本当にcall by referenceを理解できているのか疑わしい。

680 :デフォルトの名無しさん:2010/10/24(日) 16:11:45
>>676
それはお前の場合だけ

参照渡しがデフォルトの言語というものはある(FORTRANやVBなど)
そして参照渡しというものがどういうものかを正しく知っている人間なら、
参照渡しと言われれば、そのようなものだと考える

「自分なら〜」とかいう自分の都合だけで、誤った用語を広めるな

681 :デフォルトの名無しさん:2010/10/24(日) 16:22:34
>>638
それだと参照の値渡しと区別が付かない。

682 :デフォルトの名無しさん:2010/10/24(日) 16:25:01
>>655
> 要は、Pythonでは値を返すのに引数は使えない(C/C++ではよくやる)

def append_zero(li):
  return li.append(0)

a = []
append_zero(a)
print a # ==> [0]

683 :デフォルトの名無しさん:2010/10/24(日) 16:27:56
>>681
>>638はPythonが「参照渡しではない」ことを確かめる例なのだから、
「参照の値渡しかどうか」が分からなくてもよいのでは

684 :デフォルトの名無しさん:2010/10/24(日) 16:31:50
>>678
> Pythonみたいな奴はcall by sharingと最近は呼ばれるようだから、
> call by valueと区別したいのなら、単にそう呼べばいいだけ
だから「実際の動作や概念的な仕様はどうでもいい」んだってば。
> > 値渡しですって説明したら値渡しの説明に困らないかい?
> 全然困らないだろ
ではどう説明するの?

>>680
VBは大昔だったので失念してた。でもintを普通に渡ししてたらByValだろゴラ!だったよ。
誤った用語を広めたいとは思わないけど、正確であることにあまり意義を見出せない。

685 :デフォルトの名無しさん:2010/10/24(日) 16:36:07
>>684
>> > 値渡しですって説明したら値渡しの説明に困らないかい?
>> 全然困らないだろ
> ではどう説明するの?

値渡しだからコピーだが、Pythonの場合、値はオブジェクトインスタンスへの参照
なので、symbolic linkをコピーしたのと同じ
リンクがコピーされるだけで、指してる実体は同じ

そんだけの話だろ

686 :デフォルトの名無しさん:2010/10/24(日) 16:37:34
話を難しくしてドヤ顔してる馬鹿が一番タチが悪い

687 :デフォルトの名無しさん:2010/10/24(日) 16:39:00
>>683
ここで話にでてる参照渡しが、本当の意味の参照渡しか参照の値渡しかは微妙なところだぜ。

さらに http://www.python.jp/doc/release/ref/assignment.html
> 代入文 は、名前を値に (再) 束縛したり、 変更可能なオブジェクトの属性や要素を変更したりするために使われます:
を考えると、さらに微妙になる。

Pythonでの代入文の挙動は、中身の置き換えではないから、
仮に参照であったとしても、その「名前」を「再束縛」したときの挙動が、
必ずしも「名前」の値を置き換えたものになるとは解釈できない。

688 :デフォルトの名無しさん:2010/10/24(日) 16:40:34
>>684
> 「実際の動作や概念的な仕様はどうでもいい」
じゃあ何が知りたいの?
魔法でなんとかなるって説明でいい?

689 :デフォルトの名無しさん:2010/10/24(日) 16:41:50
おまじない

690 :デフォルトの名無しさん:2010/10/24(日) 16:42:09
>>681はcall by referenceを理解していないことが確定しました。

691 :デフォルトの名無しさん:2010/10/24(日) 16:42:11
>>685
> 値渡しだからコピーだが、Pythonの場合、値はオブジェクトインスタンスへの参照
めんどくさいの湧くことははっきりしてるんだから、参照の意味はっきりさせろ。
Cでいうポインタ渡し的な意味で、参照の値渡しってことでいいんだな?

692 :デフォルトの名無しさん:2010/10/24(日) 16:44:22
>>687もcall by referenceがわかっていない。

みんな、call by referenceな言語を使ったことないのか?

693 :デフォルトの名無しさん:2010/10/24(日) 16:44:44
いい加減、どのレベルの話をしてるのか決着つけたら?

Pythonの仕様って話だったら、call by sharingが正しい。
CPythonの具体的な動作って話だったら、ソース読めば分かるが、Cで書かれてるんだからきっとcall by valueだろう。

694 :デフォルトの名無しさん:2010/10/24(日) 16:45:06
>>687
え、Pythonの場合、代入は普通に破壊的で、中身の置き換えでしょ?
変数の中身は「インスタンスへの参照」なので、「インスタンス」には
影響がないというだけで

>>> x = 0
>>> def f(): return x
...
>>> f()
0
>>> x = 1
>>> f()
1

関数型だと、言語によっては2度目のf()が0を返すものもあるよね

695 :デフォルトの名無しさん:2010/10/24(日) 16:46:06
>>692
じゃあcall by referenceにおいて値の入れ替えではなく、束縛って何なのよ?
少なくとも、値の束縛って概念のあるcall by referenceな言語は使ったことが無いな。

696 :デフォルトの名無しさん:2010/10/24(日) 16:52:03
旧世代の人間くらいしか使ったことないだろうな。パンチカードの次世代くらい

697 :デフォルトの名無しさん:2010/10/24(日) 16:52:30
>>685 Cで説明してよ
>>688>>693 実際の使い方において>>627の仮定で困るケース

698 :デフォルトの名無しさん:2010/10/24(日) 16:54:16
> >>685 Cで説明してよ

なんだこいつ
今度はもっとお母さんみたいに言ってくれとかいいそうだな

699 :デフォルトの名無しさん:2010/10/24(日) 16:57:27
>>694
破壊も何も、名前の束縛こそ本質。
そのコードはf()を呼び出したときにxが再評価されてるだけだよ。

もちろん、実装としては中身の置き換えだけど、概念としては。

700 :デフォルトの名無しさん:2010/10/24(日) 17:00:20
>>699
いやだから、
> 必ずしも「名前」の値を置き換えたものになるとは解釈できない。
とか言ってたけど、これが中身の置き換え以外の何だというの



701 :デフォルトの名無しさん:2010/10/24(日) 17:07:15
>>700
変数に中身なんてないよ。

702 :デフォルトの名無しさん:2010/10/24(日) 17:25:28
何となく言いたいことは分かった
Cだと変数はメモリ上のブロック(Cではobjectと呼ぶ)につけられた
名前で、そのメモリブロックに書かれている2進数の列が
まさに変数の中身であり値だが、Pythonは変数モデル自体が違うよ
と言いたいわけね?

確かにそれは違う
俺はPythonのシンボルテーブルにおいて、名前に紐づいているオブジェクトIDを
変数の値と表現しているだけ
名前に対応するオブジェクトIDのスロットがあるのだから、一般的な
箱と中身モデルで話しても比喩としては差し支えないと思うけど

703 :デフォルトの名無しさん:2010/10/24(日) 18:08:43
>>698
それ
> 言いたい内容は分かるんだけど今の話はそういう話じゃなくて、説明上、値渡しと
> 参照渡しだけでいいんじゃないかと。Cのポインタも参照渡しでいいよね?
> 値渡しですって説明したら値渡しの説明に困らないかい?
って話だからPythonじゃ全く回答になってないんだよ

704 :デフォルトの名無しさん:2010/10/24(日) 18:16:53
うん。モデルが違う。
箱と中身モデルで考えることもできるだろうし、実装はCだから箱と中身モデルなんだけど、
PythonがPythonなりの変数モデルを目指して設計されている以上、
他のモデルで語る必要性っていうのが分からない。
(他の言語の変数モデルで置き換える方法を探るのは、処理系実装者の仕事だろう、と思う)

完全に別モデルで考えることがそう簡単にはできないからこそ、こんだけレスが付いてスレが読みづらくなったんだと思うし、
別のモデルに置き換えるのなら、変数の渡し方だけじゃなくて、=の意味とかも定義しないと意味をなさない気がする。

それに、今後の実装によって別のモデルとPythonのモデルで齟齬が出たときに当然優先されるのはPythonのモデルだし、
明確な矛盾までは出なくても「気持ち悪い、Pythonらしくない」という評価はPythonのモデルを元に行われるから、
そこらへんのニュアンスまで含めて数学的に等価なモデルじゃないと、面倒な思いをする可能性がある。

705 :デフォルトの名無しさん:2010/10/24(日) 18:19:40
>>704
なるほど了解した

706 :デフォルトの名無しさん:2010/10/24(日) 18:22:16
なんで毎度こんな騒ぎになるんだろうねぇ。
VBに参照渡しが存在してるから?

707 :デフォルトの名無しさん:2010/10/24(日) 18:22:20
別にそんな特殊なモデルじゃないけど…

708 :デフォルトの名無しさん:2010/10/24(日) 18:25:39
>>627だけど何一つ有効回答がなくて何も解決していないんですが

709 :デフォルトの名無しさん:2010/10/24(日) 18:28:20
馬鹿には理解できない
ましてや議論もできないよ

710 :デフォルトの名無しさん:2010/10/24(日) 18:29:02
そもそも値渡しが何かを分かってる人に
pythonは値渡しです、もしくは参照の値渡しです
pythonはcall by valueです、もしくはcall by sharingです
とか説明するためのものでしょ。

あらかじめpythonのモデルがわかってるなら値渡しだのと説明する必要は全くないわけで。
わざわざpythonのモデルを使って参照渡しを再定義しようとするからややこしくなる。

711 :デフォルトの名無しさん:2010/10/24(日) 18:30:02
Perlもscallerに関しては、参照渡しかな

sub f { ++$_[0]; }
f($x);

とかやると、$xが書き換わるよね

712 :デフォルトの名無しさん:2010/10/24(日) 18:32:15
↑scalarのつもり

713 :デフォルトの名無しさん:2010/10/24(日) 18:35:28
Pythonの使い方においてかくかくをしかじかと考えているとどう問題があるのかを
尋ねたら馬鹿には理解できないと言われました。

Pythonって誰でも簡単に扱える言語なんじゃないの?

714 :デフォルトの名無しさん:2010/10/24(日) 18:38:49
ヲタの言う事を、イチイチ真面目に全部実行しようとすんなよ。

715 :デフォルトの名無しさん:2010/10/24(日) 18:40:41
> Pythonって誰でも簡単に扱える言語なんじゃないの?
そうなの?

716 :デフォルトの名無しさん:2010/10/24(日) 18:42:08
>>713
誰でも扱う事はできるけど、考えるのは馬鹿には無理って事では?

717 :デフォルトの名無しさん:2010/10/24(日) 18:43:14
http://www.python.jp/Zope/intro

「また、Python は非常に習得しやすい言語で、初心者が学習するためにも
 最適な言語となっています。アメリカでは Python を学習用言語とする
 プログラミング教育プロジェクト CP4E(Computer Programming For
 Everybody)が、DARPA(米国防衛高等研究企画庁)からの出資を得て
 活動しています。」

718 :デフォルトの名無しさん:2010/10/24(日) 18:44:07
誰でもは無理だろ
fizzbuzz解けない人にプログラミングは無理

719 :デフォルトの名無しさん:2010/10/24(日) 18:45:33
またずいぶん低いハードルだな

720 :デフォルトの名無しさん:2010/10/24(日) 18:46:39
>>716
引数の渡し方についての考え方について、どういう問題があるのか聞いてるだけなんですが考えるって何?

721 :デフォルトの名無しさん:2010/10/24(日) 18:48:05
>>720
「引数の渡し方についての考え方について、どういう問題があるのか」を考えることだろw

722 :デフォルトの名無しさん:2010/10/24(日) 18:52:42
>>721
え、じゃあ全員馬鹿ってことですか?

723 :デフォルトの名無しさん:2010/10/24(日) 18:53:30
俺以外はな

724 :デフォルトの名無しさん:2010/10/24(日) 18:54:22
>>722
はい

725 :デフォルトの名無しさん:2010/10/24(日) 18:55:27
解決したみたいでよかったな
一件落着

726 :デフォルトの名無しさん:2010/10/24(日) 18:57:37
解決はしてないですね。別の考えの方が現れるまで待つしかないってことですか?

727 :デフォルトの名無しさん:2010/10/24(日) 19:00:51
再掲しておきます。

引数の渡し方についての考え方について、どういう問題があるのか教えてください。
詳細は>>627です。

728 :デフォルトの名無しさん:2010/10/24(日) 19:03:18
問題ないよ〜

729 :デフォルトの名無しさん:2010/10/24(日) 19:05:53
>>720
議論の対象になってるのは「引数の渡し方についての言い方」だけだと思うがな。
もし「考え方」だけに集中したいなら参照渡しと呼称するのを止めた方がいいんでね?

730 :デフォルトの名無しさん:2010/10/24(日) 19:11:06
>>727
馬鹿は糞して寝てろ

731 :デフォルトの名無しさん:2010/10/24(日) 19:13:39
>>727
そもそもが間違ってる。考え方以前の問題
そしてそれを指摘しても「有効回答がない」
全く話が進まない。

大体は分かってて用語だけ間違えてるのか、それとも本当に全く理解できてないのか
それとも全部知ってて荒らしたいだけなのか、それ以前にID出ないから偽物かもしれんし
もうスルーでいいんじゃね。

732 :デフォルトの名無しさん:2010/10/24(日) 19:18:01
>>729
議論が何を指しているのか分かりませんし呼称を変える必要も感じませんが、
文脈から判断できないのであれば、自分のいう値渡しをA、参照渡しをBとして
説明して頂いて構いません。

>>627を言い換えるなら

「pythonで数値を渡す -> javaでprimitiveな型の値を渡す感じ
 pythonでリストを渡す -> javaのStringBufferを渡す感じ
 pythonでタプルを渡す -> javaのStringを渡す感じ

 みたいに考えていいんだよね?

 であれば、数値はAで、リスト・タプルはBみたいに考えると諸々含めて
 スッキリするんだけど、やっぱり数値の0もオブジェクトみたいに
 考えないとどこかで違いが出てきて困ったりするの? 」

となります。

733 :デフォルトの名無しさん:2010/10/24(日) 19:20:42
>>731
どこが間違っているため、結論がどうなるのでしょうか?

734 :デフォルトの名無しさん:2010/10/24(日) 19:22:17
>>732
なんで呼称を変える必要を感じないの?

735 :デフォルトの名無しさん:2010/10/24(日) 19:23:49
>>731
同意。

736 :デフォルトの名無しさん:2010/10/24(日) 19:27:04
>>734
文脈から判断可能だと思うからです。
なお万一結論に関係しない質問なら、今はご遠慮願います。

737 :デフォルトの名無しさん:2010/10/24(日) 19:28:26
>>732
> 数値はAで、リスト・タプルはBみたいに考えると
数値もリストもタプルも全部同じ渡り方
分けるのなら「数値・タプル」組と「リスト」であって、その分け方はおかしい

前者はオブジェクト自体が変更されることはない(immutable)
後者はオブジェクトが変更されることが有り得る

関数呼び出しの観点で言うと、前者では関数に渡した後でオブジェクトが変わっている
心配をする必要がない
後者はある

738 :737:2010/10/24(日) 19:29:29
ごめん、よく流れを見てなかったw
俺も以後スルーするわ

739 :デフォルトの名無しさん:2010/10/24(日) 19:42:17
>>737-738
Pythonやってる人は皆そんな失礼な方なのですか?

分け方がおかしいかどうか、ではなく、その分け方でどう具体的に問題があるのか
という点を聞いています。後半5行において、その指摘がまったくなく、その分け方
でも矛盾しないというだけの話です。

またオブジェクトが生成時にimmutableであることと、渡し方には関連がないと
考えています。違うのでしょうか?

740 :デフォルトの名無しさん:2010/10/24(日) 19:46:07
てめぇが一番失礼

741 :デフォルトの名無しさん:2010/10/24(日) 19:47:51
paramikoうまく使えないよおおおおおおおお

742 :デフォルトの名無しさん:2010/10/24(日) 19:50:19
釣りとアスペルガーとどっちなんだろうな

743 :デフォルトの名無しさん:2010/10/24(日) 19:52:57
pass

744 :デフォルトの名無しさん:2010/10/24(日) 19:56:05
超初心者スレでやってるクダラナイ事が余程面白いらしい…┐(´∀`)┌ヤレヤレ

745 :デフォルトの名無しさん:2010/10/24(日) 20:12:58
なんか一人でえんえん頑張ってる人は
Wikipediaで参照渡し調べてから
JavaなんとかってMLで今をときめくセキュリティ専門家と
ポインタ完全制覇の人の瑞々しい議論を楽しんでくればいいのにと思った
暇がつぶせると思うぞ

746 :デフォルトの名無しさん:2010/10/24(日) 20:27:09
Pythonは初心者をバカにして楽しむ連中しかいないんだな

747 :デフォルトの名無しさん:2010/10/24(日) 20:33:45
むしろ楽しくなくて困ってる状況

748 :デフォルトの名無しさん:2010/10/24(日) 20:37:12
>>746
はい

749 :デフォルトの名無しさん:2010/10/24(日) 20:37:19
初心者をバカにする点は否定しない…と

Pythonは初心者をバカにして楽しむ連中しかいないんだな

750 :デフォルトの名無しさん:2010/10/24(日) 20:39:20
超初心者用のスレまで用意されてるのに

751 :デフォルトの名無しさん:2010/10/24(日) 20:41:40
初心者さんは今日一日何やったの?
そんな暇があったらもうちょっと有意義なことしようぜ

752 :デフォルトの名無しさん:2010/10/24(日) 20:45:15
誘導すらなく、バカにし続け反省の色もないとは、さすがPythonista

少なくとも日本では初心者にはおすすめできないPythonってことだな

753 :デフォルトの名無しさん:2010/10/24(日) 20:48:35
少なくともあなたにはおすすめできません

754 :デフォルトの名無しさん:2010/10/24(日) 20:48:59
というかフルボッコにされた初心者ってどれ?
大体目くそ鼻くそのやり取りだったと思うけどな。本人は酷く傷ついたらしい

755 :デフォルトの名無しさん:2010/10/24(日) 20:50:39
>>754
paramikoを使いこなせない俺

756 :デフォルトの名無しさん:2010/10/24(日) 20:51:18
>>755
ばーかばーか

757 :デフォルトの名無しさん:2010/10/24(日) 20:58:54
初心者は全て目くそ鼻くそとバカにするPython信者ども、どう見ても>>739は初心者だろ

少なくとも日本では初心者にはおすすめできないPythonってことだな

758 :デフォルトの名無しさん:2010/10/24(日) 21:00:22
珍しく勢いが強いと思ったら荒らしが涌いてるだけか、つまらん

759 :デフォルトの名無しさん:2010/10/24(日) 21:07:29
そして初心者を擁護する人は荒らし認定という徹底ぶりさすがPythonista

760 :デフォルトの名無しさん:2010/10/24(日) 21:27:57
paramikoで接続できたよおおおおおおお

761 :デフォルトの名無しさん:2010/10/24(日) 21:34:01
>>760
>>756は訂正してお詫びします
ごめんなさい

>>759
ばーか

762 :デフォルトの名無しさん:2010/10/24(日) 21:42:04
馬鹿にされたくないなら馬鹿なレスするなよ
馬鹿なレスが許されるのは馬鹿にされる覚悟がある者だけだ

763 :デフォルトの名無しさん:2010/10/24(日) 22:08:17
>>762
ばーか

764 :デフォルトの名無しさん:2010/10/24(日) 22:14:00
おまえら最近セックスしてる?

765 :デフォルトの名無しさん:2010/10/24(日) 22:17:16
少なくとも生まれてこの方してないな

766 :デフォルトの名無しさん:2010/10/24(日) 22:19:12
Pydevで、一部のパッケージがソースエディタ上で認識されなくて困ってます

パッケージエクスプローラのpythonパス上(python\lib\site-packages以下)でちゃんと認識されてるし
#@UnresolvedImport つけたら問題なく実行できて結果も正常です。
けど↑これはずすとUnresolved importってなってエラーになります。
実行はできてもコンテンツアシストが効かなくて不便なので困っています。

easy_install でパッケージを入れてからpydevの設定→インタープリターで新しく作った構成で、その後pydev自体も再起動してます。
その他のパッケージではコンテンツアシストが使えるので、easy_installだとダメってことはないようです。
助言よろしくお願いします

767 :デフォルトの名無しさん:2010/10/24(日) 22:35:59
ここはEclipseでもPydevのスレでもありませんよ

768 :デフォルトの名無しさん:2010/10/24(日) 22:37:08
西尾うぜー

769 :デフォルトの名無しさん:2010/10/24(日) 22:51:46
2ch は心の荒んだ人の溜り場だな

770 :デフォルトの名無しさん:2010/10/24(日) 23:14:25
なんかJavaやってる奴は時々どうしようもなく使えないのがいるよね

771 :デフォルトの名無しさん:2010/10/24(日) 23:21:26
お前のことか

772 :デフォルトの名無しさん:2010/10/24(日) 23:35:07
誰も>>766に答えてあげないんだな
pydevはおろかeclipseスレもないのに

773 :デフォルトの名無しさん:2010/10/24(日) 23:36:30
python setup.py install
でインストールしたツールをアンインストールするにはどうすればよいでしょう?

774 :デフォルトの名無しさん:2010/10/24(日) 23:39:34
>>773
ttp://www.glamenv-septzen.net/view/373

775 :デフォルトの名無しさん:2010/10/24(日) 23:50:42
>>772
海外にフォーラムがあるよ

776 :デフォルトの名無しさん:2010/10/24(日) 23:52:45
>>772
clipse統合M30【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1280027133/

777 :デフォルトの名無しさん:2010/10/24(日) 23:56:20
>>772だけど俺は>>766じゃない。
eclipse使ってないから知らなかったけどそんな名前のスレになってたのか。

778 :デフォルトの名無しさん:2010/10/25(月) 01:08:10
>>708
少なくとも、関数呼び出しにおいて、数値(int, float, long)とリストとタプルに関しては、それで問題ないんじゃないの?
他の場合に関しては>>604にあるとおり、事情は単純じゃないし、現時点であっててもいつまでもそうあるとは限らない。

779 :デフォルトの名無しさん:2010/10/25(月) 01:15:35
>>710
> そもそも値渡しが何かを分かってる人に
> pythonは値渡しです、もしくは参照の値渡しです
> pythonはcall by valueです、もしくはcall by sharingです

わかる人はこれでわかるんだけど、わかる人用の説明なんだよなw

値渡しと参照渡し混同してるとか(ポインタの値渡しを参照渡しと思っているとか)、
もしくはどちらかしか知らないと余計わからなくなるという


780 :デフォルトの名無しさん:2010/10/25(月) 01:16:22
>>739
mutableとimmutableは、生成時のみの話じゃないし、むしろ生成後の方が重要。
(値を変更するのは生成時じゃなくて、生成後だからね)
渡し方に関係はないけど、それを言うとPythonは渡し方自体がどうでもいい言語で、
言語の中にメモリアドレスなんて概念が出てこないのと同様、値渡し、参照渡し、ポインタ渡しという概念が出てこない。

知りたいのは仕様でも実装でもないとか言ってたけど、実装見るのが一番早いよ。
Jythonのソース落としてきて本当にそれでいいか確認するといい。

781 :デフォルトの名無しさん:2010/10/25(月) 01:17:48
>>745
それ面白そうだから、リンクくれ。暇な後輩に読ませる

782 :デフォルトの名無しさん:2010/10/25(月) 01:38:55
is と == …

783 :デフォルトの名無しさん:2010/10/25(月) 02:06:05
>>778
こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
そうであるならよく見ておかないといけませんね。

>>780
> mutableとimmutableは、生成時のみの話じゃないし、むしろ生成後の方が重要。
後からmutableになったりimmutableになったりするオブジェクトがある
ということですか?例えばどんなことができるということなのでしょうか?
> 渡し方に関係はないけど、それを言うとPythonは渡し方自体がどうでもいい言語で、
推測ですが全てがオブジェクトであり、全て参照の値渡しだという説明なら区別する
必要がないためにXX渡しという言葉を出していないだけの話かと思います。
つまり仮に値渡しなどが可能な型が出来たとしても、mutableかどうかは渡し方には
関係ないと思うということです。
> Jythonのソース落としてきて本当にそれでいいか確認するといい。
厳密である必要はないので、実装から見るコストまではかけられません。
また、このレベルのことを実装から見なければ問題があるかどうか分からないほど
Pythonは曖昧な言語ということなのでしょうか?

784 :デフォルトの名無しさん:2010/10/25(月) 03:26:50
【Perl,PHP】LLバトルロワイヤル13【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1287944631/

新スレ

785 :デフォルトの名無しさん:2010/10/25(月) 04:07:16
今日からdelta日違う日付(例えばdelta=-1だったら昨日の日付)の年月日を
桁を削らずに取得したい場合はこんな感じでいいですか?
削らずにというのは、9月なら month='09' が欲しいということで。

date = datetime.date.today() + datetime.timedelta(days = delta)
year, month, day = date.isoformat().split("-")

なんか環境依存で全然違う結果が出てくる可能性とかありますか?
month = date.strftime("%m")
とかでも同じ結果だったけど、無駄がおおい気がしたので

786 :デフォルトの名無しさん:2010/10/25(月) 04:26:33
year, month, day = date.strftime('%Y-%m-%d').split("-")

787 :デフォルトの名無しさん:2010/10/25(月) 04:32:48
>>786
おお、なるほど
言われてみればそれが一番すっきり
ありがとうございます。

788 :デフォルトの名無しさん:2010/10/25(月) 10:14:56
>>783
> こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
多分、関数呼び出しの、数値(int, float, long)とリストとタプルに関してはこれからも変わらない。

> 後からmutableになったりimmutableになったりするオブジェクトがある
そんなものはない。

> つまり仮に値渡しなどが可能な型が出来たとしても、
今の変数モデルを捨てないと、xx渡しという言葉は出てきようがない。

> また、このレベルのことを実装から見なければ問題があるかどうか分からないほど
> Pythonは曖昧な言語ということなのでしょうか?
厳密に、Pythonの変数モデルに従ってる。
それを無理やり、別のモデルに置き換えようとするから面倒になる。

上にも書いたとおり、関数呼び出しの、数値(int, float, long)とリストとタプルに関しては、君の認識で問題は起こらないだろう。
けれど、それと同じ考え方を別の似た何かに持ち込んでも、必ずしもそうなるかどうかは知らんということだ。

789 :デフォルトの名無しさん:2010/10/25(月) 10:57:19
>>> def hoge(fuga):
... fuga[1] = 9
...
>>> hage = [4,3,2]
>>> hoge(hage)
>>> hage
[4, 9, 2]
>>> hige = (3,2,1)
>>> hoge(hige)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 2, in hoge
TypeError: 'tuple' object does not support item assignment
>>> hige
(3, 2, 1)

790 :デフォルトの名無しさん:2010/10/25(月) 11:59:31
>>789
immutableなオブジェクトの変更はできません。

791 :デフォルトの名無しさん:2010/10/25(月) 19:33:56
>>788
> > こんな基本的なところもまだ変更の余地があるとは思っていませんでした。
> 多分、関数呼び出しの、数値(int, float, long)とリストとタプルに関してはこれからも変わらない。
そうですか、注意すべきものが減って良かったです。
> > 後からmutableになったりimmutableになったりするオブジェクトがある
> そんなものはない。
そうですよね。だとすると何が重要だったのかよくわかりませんが。
> > つまり仮に値渡しなどが可能な型が出来たとしても、
> 今の変数モデルを捨てないと、xx渡しという言葉は出てきようがない。
説明上でてきた仮定にケチを付けて何をしたいのかよく分かりませんが、
分類上他の言語と比較し得ない特殊なモデルということでない限り、出てきてよいと
思います。例えば今のモデルは「全てがオブジェクトであり、全て参照の値渡し」と
書きましたが、それでは説明できない状況があるということでしょうか?
もしなければPythonは「参照の値渡し」という言葉で分類することができます。
> > また、このレベルのことを実装から見なければ問題があるかどうか分からないほど
> > Pythonは曖昧な言語ということなのでしょうか?
> 厳密に、Pythonの変数モデルに従ってる。
> それを無理やり、別のモデルに置き換えようとするから面倒になる。
では曖昧なモデルを厳密に実装しているということですか(なんだか変な言い回しですが)?
でなければ実装を見る必要はないと思います。

>>789
mutableとimmutableの違いがオブジェクト操作にどう影響するかは分かります。
渡し方とmutableかどうかには関係がないと言っているだけです。
例えばC++で
void hoge(const int& hoge);
void hoge(int& hoge);
はどちらも参照渡しに分類されると思いますが、上はimmutableで下はmutableですよね。

>>790
ですよね

792 :デフォルトの名無しさん:2010/10/25(月) 20:07:03
= の意味を調べるといいかも

793 :デフォルトの名無しさん:2010/10/25(月) 20:35:25
>>792
再度以下を読み直しましたが、意見に変更はありません。
http://www.python.jp/doc/release/ref/assignment.html
それとも何か別のものが必要なのでしょうか?
もし他になければ書いてある内容に基づき、矛盾する部分を見つけて
指摘して頂けませんか?

794 :デフォルトの名無しさん:2010/10/25(月) 20:45:58
意見ってあなた誰?
コテつけて
鬱陶しいと思ってる人もNGしやすいだろうし

795 :デフォルトの名無しさん:2010/10/25(月) 20:47:08
Javaの変数の方を全部objectにした、って考えたので十分じゃないの?
immutableとmutableの関係も完全一致だし。

796 :デフォルトの名無しさん:2010/10/25(月) 21:11:35
>>795
Javaは関係なく「全てがオブジェクトであり、全て参照の値渡し」というモデルと考えてOKということですか?

797 :デフォルトの名無しさん:2010/10/25(月) 21:14:23
皆そう最初から言ってただろ
何を聞いてたんだよ

798 :デフォルトの名無しさん:2010/10/25(月) 21:17:20
>>797
いいえ。>>788が以下のように言っていたので
> > つまり仮に値渡しなどが可能な型が出来たとしても、
> 今の変数モデルを捨てないと、xx渡しという言葉は出てきようがない。
確認した次第です。

799 :デフォルトの名無しさん:2010/10/25(月) 21:18:38
>>798
俺の知る限り、一般にはPythonはcall by sharingと認識されているし、
その考え方で特に矛盾は生じない

800 :デフォルトの名無しさん:2010/10/25(月) 21:22:48
http://docs.python.org/faq/programming.html
ここの
How do I write a function with output parameters (call by reference)?
の項目でも読むといい

公式のFAQだから

801 :デフォルトの名無しさん:2010/10/25(月) 21:24:48
公式ファック

802 :デフォルトの名無しさん:2010/10/25(月) 21:25:33
お下品

803 :デフォルトの名無しさん:2010/10/25(月) 21:31:21
>>799
であれば、モデルについては矛盾がないこと確認が取れました。ありがとうございます。

>>795に戻りますが、考え方的に、初心者の立場からすると、定数リテラルまでオブジェクト
という部分は、どこかに置いておきたいのです。そうしないとオブジェクトって何?どこまで
できるの?という疑問が最初に発生してしまい、全体像をつかまないうちは完全理解した
つもりになれる部分が皆無になり、習得する新しいものについて常に多くのケースを考える
必要がでてきます。

それよりは、数値リテラルはjavaでいうprimitiveな型と考えた方が可能な操作が限定的で
理解しやすく初期の文法理解で困りません。なので最初の質問をした次第です。

>>800
申し訳ありませんが、値の返し方を尋ねたいわけではないので何の説明にもなっていません。

804 :デフォルトの名無しさん:2010/10/25(月) 21:31:59
全てがobject〜云々は、language referenceを参照
http://docs.python.org/reference/datamodel.html#objects-values-and-types

805 :デフォルトの名無しさん:2010/10/25(月) 21:33:28
質問者が英語読めると思ってんのか。翻訳して来いアホ

806 :デフォルトの名無しさん:2010/10/25(月) 21:35:47
> それよりは、数値リテラルはjavaでいうprimitiveな型と考えた方が
> 可能な操作が限定的で理解しやすく初期の文法理解で困りません。
> なので最初の質問をした次第です。

なぜそう「考えたい」のか、よくわからないな
実際違うものなのだし
Pythonで可能な操作を知りたければ、REPL(対話環境)を起動して
objectに対してdir()してみるのが手っ取り早いよ

>>> type(1)
<type 'int'>
>>> id(1)
4677432
>>> dir(1)
(省略)
>>> help(1)
(省略)

全てはオブジェクトで、それゆえ全ての値に対して
こうしたイントロスペクションが行えるのがPythonだ

807 :デフォルトの名無しさん:2010/10/25(月) 21:35:47
別に英語は平気です。オカマいなく。

808 :デフォルトの名無しさん:2010/10/25(月) 21:38:23
一応2.5までなら日本語もあるみたいです。
http://www.python.jp/doc/release/ref/datamodel.html

809 :デフォルトの名無しさん:2010/10/25(月) 21:52:34
2.6も途中のやつがどこかにあったぞ

810 :デフォルトの名無しさん:2010/10/25(月) 21:53:33
CPythonの説明の有無くらいしか違いはないみたいですね。
>>806
書いたように、「オブジェクトって何?どこまでできるの?という疑問が最初に発生してしま」うからです。

この整数リテラルは属性持たせたりできるんだろうか?
メソッドも追加できるんだろうか?
演算子も実は全然違う意味にできたりするんだろうか?
クラスとかもあるのかな?
そもそも型はどういうものなんだ?

とか最初は例示で理解するものなのに単純かつ具体的で限定的なものがないと、それを使った説明を
理解する際にケースが増えてしまって分かった気になれません。

811 :デフォルトの名無しさん:2010/10/25(月) 21:55:00
じゃあそれを書いた本を出せば儲けられるんじゃね?

812 :デフォルトの名無しさん:2010/10/25(月) 21:57:30
3冊くらい売れそう(ww

813 :デフォルトの名無しさん:2010/10/25(月) 21:58:49
>>810
なるほどねえ。
まあ、そういうことなら、数値は単に他の多くの言語のように足したり引いたりできる
「もの」と思っておけばいいんじゃないの。

「Javaのprimitive型のような」といった妙に限定的な比喩を出すから
余計な議論や誤解を招くのであって。
初期の学習では、「primitive型のような」といった(誤った)理解さえ
不要だと思うよ。

814 :デフォルトの名無しさん:2010/10/25(月) 22:06:07
>>813
そうはいうけど問題ないか尋ねる際に、オブジェクトでない別の何に例えればいいのさ

815 :デフォルトの名無しさん:2010/10/25(月) 22:12:00
>>814
いや、実際にはオブジェクトなのだから、「オブジェクトではないXと
同じようなものだと考えて問題ないか?」といわれたら、そりゃ「はい」とは
答えにくいだろうw
質問者が本当は「何を」気にして、問題にしているのかはちゃんと説明しなきゃ、
質問者にしか分からんのだからな

Pythonのintは整数の値をあらわす型で、四則演算ができて、
1 + 1が2になるようなものか?という質問なら答えはYesだ

816 :デフォルトの名無しさん:2010/10/25(月) 22:14:58
Javaのprimitive型じゃないし、pythonにprimitiveな値型はない
強いて言うならIntegerとかStringみたいなもんだ

817 :デフォルトの名無しさん:2010/10/25(月) 22:20:26
>>816
JavaのIntegerは+演算子で足したりできないので、その比喩もまた
誤解を与えるんじゃないかな

818 :デフォルトの名無しさん:2010/10/25(月) 22:21:32
>>815
だからそう厳密でなくていいように質問も限定的にして
「実際の動作や概念的な仕様はともかく使い方だけで考えれば」
と最初から前置きをしているじゃなイカ。

とまあ、この話はこの辺で。>>815もレスくれた方もありがとね。

>>817
丁度質問書いてたとこだった。

819 :デフォルトの名無しさん:2010/10/25(月) 22:25:07
>>815
> 質問者が本当は「何を」気にして、
うっかりどこかで参照渡しと説明してしまって
引くに引けなくなったとかじゃないか

820 :デフォルトの名無しさん:2010/10/25(月) 22:27:45
>>817
1.5以降だと暗黙のうちにboxing変換やunboxing変換されるから、
見かけ上Integerなのに+演算子使えてるように見えるコード書けるんだよ。

要するに、いくらでも誤解の余地があるわけで。

821 :デフォルトの名無しさん:2010/10/25(月) 22:28:30
>>820
なるほどね

822 :デフォルトの名無しさん:2010/10/25(月) 22:34:08
>>819
いや単に昨日の深夜まで有効回答がなかっただけ。
半分以上はその深夜で片付いたんだけど、そこで出た疑問が今まで解決してなかった。

>>816
よく見たら意味が違ってた。質問は以下。
「Integerは中の値を変更できない(多分)けど、Pythonの数値オブジェクトってmutableなの?」

823 :デフォルトの名無しさん:2010/10/25(月) 22:37:06
あ、見つけました。
「数値オブジェクトは変更不能です」
http://www.python.jp/doc/release/ref/types.html


824 :デフォルトの名無しさん:2010/10/25(月) 22:43:21
>>610にもどる(百回休み)

825 :デフォルトの名無しさん:2010/10/25(月) 22:46:35
荒らしにまともな意見は通用しないという例ですね

826 :デフォルトの名無しさん:2010/10/25(月) 22:50:42
>>824-825
んー、俺は今でも参照渡しと参照の値渡しは無理に区別しなくていいと思うし、
mutableとimmutableはそれほど重要な違いとは思わないし、
何かを間違えてたとは思ってないけどね。

827 :デフォルトの名無しさん:2010/10/25(月) 22:52:50
マジでコテつけてくれ

828 :デフォルトの名無しさん:2010/10/25(月) 22:56:33
>>827
コテというのは同一人物を主張したい人が自発的につけるもの。
何が嬉しくてそんなもんつけるんだよ。

829 :デフォルトの名無しさん:2010/10/25(月) 22:59:19
参照くんは長々とうざいね〜。そんなことどうでもいいんだよ!

830 :デフォルトの名無しさん:2010/10/25(月) 23:02:34
お前もいい加減しつこいな…

831 :デフォルトの名無しさん:2010/10/25(月) 23:07:32
>>828
うざいからあぼんするためにコテをつけることを要求してるだけだろ

832 :デフォルトの名無しさん:2010/10/25(月) 23:14:20
>>831
だからなんでそんな要求聞く必要があるんだよ。うざすぎ。

833 :デフォルトの名無しさん:2010/10/25(月) 23:33:48
>>817
変数への代入と関数の引数の受け渡しの話をしているところに、他の操作の
話まで持ち出したらカオスになるだけだろ。

834 :デフォルトの名無しさん:2010/10/26(火) 00:08:42
正直なんでこじれるのか理解不能。
可変と不可変、簡単な話だろ?

835 :デフォルトの名無しさん:2010/10/26(火) 01:00:34
>>833
そこはもう一通り話が終わった後なのであまり気にしないでください。

>>834
可変と不可変は関係ありませんでしたが、話は全部ごく簡単な内容です。
こじれた原因は一目瞭然なので割愛します。もし本当に理解できないと
いうことなら自分の見解を書きますが、誰も望んでいないでしょう。

836 :デフォルトの名無しさん:2010/10/26(火) 01:06:42
おまいらスレ汚してるっていう自覚はある?

837 :デフォルトの名無しさん:2010/10/26(火) 01:18:47
自治厨うぜー

838 :デフォルトの名無しさん:2010/10/26(火) 01:19:21
>>836
どの部分まで指しているのか質問なのか知らないけど、ないよ。
回答もらってからは別に用はないんだけど、触れば(気が向けば)反応するってだけ。
汚すつもりはない。

839 :デフォルトの名無しさん:2010/10/26(火) 01:33:09
とウンコ塗れのまま言い放つのであった

840 :デフォルトの名無しさん:2010/10/26(火) 01:51:16
>>839
ほんとしつこいな。なんで内容に関係ない部分ばかりで意味もなく絡んでくんの?

841 :デフォルトの名無しさん:2010/10/26(火) 02:01:13
これだから頭の悪い奴が沸いてくると困る

842 :デフォルトの名無しさん:2010/10/26(火) 02:09:53
>>839>>841
同じ人だろ?食う清め

843 :デフォルトの名無しさん:2010/10/26(火) 02:46:18
>>791
> そうですよね。だとすると何が重要だったのかよくわかりませんが。
「生成時にmutable」の「生成時」ってなんだよ。生成時に限定する意味が分からんし、変更するのは生成時じゃなくて生成後だろ。
という意味で書いた。
もし君の理解不足でなく、僕の書き方が悪かったのなら、ごめん。

> 説明上でてきた仮定
その仮定が、Pythonの今の変数モデルでは相容れないの。

> 例えば今のモデルは「全てがオブジェクトであり、全て参照の値渡し」と
> 書きましたが、それでは説明できない状況があるということでしょうか?
だから、そんなもんは処理系実装者か数学者に聞け、と。
それに関しては「参照」という言葉が、メモリ上のどこかに実体があることを前提にしていないのなら、
単に冗長なだけで、間違ってもいないと思うけど。
多分「参照の値の参照の値渡し」って言葉でも「チューリング機械」って言葉でも、
等価な概念は作れるから、分類なんて無限にあるんだけどね。

> では曖昧なモデルを厳密に実装しているということですか(なんだか変な言い回しですが)?
曖昧なモデルって、あなたの脳内にしかないでしょ?

> 例えばC++で
> void hoge(const int& hoge);
> void hoge(int& hoge);
> はどちらも参照渡しに分類されると思いますが、上はimmutableで下はmutableですよね。
mutableかimmutableは渡し方には関係ないんじゃなかったの?
引数でmutableかimmutableか指定できるなら、少なくともPythonでのmutable/immutableとは別用語

844 :デフォルトの名無しさん:2010/10/26(火) 03:59:12
>>843
> 「生成時にmutable」の「生成時」ってなんだよ。生成時に限定する意味が分からんし、変更するのは生成時じゃなくて生成後だろ。
> という意味で書いた。
もう説明の必要はないと思いますが、限定したのは決定するタイミングだからです。
それ以降immutableなら常に変更不可なのは渡されるかどうかに関係なく自明
なので、何が重要だったのかよく分からないと書きました。謝る必要はありません。

> その仮定が、Pythonの今の変数モデルでは相容れないの。
別に仕様に関する仮定の話なので、今の設計モデルに拘る必要もないと思います。

> それに関しては「参照」という言葉が、メモリ上のどこかに実体があることを前提にしていないのなら、
> 単に冗長なだけで、間違ってもいないと思うけど。
実体がどこにあるかを限定する必要はなく、また先に言っているとおり、厳密である必要はないので
その回答で十分です。余談ですが等価な概念を別の分類にする必要ありません。

> 曖昧なモデルって、あなたの脳内にしかないでしょ?
ちょっと何を言いたいのか量りかねますが、Pythonの実装を見ないと分からないと言ったので
それではモデルがその部分を規定していないということになります、と言っているだけです。

> mutableかimmutableは渡し方には関係ないんじゃなかったの?
独立してる(=無関係である)ことを例示したつもりです。何が伝わってないのかよく分かりません。
> 引数でmutableかimmutableか指定できるなら、少なくともPythonでのmutable/immutableとは別用語
渡しているオブジェクトの分類の問題です。コンパイル時にチェックするか実行時にチェックするか
だけの違いで、用語まで別にすることはないでしょう?

845 :デフォルトの名無しさん:2010/10/26(火) 04:13:18
twitterにでも書いとけや!!

846 :デフォルトの名無しさん: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を使わないほうがいい。

847 :デフォルトの名無しさん:2010/10/26(火) 09:56:28
>>840
荒らしが許せないからだろ

848 :デフォルトの名無しさん:2010/10/26(火) 10:18:39
>>844
> Pythonの実装を見ないと分からないと言ったのでそれではモデルがその部分を規定していないということになります
だから、実装はPythonのモデルとは別のモデルに置き換えて行われるから、パッと分かるもんじゃないと書いてるんだ。
数学者か実装者に聞けというのは、数学者か実装者になら分かると言う意味だから、曖昧というのはありえない。

Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
けどそれはJavaが曖昧に設計されていることを意味しないだろ?

> コンパイル時にチェックするか実行時にチェックするか
いいや、そんなことは問題にしていない。
int f(const int &n){return n;}
int main(){ int x = 1; f(x); }
C++じゃ、intはmutableでconst intはimmutableだが。
ここで、fの中でnはmutableかimmutableか?

849 :デフォルトの名無しさん:2010/10/26(火) 11:02:00
うあああ文字コード関係めんどくせええええええ

そもそもwindows上で動かすこととか考えるなということか
それともpython3だともっとやりやすくなってるのかな?

850 :デフォルトの名無しさん:2010/10/26(火) 11:03:09
Python3だとやりやすくなってるけど文字コードのことを
まったく考えなくていい、ということはないよ

851 :デフォルトの名無しさん:2010/10/26(火) 11:06:48
>>847
馬鹿には無理

852 :デフォルトの名無しさん:2010/10/26(火) 11:36:59
>うあああ文字コード関係めんどくせええええええ
理屈がわかればどうってこともないんだけどね
俺はとりあえず解決方法で sitecustomize.py を説明しているページは投げ捨てろと思う

853 :デフォルトの名無しさん:2010/10/26(火) 11:41:51
>>852
>俺はとりあえず解決方法で sitecustomize.py を説明しているページは投げ捨てろと思う

ハゲドウ

854 :デフォルトの名無しさん:2010/10/26(火) 13:06:30
Python3000での文字列周りの変更ってどんなのがあったっけ?
・unicodeとstrの名前が変わる
・文字列リテラルがデフォルトでユニコードになる
・openでencodingとかも扱えるようになり、codecs.openみたいな特別仕様の関数を使う必要が無くなる
・reprがユニコードを返すので、printに渡したリストや、エラーメッセージが文字化けしない

855 :デフォルトの名無しさん:2010/10/26(火) 13:27:40
>>852
全く持って同意


856 :デフォルトの名無しさん:2010/10/26(火) 13:33:47
pypy Linuxでテストが通ったらしい

857 :デフォルトの名無しさん:2010/10/26(火) 14:11:17
>>854
エキPyにまとめられてたけど、
"foo" + u"bar" がOKだったのが、 b"foo" + "bar" でTypeErrorになる。
u"foo" in {"foo": 1} が True だったのが、 "foo" in {b'foo': 1} で False になる。

openとか基礎的な部分でunicodeを最初からサポートしているから「混ぜない」使い方が
しやすくなっている反面、チェックがより厳密になった分「混ぜる」使い方が不便になった。
例えば、
# partsの中身がstrならstr, unicodeならunicodeを返す
def pathjoin(parts): return '/'.join(parts)
って出来てたのが、出来なくなった。

858 :デフォルトの名無しさん:2010/10/26(火) 21:07:03
>>848
> だから、実装はPythonのモデルとは別のモデルに置き換えて行われるから、パッと分かるもんじゃないと書いてるんだ。
> 数学者か実装者に聞けというのは、数学者か実装者になら分かると言う意味だから、曖昧というのはありえない。

何をどうしたいのかよくわかりませんが、とりあえずお付き合いします。
Pythonのモデルとは何でどんな別のモデルに置き換えようとしているんですか?
私はPythonのモデルは↓以外にはないと考えていました。
http://docs.python.org/reference/

> Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
> Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?

何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。

> > コンパイル時にチェックするか実行時にチェックするか
> いいや、そんなことは問題にしていない。
> int f(const int &n){return n;}
> int main(){ int x = 1; f(x); }
> C++じゃ、intはmutableでconst intはimmutableだが。
> ここで、fの中でnはmutableかimmutableか?

質問だったのですが答えては頂けないんですね。問題にするって誰が何を
問題にしてるんでしょう?本当に何をしたいのかさっぱり分かりません。
とりあえずnはimmutableと扱われますね。

859 :デフォルトの名無しさん:2010/10/26(火) 21:10:35
Pythonに関係ない話なら他でやれよ

860 :デフォルトの名無しさん:2010/10/26(火) 21:17:12
>>859
そもそも自分の質問は他の方の回答でほぼ解決しているので、このまま終了でも
無問題なのですが、質問した手前放り出すわけにも行かずお付き合いしています。
というわけでどうするかは>>848に任せます。

861 :デフォルトの名無しさん:2010/10/26(火) 21:28:12
自演荒らし?

862 :デフォルトの名無しさん:2010/10/26(火) 21:32:13
>>861
違います

863 :デフォルトの名無しさん:2010/10/26(火) 21:43:58
お前らセックスしろよ
気持ちいいし、少子化も防げるぞ

864 :デフォルトの名無しさん:2010/10/26(火) 21:50:18
頭が固いと大変だな

865 :デフォルトの名無しさん:2010/10/26(火) 21:50:56
人間は神になるために中性を保つのだよ

866 :デフォルトの名無しさん:2010/10/26(火) 21:58:49
zopeとかdjangoやってる奴らは魔法使いが多そう(wwWwwWwwWWWwww

867 :デフォルトの名無しさん:2010/10/26(火) 22:02:17
perl忍者はNGNameなんだからコテ外すなよ

868 :デフォルトの名無しさん:2010/10/26(火) 22:08:37
扱ってるものが宗教問題化しがちで基地外も少なくはない板なのに、なんでIDねーんだかいつも不思議

869 :デフォルトの名無しさん:2010/10/26(火) 22:16:19
荒らしてるという自覚のない荒らしが増えて困ってる

870 :デフォルトの名無しさん:2010/10/26(火) 22:18:59
セックスしろよ(www
嵐とかどうでもよくなるぞ(wWWwwWWwww

871 :デフォルトの名無しさん:2010/10/26(火) 22:30:00
>>868
はげどう
宗教戦争になりやすいOS板にも何故か無い

872 :デフォルトの名無しさん:2010/10/26(火) 22:33:44
まだ荒らしが続いてるのか…

873 :デフォルトの名無しさん:2010/10/26(火) 22:48:21
>>858
> 私はPythonのモデルは↓以外にはないと考えていました。
> http://docs.python.org/reference/
それ。置き換える先は、JavaのStringやらStringBuffer。

> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
別の解釈で置き換える方法が自明じゃないことをもってして、曖昧であることを示せない、ということを挙げたまで。

> 質問だったのですが答えては頂けないんですね。
そもそも、質問がおかしかったのだから答えようがない。
> とりあえずnはimmutableと扱われますね。
C++ではそうなる。
が、Pythonではmutableのものをimmutableにすることはできないのだから、
C++でのimmutableはPythonでのimmutableとは全くの別物。

874 :デフォルトの名無しさん:2010/10/26(火) 23:13:39
Djangoの習得Webのマニュアルだけでいける?
2日もあればなんか作れるよね、そうだといいなぁ

875 :デフォルトの名無しさん:2010/10/26(火) 23:22:44
>>873
>>859に配慮しないのですか?

> それ。置き換える先は、JavaのStringやらStringBuffer
なら実装なんて見る必要ないよね?

> > 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> > どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
> 別の解釈で置き換える方法が自明じゃないことをもってして、曖昧であることを示せない、ということを挙げたまで。
論理が破綻してますよ。あらゆる解釈が成立していない例を示しても意味ないでしょ?
説明をする気ならする、しないなら取り下げて。無駄な話をしたくない。

> そもそも、質問がおかしかったのだから答えようがない。
であれば解釈が二通り以上成立する文脈を一意に正すための質問をしてから
回答してください。あなたの場合は、無関係な質問をして話題を変えているだけ。

> C++でのimmutableはPythonでのimmutableとは全くの別物。
同じですよ。f()内でそういう型として扱われているだけ。

immutableなオブジェクトを渡すためにはimmutableな引数が必要ですよね?
mutableな引数ではどちらも渡せます。どちらを渡す場合でも参照渡しという
渡し方になっているため、渡し方にmutableとimmutableは関係ないですよね?

C++ではimmutableかどうかを、文脈ごとに宣言される型に基づき、コンパイル時に
正しくチェックできます。
Pythonでは、実行時、変更するオブジェクトがimmutableかどうかを見てチェックする
必要があります。
双方のimmutableは同じ意味としてどこかに問題がありますか?

876 :デフォルトの名無しさん:2010/10/26(火) 23:34:55
変数、値、オブジェクトのモデルが全く異なる言語同士で「同じようなもの」
を対応付けようとする行為は、主観が入るので人ごとに話が食い違って当たり前。
「C/C++で言えば」という話題は全く生産的ではない。

Javaの object 型変数のみに限定すれば、Pythonの変数とオブジェクトのモデルに
ほぼ一致する。

877 :デフォルトの名無しさん:2010/10/26(火) 23:39:36
>>876
javaのオブジェクトって中身をmutableにできたっけ?

878 :デフォルトの名無しさん:2010/10/26(火) 23:41:15
あ、immutableね

879 :デフォルトの名無しさん:2010/10/26(火) 23:42:37
全く異なることはないだろう。
Javaの参照型/Pythonのobject型はポインタからポインタ演算を無くしたようなもんだし。
Cの値型やJavaのプリミティブ型、C++の参照型は対応するものが存在しないからややこしいけど……。

880 :デフォルトの名無しさん:2010/10/26(火) 23:51:00
>>875
> >>859に配慮しないのですか?
あなたこそ。

> なら実装なんて見る必要ないよね?
なぜそういえる?

> あらゆる解釈が成立していない例
の意味が分からない。
実装見るか数学者に聞けって話を、モデルが曖昧であると勘違いしたレスがあったから、
モデルが曖昧でなくても、別のモデルで説明することが困難な場合があると書いているだけ。

> 解釈が二通り以上成立する
私には、1通りすら解釈が思い浮かばない。ナンセンスで答えようのない質問にしか読めない。

> あなたの場合は、無関係な質問をして話題を変えているだけ。
関係がないのですか?
あると推測して聞いてみたのですが、質問の意図をあなたしか知らない以上、それはどうしようもないです。

> 同じですよ。f()内でそういう型として扱われているだけ。
そういう概念が、Pythonにはない。
> 双方のimmutableは同じ意味としてどこかに問題がありますか?
ゆえに受け入れられないし、それ以前に、なんで別のものを同じだと言いたがるのかが分からない。

881 :デフォルトの名無しさん:2010/10/26(火) 23:56:20
>>879
参照はポインタ演算もないし自動デリファレンスしてくれるしで
「何かを指すもの」として抽象化されている
だったらわざわざ低レベルなポインタを持ち出して
Pythonの参照を理解しようなんて真似をする必要はないと思うんよ

ところでJavaの参照型なんかはヒープに確保されるんだろうけど
Pythonのintなんかもそうなの?

882 :デフォルトの名無しさん:2010/10/27(水) 00:13:29
> > >>859に配慮しないのですか?
> あなたこそ。
>>860で意思表示しています。あなたがレスをするので続けているだけ。

> > なら実装なんて見る必要ないよね?
> なぜそういえる?
そのモデルで厳密に実装されていると、あなたが言っていたし、
私は厳密でなくていいと何度も言っているから。

> > あらゆる解釈が成立していない例
> の意味が分からない。
そのレスは、>>858
> > Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
> > Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
という部分の引用です。

> > あなたの場合は、無関係な質問をして話題を変えているだけ。
> 関係がないのですか?
何度も無関係と書いています。検索してみてはどうですか?

> あると推測して聞いてみたのですが、質問の意図をあなたしか知らない以上、それはどうしようもないです。
そこが噛み合わない原因ですね。記述してある内容と矛盾する推測に基づいてレスをしています。

> > 同じですよ。f()内でそういう型として扱われているだけ。
> そういう概念が、Pythonにはない。
そういう機能がないから何?

> > 双方のimmutableは同じ意味としてどこかに問題がありますか?
> ゆえに受け入れられないし、それ以前に、なんで別のものを同じだと言いたがるのかが分からない。
それで何も問題がないからでしょう?

883 :デフォルトの名無しさん:2010/10/27(水) 00:21:13
>>882
やるならちゃんとやれよ
投げやりになってるぞ

884 :デフォルトの名無しさん:2010/10/27(水) 00:22:15
引用文が多すぎ…どっか別のとこでやって欲しいなあ。ツイッターとかさ

885 :デフォルトの名無しさん:2010/10/27(水) 00:32:56
>>878
JavaのStringやIntegerはimmutableだよ。Pythonととても似てる。

>>881
Pythonの全てのオブジェクトはヒープに格納される。

886 :デフォルトの名無しさん:2010/10/27(水) 00:38:53
なんかレスするためのレスになってきたぞ

887 :デフォルトの名無しさん:2010/10/27(水) 00:46:34
>>885
thx.
JavaやC#みたいに値型はスタックで参照型はヒープとかじゃないんだ
なら尚更そういうモデルは持ち込まないほうがよさげか

888 :デフォルトの名無しさん:2010/10/27(水) 00:53:25
おまえら二人でやれよ
スレ汚すなアホ

889 :デフォルトの名無しさん:2010/10/27(水) 00:54:10
いるなこういう奴・・・
本人は難しそうな言葉を駆使して厳密な議論をしてるつもりなんだけど、とても残念なことに頭が悪い
(´・ω・)カワイソス


890 :デフォルトの名無しさん:2010/10/27(水) 01:05:53
IDが出ないのをいい事に、多重人格炸裂してますね。

891 :デフォルトの名無しさん:2010/10/27(水) 01:09:33
おい、python
配列スライスが変態すぎるだろ

[index...index]使わせてくれよ

892 :デフォルトの名無しさん:2010/10/27(水) 01:11:41
ごめんtypo
perlもrubyも[index..index]だったね


893 :デフォルトの名無しさん:2010/10/27(水) 01:15:06
>>891
inclusive range は提案されたけど、たかだか -1 や +1 の2タイプを省略するためだけに
構文ルールは増やさないってさ。

スライスにstep指定できるのはホントに変態だよな。
rgb = range(24)
rgb[::3] = [255]*8 # Rが全部255に!

894 :デフォルトの名無しさん:2010/10/27(水) 01:25:57
>>893
すげぇ・・・変態すなぁ

895 :デフォルトの名無しさん:2010/10/27(水) 02:08:37
>>882
> 私は厳密でなくていいと何度も言っているから。
厳密でなくていいって前提が、まずおかしい。
間違っていてもいいなら、初めから質問しなくてもいいし、
間違っていないことを検証しなくてもいいなら、間違っていないことを示せていない点で、間違っていてもいいと同じこと。

> どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
そこの時点で、意味が分からなかった。
なので
> 何かの処理をラムダ式でどう表現できるかは今の話に何の関係もないし、
にのみ答えた。

> 何度も無関係と書いています。
ないというわりには、ない根拠が明確でない。
> そこが噛み合わない原因ですね。
なら、その部分を明確にする気がないのですか。
> 記述してある内容と矛盾する推測
具体的に、どことどこ?

> そういう機能がないから何?
ないから、同じとはいえない。

> それで何も問題がないからでしょう?
そりゃ「ないから何?」で済ませるなら、問題になりようがないわな。

同じ質問だが、なんで別のものを同じだと言いたがるの?
「同じ」じゃなくて「似てる」とかだったら同意するのに、どうして同じだと言い張る?

>>889
正直、難しい言葉なんて自分が混乱するだけだから使いたくないし、面倒を避けるために厳密にしたら余計に面倒になってしまう。俺はとても残念なことに頭が悪い。

896 :デフォルトの名無しさん:2010/10/27(水) 02:09:38
>>895
コテ付けてくれ。長すぎて邪魔だからNGできるように

897 :デフォルトの名無しさん:2010/10/27(水) 03:42:19
もういっそ隔離スレ作って、こいつら以外の全員が移住すればいいんじゃね?

898 :デフォルトの名無しさん:2010/10/27(水) 03:43:48
>>897
よし、言いだしっぺ頼むぜ

899 :デフォルトの名無しさん:2010/10/27(水) 04:02:08
>>895
OK。ここで続けるのですね。
> 厳密でなくていいって前提が、まずおかしい。...間違っていてもいいと同じこと。
厳密でなくていいというのは漏れや例外があったとしても大筋合っていれば構わないということ。

> > どんな解釈も成立しない無茶苦茶なこと言ってるように聞こえます。
> そこの時点で、意味が分からなかった。
↓を噛み砕いて説明できればOKです。
> Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
> Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
没解釈例)「 Javaで書かれた処理がラムダ式で表現できることは証明されているはずだがそのラムダ式がどう表現されているかは推測できないだろう?」
なぜ手続き型のJava?なぜラムダ式?となり、仮にそれらを許容したとしても仕様は1つでも実装は何通りも書けるでも同じで、数学の出る幕はない。

> > 何度も無関係と書いています。
> ないというわりには、ない根拠が明確でない。
その場で聞きましょう。例えば、今続いてる話は一体何を目的としてその目的とどう関係しているのか考えてみてください。

> > そこが噛み合わない原因ですね。
> なら、その部分を明確にする気がないのですか。
>>882で「何度も無関係と書いている」のに関係「あると推測して聞いて」いると言っているからです。
> > 記述してある内容と矛盾する推測
> 具体的に、どことどこ?
無関係と言っているのにそれを放置して続けている部分です。自分で検索してください。

> ないから、同じとはいえない。
引数の型修飾が「ない」となぜmutable/immutableの意味が「同じとはいえない」のですか?
> そりゃ「ないから何?」で済ませるなら、問題になりようがないわな。
何が問題か尋ねているのに何も問題を書いていないかったからです。
> 同じ質問だが、なんで別のものを同じだと言いたがるの?
これはただの水掛け論ですね。
> 「同じ」じゃなくて「似てる」とかだったら同意するのに、どうして同じだと言い張る?
結論が変わらない(引数の渡し方は渡すオブジェクトがmutable/immutableかどうかとは無関係である)なら表現はなんでも構いません。

900 :デフォルトの名無しさん:2010/10/27(水) 04:36:06
文字化けの原因がわかったよおおおおおおおおお


pythonじゃなくてsambaが問題だったorz

901 :デフォルトの名無しさん:2010/10/27(水) 06:01:50
>>558-566
この辺テンプレにいれるの?

902 :デフォルトの名無しさん:2010/10/27(水) 06:14:54
python.jp は外していいと思う

903 :デフォルトの名無しさん:2010/10/27(水) 07:06:39
つーかGoogle検索一本でPythonなんて使えるだろ・・
むしろチュートリアルを内部検索してる時間が無駄
組み込み関数ならググれば一発だし、
ライブラリもそれ用のドキュメントページがヒットする

904 :デフォルトの名無しさん:2010/10/27(水) 07:55:19
python初心者が、まず一冊読むとしたら、どの本がお勧めでしょうか?
CやC++は使ったことがあります。
皆さんのお勧めの本を教えてください。


905 :デフォルトの名無しさん:2010/10/27(水) 07:58:27
>>874
日本のDjangoは死んでるから、何書いても返事帰ってこないよ

906 :デフォルトの名無しさん:2010/10/27(水) 08:04:34
たしかに日本語ページは間違いが多い

907 :デフォルトの名無しさん:2010/10/27(水) 08:09:24
919 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 12:21:51 ID: ???
これって0.96ベースなの?
http://www.amazon.co.jp/dp/4048672096/

920 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 12:25:32 ID: ???
著者陣が豪華過ぎて鼻血出た(wwWwwWWWWwwww

921 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 13:11:50 ID: ???
>>919
書いてる人、A級戦犯だね.

923 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 14:31:08 ID: ???
>>919
レビューひどすぎてワロス

924 名前: nobodyさん Mail: sage 投稿日: 2010/10/17(日) 14:41:50 ID: ???
>>921
温泉逝ってる場合じゃないな


908 :デフォルトの名無しさん:2010/10/27(水) 08:49:09
>>901
テンプレは>>1だけだ

909 :デフォルトの名無しさん:2010/10/27(水) 09:51:59
まだ荒らしが続いてるのか…

910 :デフォルトの名無しさん:2010/10/27(水) 11:09:14
>>904
チュートリアルとオライリーのクックブックと今年出たエキスパートなんとかって本
この3つあれば最強

911 :デフォルトの名無しさん:2010/10/27(水) 11:54:44
>>899
> Javaでできることとラムダ計算で出来ることは数学的には等価なはずだが、
ごめんよ、ここは少なくともJavaでできることはラムダ計算でもできる、の間違い。
その理由は以下のとおり
1. ラムダ計算は、チューリング機械と等価
2. コンピュータでできることは、チューリング機械にもできる
3. Javaでできることはコンピュータにもできる

> Javaがラムダ計算でどう解釈されるかは自明じゃないだろ?
これについては、私には証明できない。あなたは自明と思っているのか?
> なぜ手続き型のJava?なぜラムダ式?となり、(中略)数学の出る幕はない。
文章の意味が分からない。

> 今続いてる話は一体何を目的としてその目的とどう関係しているのか考えてみてください。
むしろ、あなたの目的が分からない。私は、以下が主張したいだけ。
・何かのモデルを別のモデルで説明することは、簡単なことではない。ましてや、それができないからといって、元のモデルが曖昧とはいえない。
・何かと何かが全く同じであると説明することは、慎重を要する。簡単に、同じであると言うことができない

> >>882で「何度も無関係と書いている」のに
検索したけど、無関係である理由をあなたは何一つ説明していない。
私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?

> 引数の型修飾が「ない」となぜmutable/immutableの意味が「同じとはいえない」のですか?
型修飾がないことじゃなくて、あることが問題。mutableなオブジェクトはずっとmutableでないといけない。

> 何が問題か尋ねているのに何も問題を書いていないかったからです。
上述のとおり。一応、勘違いのないように言っておくけど、
「同じとみなしても問題がないなら同じ」というのは真だけど、「同じとみなしても問題が見つからないのは同じ」は偽だからね。

> 結論が変わらない(引数の渡し方は渡すオブジェクトがmutable/immutableかどうかとは無関係である)なら表現はなんでも構いません。
引数の渡し方から、だいぶ話がずれてるように思えるけど。Pythonでは変わらないよ。
C++じゃ、mutable/immutableがオブジェクトに付随してると言えるかは疑問だが、どっちも同じ渡し方だよ。

912 :デフォルトの名無しさん:2010/10/27(水) 12:04:30
コテつけるか/.やfjでやってよ。

913 :デフォルトの名無しさん:2010/10/27(水) 16:02:09
IDの出る板に引っ越したい

914 :デフォルトの名無しさん:2010/10/27(水) 16:11:18
じゃあVIPにたてとくわ

915 :デフォルトの名無しさん:2010/10/27(水) 16:37:15
fj.comp.lang.pythonがない…

916 :デフォルトの名無しさん:2010/10/27(水) 18:11:18
>>911←コイツとコイツの相手してる奴消えろ

917 :デフォルトの名無しさん:2010/10/27(水) 18:20:26
>>911
> 3. Javaでできることはコンピュータにもできる
この辺が最初の行の解釈ということですね。
任意の処理がラムダ式で表現可能であることがどうしてJavaと結びつく必要があるのでしょうか?
> これについては、私には証明できない。あなたは自明と思っているのか?
まずご自分の文(2行目)の解釈をしてください。
> 文章の意味が分からない。
「手続き型のJava?ラムダ式?」関数型ならさほど違和感がないがJavaは不明。
「仕様は1つでも実装は何通りも書ける」仕様を実装しても、まったく同じ実装にはなりません。
「数学の出る幕はない」あなたの2行の意味が前述と同じならラムダ式も数学も出る幕はない。

> ・何かのモデルを別のモデルで...曖昧とはいえない。
> ・何かと何かが全く同じであると...同じであると言うことができない
二つまとめて「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」と聞こえます。
私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
もし私に納得させることが必要なら、定理の証明のような限定的な局面においてのみ納得します。
私は>>860に書いたとおり目的はなく、あなたの意志を尊重してお付き合いしています。

> 無関係である理由をあなたは何一つ説明していない。
理由が必要なら聞きましょう。
> 私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?
いいえ。結論に関係するなら問いただし、でなければスルーします。

> 型修飾がないことじゃなくて、...ずっとmutableでないといけない。
pythonでもC++でもmutableであることの意味は違っていません。理由をご説明ください(*1)。
> 「同じとみなしても問題が...同じ」は偽だからね。
問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> C++じゃ、mutable/immutableが...どっちも同じ渡し方だよ。
なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。

918 :デフォルトの名無しさん:2010/10/27(水) 18:23:05
make a neat programme

919 :デフォルトの名無しさん:2010/10/27(水) 18:29:29
>>916
ジエンしてるんだから言っても無駄だよ。
書いてる内容に全く変化が無いだろ?自分の知識の範疇から抜けだした解説が出来ないからね。w

920 :デフォルトの名無しさん:2010/10/27(水) 19:10:06
pass

921 :デフォルトの名無しさん:2010/10/27(水) 19:40:00
>>917
仕様を実装しても、まったく同じ実装にはなりません。
「数学の出る幕はない」あなたの2行の意味が前述と同じならラムダ式も数学も出る幕はない。
任意の処理がラムダ式で表現可能であることがどうしてJavaと結びつく必要があるのでしょうか?
「手続き型のJava?ラムダ式?」関数型ならさほど違和感がないがJavaは不明。
> 「同じとみなしても問題が...同じ」は偽だからね。
問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> これについては、私には証明できない。あなたは自明と思っているのか?
まずご自分の文(2行目)の解釈をしてください。
> 文章の意味が分からない。
> C++じゃ、mutable/immutableが...どっちも同じ渡し方だよ。
なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。「仕様は1つでも実装は何通りも書ける」
> ・何かのモデルを別のモデルで...曖昧とはいえない。
私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
もし私に納得させることが必要なら、定理の証明のような限定的な局面においてのみ納得します。
私は>>860に書いたとおり目的はなく、あなたの意志を尊重してお付き合いしています。

> 型修飾がないことじゃなくて、...ずっとmutableでないといけない。
理由が必要なら聞きましょう。
> 私があなたの書いたことを、理由の説明もなく無関係と切り捨てたら、あなたは納得する?
いいえ。結論に関係するなら問いただし、でなければスルーします。
> ・何かと何かが全く同じであると...同じであると言うことができない
二つまとめて「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」と聞こえます。

> 無関係である理由をあなたは何一つ説明していない。
pythonでもC++でもmutableであることの意味は違っていません。理由をご説明ください(*1)。
> 3. Javaでできることはコンピュータにもできる
この辺が最初の行の解釈ということですね。


922 :デフォルトの名無しさん:2010/10/27(水) 19:47:59
>>921
どこを縦読みすればいいの?

923 :デフォルトの名無しさん:2010/10/27(水) 20:26:26
まだ荒らしが続いてるのか…

924 :デフォルトの名無しさん:2010/10/27(水) 20:30:08
今北産業

925 :デフォルトの名無しさん:2010/10/27(水) 20:43:59
pass

926 :デフォルトの名無しさん:2010/10/27(水) 22:19:18
>>917
Java云々のところは、あなたが一体何をいっているのか分からない。
コンピュータはチューリング機械で表現できて、ラムダ計算はチューリング機械と等価。
それは(あなたの直感に従おうと、従うまいと)数学的に証明された事項です。
結びつく必要、ではなく、結びついているのです。

> なら「似ている」で問題ないです。全ての「同じ」を「似ている」に読み替えるなどして(*1)(*2)の終了をご判断ください。
ええ。なら、似ているけれど、同じではないのです。

> 「汎用的に何かを証明することは例え直感的に理解できる簡単な定理でも極めて難しい」
その通りでしょう。
> 私は定理の証明のような厳密な回答を求めているわけではないので、元の私の質問に無関係です。
曖昧と言い出したのはあなたです。曖昧であることを、あなたは説明できていません。取り下げるなら取り下げてください。
そして、厳密でないなら「(必ずしも)同じでない」という私の意見にどうして「同じである」と反論する必要がなかった。
「必ずしも同じでないかもしれないが、私の使いたい局面では同じものと扱っても問題はない」であった。

> 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
どんだけ、数学が苦手なんですか?
フェルマーの最終定理証明した人も、こんないわれ方されたら酬われないわ。

> 理由が必要なら聞きましょう。
むしろ、無関係と主張したいのなら、その理由を書きましょう。

>>921
??

927 :デフォルトの名無しさん:2010/10/27(水) 22:48:00
> コンピュータはチューリング機械で表現できて、ラムダ計算はチューリング機械と等価。
> それは(あなたの直感に従おうと、従うまいと)数学的に証明された事項です。
それは任意の処理がラムダ式で表現できることと同じことで、それ自体は否定していませんよ。
ただこの話にラムダ式もJavaも出る必要がないと言っています。2行目の解釈次第です。

> ええ。なら、似ているけれど、同じではないのです。
終了判断を要求しているだけですよ。(*1)は書かれていないので終了と判断します。

> 曖昧と言い出したのはあなたです。曖昧であることを、あなたは説明できていません。取り下げるなら取り下げてください。
取り下げません。分からないなら聞いてください。曖昧であるという主張をした部分をまとめると以下のとおりです。
「Pythonの実装を見なければ分からないのであれば、実装が厳密にモデルを反映している以上、
 Pythonのモデルが曖昧だということになります。」
> そして、厳密でないなら「(必ずしも)同じでない」という私の意見にどうして「同じである」と反論する必要がなかった。
「私の意見」とはどこですか?
> 「必ずしも同じでないかもしれないが、私の使いたい局面では同じものと扱っても問題はない」であった。
先の質問の回答に依存するので保留します。

> > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> どんだけ、数学が苦手なんですか?
苦手意識は全くありません。
> フェルマーの最終定理証明した人も、こんないわれ方されたら酬われないわ。
定理の証明をするのなら全ての言葉や記号に厳密な定義を要求します。
フェルマーの最終定理は天才が何十年もかけた長い証明で理解している人も世界中でも一握りでしょう。
今の話とは無関係です。

> > 理由が必要なら聞きましょう。
> むしろ、無関係と主張したいのなら、その理由を書きましょう。
どこですか?

928 :デフォルトの名無しさん:2010/10/27(水) 22:51:39
帰れ

929 :デフォルトの名無しさん:2010/10/27(水) 23:26:08
Pythonに見られるインデントによる制御構造の是非
http://hibari.2ch.net/test/read.cgi/tech/1169473442/

↑みたいな感じにスレッドを分けて、
気が済むまでやってもらえばいいよ。
さて、スレッドの名前はどうするよ?

930 :デフォルトの名無しさん:2010/10/27(水) 23:31:48
それも考えたのですが、スレも終わり近いし、ポインタ出したり以前の部分を見るのも面倒なので
次スレまでまたがるようなら、と考えていました。私は今でも

「このまま終わりでいい」

んですけどね。

931 :デフォルトの名無しさん:2010/10/27(水) 23:34:33
> Pythonの実装を見なければ分からないのであれば、実装が厳密にモデルを反映している以上、
>  Pythonのモデルが曖昧だということになります。
みたいな意味不明な文書くのは終わらせる気無いからだろ

932 :デフォルトの名無しさん:2010/10/27(水) 23:39:02
>>927
> この話にラムダ式もJavaも出る必要がない
うん。知ってた。例として挙げただけ。

> 「Pythonの実装を見なければ分からないのであれば、実装が厳密にモデルを反映している以上、
>  Pythonのモデルが曖昧だということになります。」
意味が分からない。

> 「私の意見」とはどこですか?
あなたの「無関係」と同等かそれ以上に、「同じでない」あるいは「違う」という言葉を使っているはずですが。
人に検索しろというなら、あなたもやってはどうですか。

> 今の話とは無関係です。
いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
> > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
とありましたが、その通り「今のところは問題がない(が、必ずしもないとは限らない)」で話は終わってしまい、進まないのです。

> どこですか?
え?どこか把握してなかったの? 道理で、検索してもあんまりヒットしないわけだ。

933 :デフォルトの名無しさん:2010/10/27(水) 23:43:36
こういう時ってコテハン付けるべきじゃねーの?
ただでさえ長いってのにIDもないし追いかけるの面倒すぎるんですけど

934 :932:2010/10/27(水) 23:45:13
ということで、私は、話を進める気なんて一つもなくて、
・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない
・今のところは問題がない(が、必ずしもないとは限らない)
で、これ以上話が進まなくなればいいと思っています。

Javaとラムダ式が気にくわなかったのなら、Schemeとチューリングマシンでも、小麦粉とうどんでも、
パッと見、前者で後者を表現できるとは思えないけど実はできるもの、ならなんでもよかったのです。

935 :デフォルトの名無しさん:2010/10/27(水) 23:45:59
二人(一人?)だけで話が進むようになってから
まるで得るところのない話になってるな

936 :デフォルトの名無しさん:2010/10/27(水) 23:49:47
まだ荒らしが続いてるのか…

937 :デフォルトの名無しさん:2010/10/27(水) 23:56:33
>>932
> うん。知ってた。例として挙げただけ。
なら仕様を実装する方法が1通りではない、で置き換えて問題なく、数学は関係ないですよね?

> 意味が分からない。
これ以上噛み砕いた説明はないと思います。モデルから見れば分からず、実装を見れば分かるのであれば
モデルが曖昧だというだけですよ?

> 人に検索しろというなら、あなたもやってはどうですか。
回答するために絞りたいだけです。

> いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
> それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
フェルマーの最終定理は関係あるはずはないでしょう。頭を冷やしてください。
まずは詰まっている部分に回答をしてから新しい話をしてください。

> > > 問題ないか聞いて問題の指摘もないのに問題ないことにならなかったら話が進みません。(*2)
> とありましたが、その通り「今のところは問題がない(が、必ずしもないとは限らない)」で話は終わってしまい、進まないのです。
ではそれで厳密にする必要がないのだから問題がないことにすればいいでしょう?

> え?どこか把握してなかったの? 道理で、検索してもあんまりヒットしないわけだ。
回答するために絞りたいだけです。

938 :デフォルトの名無しさん:2010/10/27(水) 23:58:02
>>934
> ということで、私は、話を進める気なんて一つもなくて、
> ・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない
> ・今のところは問題がない(が、必ずしもないとは限らない)
> で、これ以上話が進まなくなればいいと思っています。
これは話を続ける必要はないと言っているのですか?

> Javaとラムダ式が気にくわなかったのなら、Schemeとチューリングマシンでも、小麦粉とうどんでも、
> パッと見、前者で後者を表現できるとは思えないけど実はできるもの、ならなんでもよかったのです。
では仕様と実装の話でさっさと手を打てばよかったでしょう?

939 :デフォルトの名無しさん:2010/10/28(木) 00:09:35
まだ荒らしが続いてるのか…

940 :デフォルトの名無しさん:2010/10/28(木) 00:14:32
せめてコテ付ける遠慮とか共有スペースで受けた非難を認識できない、
アホ親が残念に育てたようなド低能か病気持ちには言っても無駄かもしれんが
ここはてめー(ら?w)の家の便所じゃないんだから、次からは自分(ら?)で立てたスレでクソたれろ

941 :デフォルトの名無しさん:2010/10/28(木) 00:16:43
スレッドは立ててあげるから
さっさとスレッド名を決めてね♪

942 :デフォルトの名無しさん:2010/10/28(木) 00:18:09
つーか、お前らこのスレはもう諦めてんのかw

943 :デフォルトの名無しさん:2010/10/28(木) 00:32:36
>>940-942
非難と言うより煽りと考えて無視しました。続くようなら、
「【触るな】Python隔離スレ Part1【危険】」でお願いします。

944 :デフォルトの名無しさん:2010/10/28(木) 00:44:54
挑発するようなスレタイを提案するのは、クダレスしてるバカでしょ。
つか、このスレ俺とジエンしてる奴の二人しか居ない感じだね。
wwwwwwwwwwwwwwwwwwwwwwwwwwwwww

945 :デフォルトの名無しさん:2010/10/28(木) 01:28:00
「Pythonと小麦粉とうどん」

946 :デフォルトの名無しさん:2010/10/28(木) 01:29:20
蕎麦の方が美味しいと思います

947 :デフォルトの名無しさん:2010/10/28(木) 01:43:16
>>937
> なら仕様を実装する方法が1通りではない、で置き換えて問題なく、
実装する方法は1通りじゃないけど、そのこととの関係性が分からない。
> 数学は関係ないですよね?
なぜ?

> モデルから見れば分からず、実装を見れば分かるのであればモデルが曖昧だというだけですよ?
曖昧なら実装できない。

> フェルマーの最終定理は関係あるはずはないでしょう。頭を冷やしてください。
うん。関係ない。けど、それを持ち出した経緯とは関係がある。つまり
> > いいえ。少なくとも私は、あなたが「同じである」と言いたいのなら、厳密な意味で「同じである」ことを示すこと、
> > それができないならば、「厳密には同じでないかもしれない」ことを認めるよう要求しています。
ということだな。

> ではそれで厳密にする必要がないのだから問題がないことにすればいいでしょう?
それってなに? なぜ厳密にする必要がない?

人には検索しろ、回答しろ。自分は、回答してほしけりゃ場所教えろ。いい加減にしたら。

> これは話を続ける必要はないと言っているのですか?
うん。あなたが
> > ・(多くの場合は同じと扱って問題はないけど)厳密には同じでないかもしれない
> > ・今のところは問題がない(が、必ずしもないとは限らない)
を認めるなら。

> では仕様と実装の話でさっさと手を打てばよかったでしょう?
上述の通り、その関係性が分からない。

948 :デフォルトの名無しさん:2010/10/28(木) 01:45:03
まだやってんのか

949 :デフォルトの名無しさん:2010/10/28(木) 01:57:58
>>941
エラーでスレ立てできません。よろしくお願いします。名前はなんでも構いません。
>>947
スレ立つまで返事はできません。

950 :デフォルトの名無しさん:2010/10/28(木) 02:18:32
クソスレたてんなや。次スレたてて、このスレを隔離スレにすればいい。
このスレ埋まったらもう出てくんな

951 :デフォルトの名無しさん:2010/10/28(木) 02:26:29
これ、誰もスレ立てなかったらそれで終わるんじゃね?

952 :デフォルトの名無しさん:2010/10/28(木) 02:33:35
ここで続くだけだろ

953 :デフォルトの名無しさん:2010/10/28(木) 02:35:49
>>951
>>950でもいいやと書いてましたが、それいいですね。それでいきましょ。

954 :デフォルトの名無しさん:2010/10/28(木) 04:31:00
まだ荒らしが続いてるのか…

955 :デフォルトの名無しさん:2010/10/28(木) 07:01:05
きのこスレ辺りを避難所にするか?

956 :デフォルトの名無しさん:2010/10/28(木) 16:13:06
小麦粉とうどんの話してるのは分かった

957 :デフォルトの名無しさん:2010/10/29(金) 01:07:24
まだ荒らしが続いてんのか

958 :デフォルトの名無しさん:2010/10/29(金) 04:34:42
大学入りC言語の勉強をして半年になります。
C以外も勉強したいと思いPythonをやろうとおもうんですけど、
CとPythonの明確又は大きな違いはズバリどこなんでしょうか?

959 :デフォルトの名無しさん:2010/10/29(金) 04:40:46
名前が違う

960 :デフォルトの名無しさん:2010/10/29(金) 07:04:46
>>958
C言語と、Pythonをはじめとしたスクリプトとの大きな違いとして
リスト/配列や文字列などが非常に楽に、かつ安全に扱えるという点が大きいかな。
あとポインタやメモリ確保/解放に当たる要素もかなり抽象化されていて、そこも安全。
逆に欠点はやや実行速度に欠けるところと、抽象化されているために直接メモリ管理を扱うようなコードが書けない点。

961 :デフォルトの名無しさん:2010/10/29(金) 07:42:20
当たり前だけど標準で使えるモジュールがpythonの方が圧倒的に多い


962 :デフォルトの名無しさん:2010/10/29(金) 07:48:55
知名度

963 :デフォルトの名無しさん:2010/10/29(金) 08:53:55
>>958
いろいろあるだろうけど、自分なりの説明。
C言語
・静的なコンパイル型言語
・いろんなことがコンパイル時に決まってないといけない
・高速だけど不便
Python
・動的なインタプリタ型言語
・いろんなことが実行するときに決められる(実行しないと決められない)
・低速だけど便利


964 :デフォルトの名無しさん:2010/10/29(金) 08:57:15
言語的な違いは山ほどあるなあ
でも構文的にはCに偏ってるから学習ははかどるよ
俺もCしか出来なかったけどPythonでオブジェクト指向を学んである種に開眼した

965 :デフォルトの名無しさん:2010/10/29(金) 09:38:41
インデント

966 :デフォルトの名無しさん:2010/10/29(金) 11:42:57
Cの構造体が分かればオブジェクト指向は理解できるよね

967 :デフォルトの名無しさん:2010/10/29(金) 11:46:03
できません

968 :デフォルトの名無しさん:2010/10/29(金) 11:54:38
理解の入り口にはなる

FILE* なんかが良い例

だがオブジェクト指向の一部が理解出来るだけだから
それだけでは全体は理解出来ない

969 :デフォルトの名無しさん:2010/10/29(金) 12:04:54
頭が悪いんですね、可哀想。

970 :デフォルトの名無しさん:2010/10/29(金) 12:13:05
>>966 がな

971 :デフォルトの名無しさん:2010/10/29(金) 12:34:26
違うものを同じものだと思い込むのはイクナイ

972 :デフォルトの名無しさん:2010/10/29(金) 13:18:21
まあCとpythonなんて同じだよな

973 :デフォルトの名無しさん:2010/10/29(金) 14:24:00
頭が悪い、というよりおかしいのだ

974 :デフォルトの名無しさん:2010/10/29(金) 14:48:06
pass

975 :デフォルトの名無しさん:2010/10/29(金) 17:55:04
Pythonのお勉強 Part40
http://hibari.2ch.net/test/read.cgi/tech/1288342460/

976 :デフォルトの名無しさん:2010/10/30(土) 09:22:24
>>975


977 :デフォルトの名無しさん:2010/10/30(土) 12:18:06
>>975
乙。以下良く分からない難しい長文で論議する人が
良く分からない難しい長文で論議するスペースになるんですか?
んじゃ私は新スレの方に行きますノシ

978 :デフォルトの名無しさん:2010/10/30(土) 13:41:34
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

979 :デフォルトの名無しさん:2010/10/30(土) 22:47:46
つーか論議してくれたほうがDAT落ちしやすいんで助かるんだよな
論議しない人も、雑談にでも使って埋めてくれると助かる

950超え980未満で放置されたスレ(人任せで放棄)が溜まっていると、
投稿ペースが芳しくなくても需要のあるスレが落ちて困るんだよ

980 :デフォルトの名無しさん:2010/10/30(土) 22:56:04
で、ここで終わらず新スレに持ち越す、と。

981 :デフォルトの名無しさん:2010/10/30(土) 22:59:48
圧縮がくるな。
落ちるスレッドは今のところ38個。
基準は最後の書き込みが古い順だ。

982 :デフォルトの名無しさん:2010/10/30(土) 23:32:51
んじゃ梅

983 :デフォルトの名無しさん:2010/10/31(日) 00:11:04
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

984 :デフォルトの名無しさん:2010/10/31(日) 00:11:45
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

985 :デフォルトの名無しさん:2010/10/31(日) 00:12:54
    _  ∩
  ( ゚∀゚)彡 初ぱい!初ぱい!
  (  ⊂彡
   |   | 
   し ⌒J

986 :デフォルトの名無しさん:2010/10/31(日) 01:02:26
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

987 :デフォルトの名無しさん:2010/10/31(日) 01:03:33
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

988 :デフォルトの名無しさん:2010/10/31(日) 01:08:59
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

989 :デフォルトの名無しさん:2010/10/31(日) 01:26:12
埋めるために質問
お前ら何目的でpython使っておます?

990 :デフォルトの名無しさん:2010/10/31(日) 01:32:30
シェルスクリプトでどう書いたらいいかわかんないときの
逃げ道として使わせていただいております

991 :デフォルトの名無しさん:2010/10/31(日) 01:50:05
Google App Engine
3DCGツールのスクリプトが殆どPythonだから
高機能バッチファイルとして

聞いた話では工業系で使ってる人多いらしいね

992 :デフォルトの名無しさん:2010/10/31(日) 01:53:05
Pythonは基本的に綺麗に書ける言語だけど
結局書く人に依存してスパゲッティはスパゲッティになっちゃうんだよね…
テキストエディタじゃなくてIDE使うべきなのかなぁ

993 :デフォルトの名無しさん:2010/10/31(日) 02:53:48
デスクトップアプリ作ってる
ファイラーとか音楽プレイヤーとか設定ファイルいじるツールとか

994 :デフォルトの名無しさん:2010/10/31(日) 03:00:25
ttp://blog.fujitv.co.jp/simg/profile/9786b/100000287/192242.jpg

995 :デフォルトの名無しさん:2010/10/31(日) 03:02:18
django最強

996 :デフォルトの名無しさん:2010/10/31(日) 03:06:40
>>989
SPAMフィルタ

997 :デフォルトの名無しさん:2010/10/31(日) 03:10:24
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘

998 :デフォルトの名無しさん:2010/10/31(日) 03:10:36
>>989 正規表現使ったファイルのバッチ処理

999 :デフォルトの名無しさん:2010/10/31(日) 03:12:02
鯖缶冶具

1000 :デフォルトの名無しさん:2010/10/31(日) 03:15:53
Pythonのお勉強 Part40
http://hibari.2ch.net/test/read.cgi/tech/1288342460/

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

242 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)