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

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

Pythonのお勉強 Part36

1 :デフォルトの名無しさん:2010/01/31(日) 16:50:08
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://pc12.2ch.net/test/read.cgi/tech/1253535109/

2 :デフォルトの名無しさん:2010/01/31(日) 16:57:09
熨斗

3 :デフォルトの名無しさん:2010/01/31(日) 16:57:13
from __future__ import braces

4 :デフォルトの名無しさん:2010/01/31(日) 17:00:36


>>3
SyntaxError: not a chance

5 :デフォルトの名無しさん:2010/01/31(日) 17:40:21
from PIL import Image, ImageDraw
img = Image.new('RGB', (155, 70))
lines = [(10,10,35,35,10,60),(30,10,55,35,30,60),
(70,15,75,10,75,60),(95,10,135,10,105,40,95,50,105,60,145,60,145,55)]
draw = ImageDraw.Draw(img)
[draw.line(line) for line in lines]
img.show()

6 :デフォルトの名無しさん:2010/01/31(日) 20:54:07
>>1

7 :デフォルトの名無しさん:2010/02/04(木) 00:26:30
python2.5

func(name='myname')
と同じことを
key = 'name'
func(key='myname')
のような感じでやりたいのですが、可能でしょうか?
※keyとしてではなくnameとして渡したい

8 :デフォルトの名無しさん:2010/02/04(木) 00:28:13
func(**{key:'myname'})で早速出来ちゃいました。ごめんなさい

9 :デフォルトの名無しさん:2010/02/04(木) 00:32:55
def func(name):
    print name
key = 'name'
func(**{key:'myname'})


10 :デフォルトの名無しさん:2010/02/04(木) 00:34:34
リロード遅せーぞ>俺

11 :デフォルトの名無しさん:2010/02/04(木) 11:22:57
Python勉強しようと思うんだがおすすめの参考書ってない?

12 :デフォルトの名無しさん:2010/02/04(木) 11:29:55
参考図書
ttp://python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1

13 :デフォルトの名無しさん:2010/02/04(木) 11:32:10
みんなのPythonとか変な本買うより素直に初めてのPythonを買う方がいいと思う。

14 :デフォルトの名無しさん:2010/02/04(木) 11:46:09
Python本はどれも期待外れ

15 :デフォルトの名無しさん:2010/02/04(木) 11:55:23
たぶんレシピブックみたいなのがないからなんだろうな
馬鹿は具体例を見ないと納得出来ない

16 :デフォルトの名無しさん:2010/02/04(木) 12:01:27
鉄板なのがたのしいRuby ■ 絶版なのが実践Python
ライブラリの作者が書いてるのがRubyクックブック ■ なんかよく分からない人が書いてる以下自粛

でもPythonレシピブックはあってもいいよね

17 :デフォルトの名無しさん:2010/02/04(木) 12:02:04
すまんちゃんと見てなかったわ

レス見る限り初めてのPythonがいいのかな

18 :デフォルトの名無しさん:2010/02/04(木) 12:08:27
>>15
おれまさに馬鹿だから、リファレンス見ても使い方がわからない。urllibとか。smtpとか。
ftpしたいときにはRETRとか書かなきゃいかんということを知って愕然としたとか。

19 :デフォルトの名無しさん:2010/02/04(木) 12:10:44
>>18
http://code.activestate.com/recipes/langs/python/

20 :デフォルトの名無しさん:2010/02/04(木) 12:14:17
おお、ftpで検索すると、session.storbinary('STOR YOUR FILE',myfile) とか出てくる。馬鹿でも感謝くらいは出来るので感謝。

21 :デフォルトの名無しさん:2010/02/04(木) 12:32:47
ttp://blog.keyphrene.com/keyphrene/index.php/2008/09/27/7-sftp


22 :デフォルトの名無しさん:2010/02/04(木) 12:35:35
PyQt4 のレシピブックだれか出してくれないかな

23 :デフォルトの名無しさん:2010/02/04(木) 19:50:27
みんpyはかなり初心者向けじゃないの?
はじpyとか意味あるの?

マジレス、初心者にはみんpy以外は無駄な感じ。


24 :デフォルトの名無しさん:2010/02/05(金) 00:40:42
あの丁寧な公式チュートリアルで何が足りないのか聞きたい。

「とにかく大きな本を買っておかないと満足できません」というなら別にそれで構わないけど。

25 :デフォルトの名無しさん:2010/02/05(金) 01:12:08
公式チュートリアルはPython初心者向けではあっても
プログラミング初心者向けじゃないもの
それだけのこと

26 :デフォルトの名無しさん:2010/02/05(金) 01:35:10
.storbinary('STOR YOUR FILE',myfile)
これはなんでSTORがダブってるんだということで直感的じゃないよなー。

27 :デフォルトの名無しさん:2010/02/05(金) 09:17:15
自らの狭い視点でしか物事を考えられない、頭蓋骨の中身が残念な人は、プログラマには向かないと思うんだけど。

28 :デフォルトの名無しさん:2010/02/05(金) 11:08:05
cookbookでてんだからそれ買ったら?

29 :デフォルトの名無しさん:2010/02/05(金) 17:00:13
はじめて手をつけるなら3.1でいいのかな?
おすすめのエディタある?

30 :デフォルトの名無しさん:2010/02/05(金) 17:02:27
>>29
2.6のほうがいい。
理由はライブラリの互換性。

31 :デフォルトの名無しさん:2010/02/05(金) 17:04:13
おすすめのエディタはemacs pyscripter eclipse notepad++など
左のほうがお勧め度高い

32 :デフォルトの名無しさん:2010/02/05(金) 17:05:48
>>27
いや、風呂敷広げすぎると何も作れなくなるのがプログラミング。
趣味グラマならひとつの言語・ひとつのパラダイムで突き進むのが一番幸せ。

33 :デフォルトの名無しさん:2010/02/05(金) 19:06:56
そうだね、自分の殻に閉じこもっていたら、一生独身だね。

34 :デフォルトの名無しさん:2010/02/05(金) 19:19:41
自己紹介乙

35 :デフォルトの名無しさん:2010/02/05(金) 19:22:09
なんか規制が厳しくなったら
滓ばっかり残った感じがする

36 :デフォルトの名無しさん:2010/02/05(金) 19:26:12
自己紹介乙

37 :デフォルトの名無しさん:2010/02/05(金) 19:38:13
>>31
さり気なくVim厨に喧嘩売ってんじゃねーぞ

38 :デフォルトの名無しさん:2010/02/05(金) 21:11:24
pyscripterはデバッガに致命的なバグがあるからお薦めできない
Eclipse+PyDevがいいと思う

39 :デフォルトの名無しさん:2010/02/05(金) 21:12:49
なんとなくだけど、vim厨ってどんな場合でも理由もなく
「こっちのほうが絶対いいよ!!」みたいに偏執的なことを言う人が多い気がする。


40 :デフォルトの名無しさん:2010/02/05(金) 21:13:48
xyzzy使ってるんだけど補完効かせるようにするにはどうすればいいんだろう

41 :デフォルトの名無しさん:2010/02/05(金) 21:37:30
デバッガ?そんなもんつかわねーよwいつでもprint

42 :デフォルトの名無しさん:2010/02/05(金) 21:42:33
>>40
ttp://hie.s64.xrea.com/xyzzy/note/hoge-mode.html#completion
このあたりでできることが限界かなー

43 :デフォルトの名無しさん:2010/02/05(金) 21:56:24
pdb

44 :デフォルトの名無しさん:2010/02/05(金) 22:00:54
import pdb
pdb.set_trace()

45 :デフォルトの名無しさん:2010/02/05(金) 23:39:07
>>41
プロの方ですか? 流石ですね。

46 :デフォルトの名無しさん:2010/02/06(土) 01:06:54
>>41
なら、おれはデパガで。

47 :デフォルトの名無しさん:2010/02/06(土) 06:39:14
>>41
Python で print デバッグすると Codec 周りで例外出て何のデバッグしてるのか分からなくなるw

48 :デフォルトの名無しさん:2010/02/06(土) 17:03:22
repr

49 :デフォルトの名無しさん:2010/02/06(土) 20:01:43
例外の中で例外出したら元の例外がなんだったのか分からなくなるよね

50 :デフォルトの名無しさん:2010/02/06(土) 23:18:34
なぁ、最近witchとhanterの声が脳内に響いてビクビクしてるんだ・・・
俺ってやばいのかな

51 :デフォルトの名無しさん:2010/02/07(日) 00:24:54
boomer! boomer!

52 :デフォルトの名無しさん:2010/02/07(日) 00:25:25
誰がboomerだよ 俺はそこまで太ってないぞ

53 :デフォルトの名無しさん:2010/02/07(日) 03:09:41
Pythonスレがゲロまみれだよ

54 :デフォルトの名無しさん:2010/02/07(日) 03:11:09
Pythonはリバースする必要ないだろ

55 :デフォルトの名無しさん:2010/02/07(日) 12:02:32
100%仕様通りのPythonコンパイラ作りで未踏ソフトウェア受かるかな?
半分できてるんだけど。

56 :デフォルトの名無しさん:2010/02/07(日) 12:11:31
半分できてる100%仕様どおりってなんだよ。
Pythonの仕様っていうのも??? そもそも、未踏じゃないし。
98%だけど、〜が新しいって方がいいだろ。100%にする作業は成果にもできる。

57 :デフォルトの名無しさん:2010/02/07(日) 12:26:22
>>56
でもPythonコンパイラなんて誰も作ってないじゃん。

58 :デフォルトの名無しさん:2010/02/07(日) 12:27:33
理論上俺のやり方だったらPythonコンパイラが作れる。
未実装な機能があるだけで。
これを完全に仕上げるには協力が必要だ。

59 :デフォルトの名無しさん:2010/02/07(日) 12:37:25
コンパイラなら、Jythonとか、IronPythonとか、100%っていうのは、CPythonと同じにするという意味か?

60 :デフォルトの名無しさん:2010/02/07(日) 12:52:10
CPython,IronPython,Jythonなど既存のものと比べて優れている点があるのかっていう

61 :デフォルトの名無しさん:2010/02/07(日) 12:55:06
高速化が目的ならUnladden Swallow, Psyco, pypy, Shed Skinあたりと競合するな

62 :デフォルトの名無しさん:2010/02/07(日) 13:04:41
動的な仕様なままネイティブコンパイラを実現したものはひとつもないぞ

63 :デフォルトの名無しさん:2010/02/07(日) 13:17:40
ジャストインタイムでのコンパイルや、Pythonインタープリタの内蔵なしにevalやexecが動くというのなら、大変興味深い。

64 :デフォルトの名無しさん:2010/02/07(日) 13:19:11
もちろんできるよ

65 :デフォルトの名無しさん:2010/02/07(日) 13:26:45
ここでウダウダいってないで公開するなり応募するなりしろよ

66 :デフォルトの名無しさん:2010/02/07(日) 13:41:02
もし本当ならいろいろ夢が広がるなあ

67 :デフォルトの名無しさん:2010/02/07(日) 14:10:32
ほかの言語にも、応用できそるのでインパクトあるな。

68 :デフォルトの名無しさん:2010/02/07(日) 14:27:14
これは期待

69 :デフォルトの名無しさん:2010/02/07(日) 14:35:16
あてにせず期待

70 :デフォルトの名無しさん:2010/02/07(日) 18:00:05
>>55-56
exerbですら未踏通ってるからなぁw

71 :デフォルトの名無しさん:2010/02/07(日) 18:04:47
動的コンパイラとか技術的にはすごいけど、事業化はむずかしいんじゃね。
未踏ソフトは事業化も考慮して選ばれるんだろ。

72 :デフォルトの名無しさん:2010/02/07(日) 18:12:13
もし本当だったらLL界に革命が起きるぞw

73 :デフォルトの名無しさん:2010/02/07(日) 18:18:30
小林さん、暇なんですか?

74 :デフォルトの名無しさん:2010/02/07(日) 20:44:44
1000円くらいなら買ってもいいよ>ネイティヴコンパイラ

75 :デフォルトの名無しさん:2010/02/07(日) 22:07:44
>>63
だな。そうでないなら別にイラネ

76 :デフォルトの名無しさん:2010/02/08(月) 00:59:12
ネイティブってライブラリも自分で
コンパイルするのかねぇ

俺はPyrexで十分、っつーか
手軽にコード自体を最速にするなら
これが一番だわ


77 :デフォルトの名無しさん:2010/02/08(月) 01:18:55
>>76
execできるくらいだし、動的リンクもできんじゃね?

78 :デフォルトの名無しさん:2010/02/08(月) 12:08:08
emacs23.2でセマンティックがとりこまれるそうだけど
pythonもセマンティックは解析してくれるんだろうか
今のemacsはタグジャンプ設定めいんどい


79 :デフォルトの名無しさん:2010/02/08(月) 12:09:53
stalinかMLtonでpython書けばいいじゃない

80 :デフォルトの名無しさん:2010/02/08(月) 12:16:36
64bit版で使えるライブラリってどれくらいですか?

81 :デフォルトの名無しさん:2010/02/08(月) 12:21:45
>>31
eclipseのいいところはemacsキーバインドに簡単に設定できることだね。

82 :デフォルトの名無しさん:2010/02/08(月) 16:56:34
>>81
さり気なくVim厨に喧嘩売ってんじゃねーぞ

83 :デフォルトの名無しさん:2010/02/08(月) 20:05:56
いや、気にしすぎでしょそれw

84 :デフォルトの名無しさん:2010/02/09(火) 10:20:42
>39 を実施しただけという気もするけど


85 :デフォルトの名無しさん:2010/02/09(火) 13:36:14
俺の面接ではvi使いは採用のときに減点してる。
>>39みたいな人が多い気がするから。

86 :デフォルトの名無しさん:2010/02/09(火) 19:58:26
なんの会社かは知らんが、vi使えないやつもついでに落としておけよ
サーバにアクセスしてemacsどこー?とかどうなのよ

87 :デフォルトの名無しさん:2010/02/09(火) 20:00:42
nano

88 :デフォルトの名無しさん:2010/02/09(火) 20:11:15
vim厨は協調性が無いんだよねぇ

89 :デフォルトの名無しさん:2010/02/09(火) 20:12:19
>>86
それはLinuxの習熟度の問題でしょ。
プログラミングとはあんまり関係ないし、
その程度のことなら1日で覚えてくれるでしょ。

90 :デフォルトの名無しさん:2010/02/09(火) 20:53:34
ご、ごめんなさい……。
レンタルサーバにemacs入れたのは俺です。
rootつきのサーバだったんで、つい出来心で……。

91 :デフォルトの名無しさん:2010/02/09(火) 22:31:26
>>86
サーバーにemacsない会社なんかこちらからお断りだ。
おれは組み込み屋だが、このまえやった200Mhz, ARMの
OpenEmbeddedで組んだシステムにもこっそりemacs
組み込んどいたよ。 

92 :デフォルトの名無しさん:2010/02/09(火) 22:59:14
emacs厨うぜ

93 :デフォルトの名無しさん:2010/02/10(水) 00:01:56
そんなあなたに ng

94 :デフォルトの名無しさん:2010/02/10(水) 00:48:48
vi厨よりvim厨の方が悪質だろ。

95 :デフォルトの名無しさん:2010/02/10(水) 01:14:24
viもvimも一緒じゃん
アリンコの背比べ

96 :デフォルトの名無しさん:2010/02/10(水) 01:16:23
ここでEmEditor厨の登場

97 :デフォルトの名無しさん:2010/02/10(水) 01:21:53
vim厨から見るとviは劣化コピーだけど
vi厨から見るとvimは迷惑な親戚

98 :デフォルトの名無しさん:2010/02/10(水) 01:34:43
スレチだから消えろカス共

99 :デフォルトの名無しさん:2010/02/10(水) 02:05:21
ちゃんとpythonのインデントをうまくしてくれたら何でもいい。

100 :デフォルトの名無しさん:2010/02/10(水) 02:07:30
Pythonのインデントブロックがなくなるのが一番みんなが幸せになれる未来

101 :デフォルトの名無しさん:2010/02/10(水) 02:10:09
>>100
def foo() {
  ...
}

def foo () do
  ...
end

さあ選べ

102 :デフォルトの名無しさん:2010/02/10(水) 02:24:01
MLスタイルでお願いします

103 :デフォルトの名無しさん:2010/02/10(水) 02:57:09
gotoさえあればブロック無しで書けるのになぁ

104 :デフォルトの名無しさん:2010/02/10(水) 03:10:51
悪魔の誘惑に近いような

105 :デフォルトの名無しさん:2010/02/10(水) 04:08:33
doなくてもendあればいいんじゃね?
ていうか、もうpassでいいじゃん。

Pythonはインデントが構文になってしまってる故、
自動で正しいインデントを決定できない場合があるのがめんどくさいのね。

106 :デフォルトの名無しさん:2010/02/10(水) 04:47:55
インデント厨はあっち逝け
http://pc12.2ch.net/test/read.cgi/tech/1169473442/

107 :つられたかな:2010/02/10(水) 04:54:50
>>105
python のインデントが面倒とか言ってるやつは
実際には python のプログラムをまともに
書いたことが無いとしか思えない

普通に使っててそんなケースに出くわすことはまずないよ

2ch のレスでスペースが見えなくなって困るくらいだけ
貼られたオリジナルのインデントは HTML ソース見れば復元可能

108 :デフォルトの名無しさん:2010/02/10(水) 10:19:09
> python のインデントが面倒とか言ってるやつは

そういうヤツはそもそも python の存在に気づいても
3分後には他所にいってるはずだから…

100% 釣りだろ

109 :デフォルトの名無しさん:2010/02/10(水) 10:22:48
Python だとみんな4スペでインデントするから、
色々なソースを弄るときに都度エディタの設定を弄る必要が
無くなった。
他の言語もインデントのスタイルを強制すれば良いのに。

110 :デフォルトの名無しさん:2010/02/10(水) 11:14:30
>>107
if cond:
expr1
expr2
expr3

文脈見りゃ分かることが多いけど、スペースつぶれたのをコピペしたときそのあたり自分で直さないといけないって話。
その点以外では特に嫌なことないから、Pythonも中括弧導入すべきなんていうつもりはない。

111 :デフォルトの名無しさん:2010/02/10(水) 11:24:45
YAMLがインデント構文じゃなくなったらおしまい
それと同じでPythonも

112 :デフォルトの名無しさん:2010/02/10(水) 11:48:59
>>107
コピペ失敗することあるしw

113 :デフォルトの名無しさん:2010/02/10(水) 11:50:54
>>108
俺はインデントブロック反対派だけど、Python使ってるよ。
理由はライブラリの豊富さと導入しやすさ。
インデント以外のブロック記法が導入されたらうれしい。

114 :デフォルトの名無しさん:2010/02/10(水) 12:35:45
>>113

>>3-4

115 :デフォルトの名無しさん:2010/02/10(水) 13:37:40
from __future__ import braces

116 :デフォルトの名無しさん:2010/02/10(水) 17:54:06
>>110 >>112
だから問題が起こらないとは言ってないだろ

>普通に使っててそんなケースに出くわすことはまずないよ

稀なんだよ稀
そんなのに目鯨たててどうすんだ

117 :デフォルトの名無しさん:2010/02/10(水) 17:59:46
見やすいのは

def foo(){
  ...
}

かなぁ。

118 :デフォルトの名無しさん:2010/02/10(水) 18:01:24
>>117

>>114-115

119 :デフォルトの名無しさん:2010/02/10(水) 18:04:08
関数定義 foo()
 ・・・
関数定義終わり

120 :デフォルトの名無しさん:2010/02/10(水) 18:06:48
オウ、ホットなでしこ

121 :デフォルトの名無しさん:2010/02/10(水) 18:11:55
なでしこの制御構造はインデントで表現する、とマジレス

122 :デフォルトの名無しさん:2010/02/10(水) 18:17:11
キーワードに日本語が使われてるだけでなでしこと脊髄反射した漏れが悪かった
マジレスさせてすまん

123 :デフォルトの名無しさん:2010/02/10(水) 18:18:55
漏れw

124 :デフォルトの名無しさん:2010/02/10(水) 19:09:58
脳みそ漏れてますね

125 :デフォルトの名無しさん:2010/02/10(水) 19:26:39
尿漏れとかしてそう

126 :デフォルトの名無しさん:2010/02/10(水) 20:35:16
pass

127 :デフォルトの名無しさん:2010/02/10(水) 20:36:39
今年になってPythonで書き始めたんだけど、俺も最初はは「は?インデント??」
って思ったけど、実際やったら何でもなかった。元々他の言語でもどうせ見やすさの
ためにインデントしてる訳だし。

128 :デフォルトの名無しさん:2010/02/10(水) 21:55:40
>>122
ぴゅう太だろjk

129 :デフォルトの名無しさん:2010/02/11(木) 01:00:00
Pythonプログラムのメモリリーク箇所の調査ってどうやるの?

130 :デフォルトの名無しさん:2010/02/11(木) 01:04:15
>>116
>>110みたいなケースはよくあるよ。

131 :デフォルトの名無しさん:2010/02/11(木) 01:04:31
>>129
printデバッグwww

132 :デフォルトの名無しさん:2010/02/11(木) 01:06:21
>>129
処理系のバグだったら知らないけど、それ以外でどうやったらメモリリーク起きる?

133 :デフォルトの名無しさん:2010/02/11(木) 01:08:40
いまどきIDEが整形してくれるので、Pythonのインデント依存の文法はあまりありがたみはない。

134 :デフォルトの名無しさん:2010/02/11(木) 01:12:23
いちいち{}とかendとか書かないで済むの楽だよなぁ
インデントはエディタがやってくれるし

135 :デフォルトの名無しさん:2010/02/11(木) 01:24:26
循環参照はメモリリーク臭が多少ある。


136 :デフォルトの名無しさん:2010/02/11(木) 01:27:32
PythonのGCって参照カウントだったのか
でもマニュアル見たらPerlよりマシっぽいな

137 :デフォルトの名無しさん:2010/02/11(木) 01:40:50
リソースリークしないようにとか考えて__del__()を書いたりすると藪蛇だったりする。
これは__del__()のところに注意書きしてあるけど。
ttp://www.python.jp/doc/nightly/ref/customization.html

あとCモジュールを書くとINCREF,DECREFで間違えるな。
どういう工夫をすればバグが減らせるのかよくわからん。

138 :デフォルトの名無しさん:2010/02/11(木) 10:29:43
>>130
コメント入れとけば?


139 :デフォルトの名無しさん:2010/02/11(木) 10:33:46
>>132
リークとは言えないだろうけど
メモリ食うオブジェクトとか握ったまま放さないとそのうち足りなくなる

wxPythonでポップアップメニュー多用するプログラム書いてて
その都度生成してたらガベコレされなくなってるらしくてメモリエラーになった
アプリ終了して起動しなおしたらもちろん正常に動く

多分自分の書き方が悪いんだろうと思うけど
メニューが画面上から消えていらなくなったタイミングで解放したいんだが
どこで明示的に解放すれば良いのか適切な方法がまだ見つかってないのでバグ放置

140 :デフォルトの名無しさん:2010/02/12(金) 00:12:40
Pythonでは参照カウントが0になった時点で
すべてのオブジェクトは解放されるから、
明示的に解放とかする必要はないのでは。

import gc
gc.set_debug(gc.DEBUG_LEAK)
gc.disable()
gc.collect()

これで循環参照してるオブジェクト表示して、
コード修正すればメモリが足りなくなるとかなくなると思う。

141 :デフォルトの名無しさん:2010/02/12(金) 00:15:44
PythonのGCって循環参照は回収してくれないんですか? それじゃあ、GCあんまり意味ないような気がするけど。

142 :デフォルトの名無しさん:2010/02/12(金) 00:21:25
循環参照してて__del__メソッド持つオブジェクトは解放されない。
__del__メソッド持ってなかったら、いつかは解放されるけど、
いつ解放されるかはわからない。

だったような気がする。

143 :デフォルトの名無しさん:2010/02/12(金) 00:40:18
>>140
ありがとう
試してみるす

144 :デフォルトの名無しさん:2010/02/12(金) 00:42:58
>>142
>いつかは解放されるけど、いつ解放されるかはわからない。

どうもこれかも知れないんですよね。


145 :デフォルトの名無しさん:2010/02/12(金) 00:52:35
weakrefのことも忘れないであげてください

146 :デフォルトの名無しさん:2010/02/12(金) 01:42:36
オブジェクトの生成回数 - オブジェクトの破棄回数が一定値を超えると、
1st GC が働いて、循環参照になっているゴミを破棄する。

1st GC で破棄されていなかったオブジェクトは次回の1st GCで
循環参照の検出をスキップされる。んで、1st GCが一定回数
実行された後に 2nd GC が働いて1st GCを生き残った循環参照の
うちゴミになった物が捨てられる。

さらに、2nd を生き残った循環参照オブジェクトは 3rd に回される。

147 :デフォルトの名無しさん:2010/02/12(金) 02:18:26
循環参照でゴミになってるっていうのは循環部分以外からの参照が無いってことかな

148 :デフォルトの名無しさん:2010/02/12(金) 02:22:50
>>147
yes

149 :デフォルトの名無しさん:2010/02/12(金) 08:07:54
     ____________
    ヾミ || || || || || || || ,l,,l,,l 川〃彡|
     V~~''-山┴''''""~   ヾニニ彡|       解放する・・・・・・!
     / 二ー―''二      ヾニニ┤       解放するが・・・
    <'-.,   ̄ ̄     _,,,..-‐、 〉ニニ|       処理系は その時と場所の
   /"''-ニ,‐l   l`__ニ-‐'''""` /ニ二|       指定まではしていない
   | ===、!  `=====、  l =lべ=|
.   | `ー゚‐'/   `ー‐゚―'   l.=lへ|~|       そのことを
    |`ー‐/    `ー――  H<,〉|=|       どうか諸君らも
    |  /    、          l|__ノー|       思い出していただきたい
.   | /`ー ~ ′   \   .|ヾ.ニ|ヽ
    |l 下王l王l王l王lヲ|   | ヾ_,| \     つまり・・・・
.     |    ≡         |   `l   \__   我々がその気になれば
    !、           _,,..-'′ /l     | ~'''  メモリーの解放は
‐''" ̄| `iー-..,,,_,,,,,....-‐'''"    /  |      |    10年後 20年後ということも
 -―|  |\          /    |      |   可能だろう・・・・・・・・・・ということ・・・・!
    |   |  \      /      |      |

150 :デフォルトの名無しさん:2010/02/12(金) 08:56:52
参照カウントとかガベコレの動作は実装依存

151 :デフォルトの名無しさん:2010/02/12(金) 09:15:12
>>150
うん、そうだね。
みんなはそんなことは十分承知の上で、CPythonの話をしているんだ。

152 :デフォルトの名無しさん:2010/02/12(金) 09:44:37
重い処理はCで書いて繋げろ
pythonをCで実装

もうpythonやめてCでいいじゃん

153 :デフォルトの名無しさん:2010/02/12(金) 09:56:35
アセンブリでいいじゃん

154 :デフォルトの名無しさん:2010/02/12(金) 09:56:58
>>152
 :ハ_ハ:ハ_ハ:.
:(;゚∀゚)゚∀゚;):  シィィィィ ──!!
:(´`つ⊂´):..
と_ ))(_ つ:


155 :デフォルトの名無しさん:2010/02/12(金) 10:05:12
ctypes で書いてたら表面だけ python
中身ほとんど C っていうのもありえる

156 :デフォルトの名無しさん:2010/02/12(金) 10:26:53
>>139
wxは独自のメモリ管理してるから
いちいちDestroy呼ばんとえらいことに

>>155
でもトライアンドエラーが簡単だから
ついpython使っちまう

そーいやPILってCのI/F持ってんだな
本家の解説のソースがImagingObjectをImagingって
書いてあってけっこーはまった

157 :デフォルトの名無しさん:2010/02/12(金) 11:14:54
C上主義者が湧いてきたな

158 :デフォルトの名無しさん:2010/02/12(金) 15:05:04
>>156
サンクス

>>139
>wxは独自のメモリ管理してるから
>いちいちDestroy呼ばんとえらいことに

まじか
PyQtに乗り換えるか

159 :デフォルトの名無しさん:2010/02/13(土) 00:49:02
PyQtといえば、Nokiaだかその関連の研究所だかが、PyQtと互換なライブラリ作ってる。
http://www.pyside.org/

どうやら、PyQt作ってるriverbankに「オプソ版をGPLじゃなくLGPLにしてくれ」と頼み込んだが交渉決裂して、作ることにしたらしい。
将来的にどっちが強くなるんだろ。

160 :デフォルトの名無しさん:2010/02/13(土) 00:52:09
GUIライブラリのラッパーは単純なんだけどAPI等の数が多すぎて日曜プログラマにはきついね。

161 :デフォルトの名無しさん:2010/02/13(土) 01:29:54
x API の数が多すぎて

o Framework の数が多すぎて


162 :デフォルトの名無しさん:2010/02/13(土) 04:03:55
Pythonをコード読むためにざっと文法なぞってて疑問に思ったんだけど、
どうしてswitchやインクリメント演算子が存在しないの?
if-elseが連なってるのは効率がすごく悪そうなんだけど

あと、str.lenじゃなくてlen(str)なのが地味に気になった

163 :デフォルトの名無しさん:2010/02/13(土) 04:46:00
>>162
気持ちはわかります 漏れの Python 初体験時の感想を書いときますね

●インデント
最初のうち数回は for hogehoge: のあとインデント忘れたりするけれど
慣れるとほとんど気にならないレベル 空気のような存在

●式と文が厳格に分かれている
これは慣れるまで時間掛かった 今でもちょっと面倒と思うケースはある
if (hoge = fuga()) == piyo: とか
if (m = re.compile(r'h(.*)e', re.I).search('hageHOGEfuga')) is not None:
みたいな書き方が出来ないのでもどかしい
(Python 的には「うっかりバグ」を防ぐためなんだと思う)

●switch
if ... elif ... elif ... else ...
も悪くない(っていうかこっちの方が汎用的で C/C++ 的な switch より便利だぜ)
Ruby は case で出来るけどね

●インクリメント演算子
a += 1
で良いと思う(Ruby もそうだし)
*dst++ = *src++;
不満はみたいな書き方が出来ないかなーっていうくらい
それほど不満はない

●str.lenじゃなくてlen(str)
これも慣れるまで何で str.len() がないんじゃーと思ってた w
たぶん Ruby 中毒になっていたんだと思う
split() とか match() とか search() とかでも戸惑うケースがあるね
あとは join() かな
慣れの問題

164 :デフォルトの名無しさん:2010/02/13(土) 04:47:53
>if-elseが連なってるのは効率がすごく悪そうなんだけど

効率の話だよね


165 :デフォルトの名無しさん:2010/02/13(土) 07:25:33
>>163
読みながらいろいろと弄くってきた。
現時点ではPythonの方向性というか、ターゲット層がよく分からない。

とりあえず、
if 0 < a < 128 みたいな条件式が通ったんだけど、一種の三項演算子扱いなのか?
手元の資料だとnotは論理否定の役割しかないそうだけど、if a not in b は別なのか?
多次元配列やハッシュの代入に複数行使った場合、どこまでインデントが崩壊していいのか?
あたりが未解決。

最近の主要言語がC#, Rubyなので、lenやjoinは非常にむず痒い。
面白そうな言語ではあるんだけれども、もう一押し何かが欲しいところかな。
いろいろ動作確認したりでまだ初学用の資料すら読み終えてないので、なんとも言えないけどね。

switchがない理由について検索したけど、
「switchに頼るのはOOが理解できていない証拠!」みたいなサイトが一杯出てきてちょっと引いた。
まあ、仮にswitchが導入されていたとしても、インデントの仕方で誰かが文句言いそうだけどw

166 :デフォルトの名無しさん:2010/02/13(土) 07:28:56
>>162
len(obj)

obj.__len__()が呼ばれる

167 :デフォルトの名無しさん:2010/02/13(土) 07:53:13
なんか評論家みたいな上から目線が気にいらないのでつっかかってみます。

なんでそんな細かな言語仕様が気になるの? 言語が違うんだから他の
言語と記述方法が違うのはあたりまえだと思うんだけど。

switchがあったら便利だというのは同意だけど、インクリメントなんか
スクリプト言語には本来要らないよ。i = i + 1とi++では機械語レベル
ではたしかに命令数が違う。コンパイラにとってはそれ重要だけど、
スクリプト言語にとってそれがなんだというのか。

結局君は書き慣れた記述法じゃないことが不満なんじゃないの?
たとえば「インクリメントが実装されました。Delphi式のinc(i)です」
ってことになったらそれはそれで文句あるんでしょ? それはインクリ
メントが欲しいんじゃなくて慣れた記述法にしてほしいってだけのことだよ。

言語が違えば記述方法は違う。それは違う言語を学ぶ際に最低限わきまえる
べきことだよ。

それからターゲットはRubyとほぼ一緒だよ。そんなことRuby使ってる
んならわかるでしょ。まつもとさんだって「ああPythonあるからRuby
いらないかもw」とか言ってるしね。

っていうか「もう一押しほしい」って誰に言ってるの? 君のために誰が
一押ししてくれることを想定しているのか教えてほしい。

168 :デフォルトの名無しさん:2010/02/13(土) 07:58:18
>>165はGoスレあたりのコピペ改変だろうきっと

169 :デフォルトの名無しさん:2010/02/13(土) 08:17:13
いいよ、もうみんなS式で書くことにしようぜ。

170 :デフォルトの名無しさん:2010/02/13(土) 08:23:37
インクリメントはインプレースな演算なのに対して
数値オブジェクトはイミュータブルだからインクリメントは実装できない
という認識は正しい?

171 :デフォルトの名無しさん:2010/02/13(土) 08:31:31
>>166
なるほど。そういう実装をしているんですね。
さんくすです。

>>167
ちょっと言葉悪かったですね。失礼。

慣れた記述法が欲しいってのは大体正解です。三項演算子とか大好きですし。
これが全然違う文法ならともかく、似通っているのに「微妙に違う」から違和感を覚え、
その違和感による不満を消すために理由や事情があるのなら知りたいと思うんです。

Pythonは確かに支持されている言語なので、支持されるに足る理由があるとは思っているのですが、
どうにもそれが実感できないので、自力にせよ他力にせよ、Pythonの魅力をはっきりさせたいというのが
もう一息っていう吐露ですね。馬鹿にしているようにも読めるレスだったので、その点は謝罪致します。

172 :デフォルトの名無しさん:2010/02/13(土) 08:57:46
違和感があるのはあんたがまだpythonに慣れてないだけ
switchとかインクリメントとか野暮な事言うのは
無能なRuby厨かC初心者くらいだろ。

173 :デフォルトの名無しさん:2010/02/13(土) 09:34:32
switchもインクリメントも実質的に必要ないし、分かりにくい部分すらある
len()は.__len__じゃなくて.lenとか.lengthとか.Lengthとか.countとか.itemcountとか嫌でしょ一種のインターフェースです
みたいな話

しかし最近の言語に代入を評価できるのってあるのか?

174 :デフォルトの名無しさん:2010/02/13(土) 10:35:31
>>171
Pythonが支持されている理由のひとつ

http://pc12.2ch.net/test/read.cgi/tech/1264635554/448-455

こういうことにならない

175 :デフォルトの名無しさん:2010/02/13(土) 10:56:39
rubyは実装自体も馬鹿なのか

176 :デフォルトの名無しさん:2010/02/13(土) 11:15:29
>>171
>似通っているのに「微妙に違う」

似てねーよ
それはお前の都合だろ

177 :デフォルトの名無しさん:2010/02/13(土) 11:16:44
>Pythonは確かに支持されている言語なので、支持されるに足る理由があるとは思っているのですが、どうにもそれが実感できないので

使い込むとわかる

つまり使い込まないとわからない w

178 :デフォルトの名無しさん:2010/02/13(土) 11:19:56
最初のうちは unicode 絡んでると良くわからなかった
encode() dekode() のネーミング逆じゃね?とか勝手に思ってた
u"ほげ" の内部コード?が必ず UTF-8 で保持されてると思ってた
そんなこんなで exception 出まくりでなんじゃこれ状態だったが
色んな誤解が解消出来た時点でスムーズに書けるようになった
>>165 みたいな初心者には w 敷居は高いかもしれない


179 :デフォルトの名無しさん:2010/02/13(土) 11:20:57
>>162
●switch文がない
switchで一回インデント、caseで一回インデントで、
二重のインデントになるし、そうなればif〜elifの連鎖より読みにくくなること必至だから。
何度か議論されてきたけどこの二重インデント問題を解決しないことには……
ttp://www.python.org/dev/peps/pep-3103/

●インクリメント
前置と後置で挙動が変わるのを覚えるのが無駄だし、
だいたい、たった一行で代入、評価、破壊的操作の三種類の動作をするわけで、あんまり直感的じゃない。
たしか演算子オーバーロードでもややこしい実装をしないといけないことがあるし、
実用面でもC的なfor文がないからそれほど問題ないし、あったとしてもあんまりメリットはない。

●lenが関数
基本的にPythonは関数がファーストクラスだから、メソッドより関数の方が取り扱いが楽でいいんだよな。
aをリストとしてsorted(a, key=len)ができるんだぜ。
まぁメソッドでもsorted(a,key=type(A).length)でいける訳だからメソッドだからどうというわけでもないが

180 :デフォルトの名無しさん:2010/02/13(土) 11:28:11
>switchで一回インデント、caseで一回インデントで、二重のインデントになるし
Ruby の case 方式にすれば?

181 :デフォルトの名無しさん:2010/02/13(土) 11:38:18
他の言語の記法や便利な道具が増える可能性は今後もあるだろう。
昔は += もなかった。sorted もなかった。

tmpKeyList = myDictionary.kyes()
tmpKeyList.sort()
for tmpKey in tmpKeyList:
 ・・・

みたいなこといちいち書いてたよ。


182 :デフォルトの名無しさん:2010/02/13(土) 11:38:42
>>165
>Pythonの方向性
読みやすく、書きやすい
ライブラリが一通り揃ってるし、
リンクがどうのビルドがどうのとか面倒なことはないし、
素人がプログラムを勉強するのにもおすすめだし、
綺麗なコードが書きたい玄人にもおすすめ

>0 < a < 128
これは「(0 < a) and (a < 128)」と評価される。
不等号や等号はandでつながれて評価されるんだよ。
だから0 < a < b < c == d < e < 128なんかも
「(0 < a) and (a < b) and (b < c) and (c == d) and (d < e) and (e < 128)」になる。

> not in
not inは演算子扱い。

>もう一押し
関数がファーストクラスだからProcとかデリゲートとかめんどいことしなくても
関数に関数渡して楽しいことができるよ!!
ジェネレータも使えるからリストの処理も簡単だし、
キーワード引数もかなり強力で、
オプションが大量にあってげんなりするGUI関数を操作するのも楽々だし、
OOの世界で有名なデザインパターンのBuilderパターンとかだって
キーワード引数があるだけでかなり存在意義を失う。

>switchに頼るのはOOが理解できていない証拠!
あれだ、なんでもOOに頼るのはOOを理解できてない証拠なので、
OOを勉強してそういうことを言ってる輩を見下せるようになるといい。

OO的には多態性を勉強するといいかもしれない

183 :デフォルトの名無しさん:2010/02/13(土) 11:40:53
>>171
三項演算子
「(A)?B:C」は
「B if A else C」でおk

184 :デフォルトの名無しさん:2010/02/13(土) 12:29:11
>>177
なんとなく分かる程度じゃ便利さが見えてこないって感じね。
痒いところに手が届くような感じだとしたら、ちょっと期待したい。

>>178
あー、そこらへんは確かに全然理解できてないかも。

>>179
一応、インクリメントに関しては強く主張する気はないです。三項演算子と一緒でないのが寂しいだけ。
メリットとかじゃなくて気持ちの問題なので、それを押しつける気はないです。

関数に関しては、若干C#,Java,Rubyの影響を受けすぎたかな。
慣れないうちは絶対str.lenとか書きまくっちゃうだろうけれども、違いを意識するように努力してみます。

>>185
玄人向けみたいな先入観が強かったから違和感があったのかな。
等号・不等号は糖衣構文みたいなものだと思っていいのかしら?

申し訳ないけどデリゲートは大好きなんだけどw、
他は確かに慣れれば面白そうかもしれない。素敵な情報をありがとう。

switchに関して調べて出てきたページが、なんというか「Pythonの素晴らしさが分からない奴は馬鹿w」みたいなサイトだったんで、
一時的に嫌悪感が高まって、ついついきつめのこと書いてしまった。本当申し訳ない。

>>183
ありがとう。
でも使いたいのは a = b ? c : d みたいな状況だから、素直に分岐した方がいいかもね。
嫌われがちな書き方だけれども、個人的にはすごく好きなんだ。あくまでも可読性に影響のない範囲でだけど。

185 :デフォルトの名無しさん:2010/02/13(土) 13:21:21
静的型付けの C# なら、 ICollection.Count で統一できるんだよね。
Javaだと配列がインタフェースに従ってないから、 Collection.size() と
配列の .length が統一できてなくてキモイ。

Pythonのようなダックタイピング言語でも、一般的なメソッドを
広い範囲で統一するために、ICollectionみたいなインタフェースが
必要。で、Pythonで一般的なインタフェースは特殊メソッドで実現される。
コンテナ型の場合は、
__len__() で len(x)、 __iter__ で for y in x: や iter(x)、 __contains__ で
y in x と y not in x が使えるようになる。

Rubyはここら辺どうやって統一してるの?みんな一般的なメソッドの名前を
予約語みたいに覚えて間違わないようにしてるの?それだと、予約語と違って
間違えて使ってしまってもエラーにならないから混乱しない?

186 :デフォルトの名無しさん:2010/02/13(土) 14:06:52
184じゃないけど、Rubyならモジュールをmix-inする
不注意でモジュールから引き継いだメソッドを
オーバーロードしてしまうかもしれないが
それはオブジェクト指向である以上、不可避なのでどうしようもない

Pythonの特殊メソッドでtraitsを表す手法は
クラスの設計者が自覚的に実装することで
意図が明確に反映できる反面、ちょっと面倒なのも事実

そこら辺のRubyとの違いは思想が現れてて面白いね

話がずいぶん戻るけど、Pythonの行継続は
括弧かトリプルクォートで囲まれるか
バックスラッシュで明示的に継続を表すかしかないので
ルール自体ははっきりしているよ

187 :デフォルトの名無しさん:2010/02/13(土) 14:09:43
>>184
a = c if b else d でおk

188 :デフォルトの名無しさん:2010/02/13(土) 14:21:04
三項演算子一応使えるけど書いてみるとコレジャナイって感じがして2〜3行に書き直す俺ガイル

189 :デフォルトの名無しさん:2010/02/13(土) 14:45:24
三項演算子入れ子にするとき()使ってる?

a = b ? c ? d : e : f
a = d if c else e if b else f
a = (d if c else e) if b else f

a = b ? c : d ? e : f
a = c if b else e if d else f
a = c if b else (e if d else f)


190 :デフォルトの名無しさん:2010/02/13(土) 14:49:53
Pythonは他の言語の類似の機能を
初学者にわかりやすいように単純なルールで実装しているので
逆に他の言語をかじった人が使い始めると
戸惑うところがあるのは否めない

スコープに関するクロージャの話とか"".joinとかlen()とか
Python使っている人には「またか・・・」とげんなりしてしまう無限ループ状態

FAQが和訳されれば改善されるのかね?

191 :デフォルトの名無しさん:2010/02/13(土) 15:04:05
むしろ他の言語をメインに使ってたことがあるからこそ
単純に書けることに感動する奴(俺)もいるっちゃいるんだけどねぇ

192 :デフォルトの名無しさん:2010/02/13(土) 15:16:15
for の else なんか目から鱗だよなぁ

193 :デフォルトの名無しさん:2010/02/13(土) 15:16:53
それもあるね
俺はリスト内包表記をPythonで初めて知って
かなり驚いた

それをきっかけにSchemeやHaskellを眺めてみて
世界が広がった気がする

シンプルに書けるって点では、最近はScalaやClojureに注目

194 :デフォルトの名無しさん:2010/02/13(土) 15:19:19
{ x | x は偶数} みたいなのから来てるんだっけ?
数学に疎いからHaskell本読むまで気づかなかった

195 :デフォルトの名無しさん:2010/02/13(土) 15:24:02
Erlang も忘れてやらないでください

196 :デフォルトの名無しさん:2010/02/13(土) 15:25:39
そうそう
集合の中の要素の条件付けそのまま

中高生が初めて触るプログラム言語として
数学との違和感のなさから、実はHaskellは向いているのではないか
・・・と妄想してしまうw

プログラミングHaskellの訳者の人も、そんなこと書いてたし

197 :デフォルトの名無しさん:2010/02/13(土) 15:36:23
自分用に三項演算関数でも書けばいいじゃない

198 :デフォルトの名無しさん:2010/02/13(土) 15:39:41
>>186
Pythonでもmix-inを使って、一部の特殊メソッドを用意するだけで
それ以外を自動で用意する事はできるよ。
昔はUserListとかUserDict, 今なら collectionsモジュール内のABC。

だからPythonとRubyの違いは
1. 特別な関数に特別な名前を付けるか、普通のメソッド名を使うか
2. 他のメソッド名と被らない演算子や関数を使うか、普通のメソッド名を使うか
だよね。
Pythonの方が明示的だけど、Pythonの方が面倒と言うことはない。

199 :デフォルトの名無しさん:2010/02/13(土) 15:53:12
ウソついた。UserDictやUserListはmix-inじゃないや。
collectionsモジュールが便利なのは本当。

200 :デフォルトの名無しさん:2010/02/13(土) 16:03:45
なんだびっくりしたw

201 :デフォルトの名無しさん:2010/02/13(土) 16:06:46
>>192
for-elseはたまにしか使わないけど、凄く便利だよね。
try-elseもそうなんだろうけど、使ったこと無い。

202 :デフォルトの名無しさん:2010/02/13(土) 16:23:36
for-elseってtry-finallyみたいなもの?

203 :デフォルトの名無しさん:2010/02/13(土) 16:26:02
ちょい違う。
else節に行くのは最後までbreakしなかったとき

204 :デフォルトの名無しさん:2010/02/13(土) 19:50:01
>>184
a=cond?expr1:expr2;のような使い方でもpython風三項演算子使っちゃうばかりか、
逆に違和感がないと思う俺はpython病気かなぁ?

val = a if a>0 else 0 だと、通常処理を書いてから困ったチャンの処理を書くって流れが例外処理みたいでいい。
max = a if a>b else bだとそういった感じはないけど、英文みたいな感じはしなくもないし、まぁいいかなぁ、と。

けど、ネストは勘弁してほしい。
max = (a if a>c else c) if a>b else (b if b>c else c)
とか、ややこしすぎる。
max = a>b ? (a>c ? a : c) : (b>c ? b : c)
の方がずっと読みやすい。

205 :デフォルトの名無しさん:2010/02/13(土) 19:58:09
>>202
flg=0
for x in リストとか:
 if ほげほげ:
  

206 :205:2010/02/13(土) 20:01:29
>>202
ごめ、途中で書いちゃった

flg=false
for x in リストとか:
 if ほげほげ:
  flg=true
  break
if not flg:
 むにゃむにゃ



for x in リストとか:
 if ほげほげ:
  break
else:
 むにゃむにゃ

で済ませられる。

例えば、全部試してみたけどダメだったよー、みたいな処理いれる。

207 :デフォルトの名無しさん:2010/02/13(土) 20:10:47
便利な書き方だけど、直観的な文法ではないなぁ>for-else

208 :デフォルトの名無しさん:2010/02/13(土) 20:11:08
簡単な素数計算

for i in range(100):
    for j in range(2,i):
        if i % j == 0:
            break
    else:
        print i

209 :デフォルトの名無しさん:2010/02/13(土) 20:14:30
>>186
括弧が明示されている限りはインデントを気にしなくていい、と解釈していいのかな?
インデントにちょっとびびりすぎてたかもしれない。さんくす。

>>187
動いた!ありがとう!
三項演算子は消えゆく運命かと思って黄昏れてたので、ちょっと本気で嬉しかった。

>>190
FAQだったのか……すみません。
正直「Pythonは若干ハイレベル」という思い込みと「インデントさえできれば大丈夫」という偏見があったので、
実際に触れてみて、想像と現実とのギャップに戸惑った部分が多いと思う。勝手な思い込みで文句たれて本当申し訳ない。
正直ここでいろいろ言ってもらって、だいぶギャップが埋められたみたいでありがたく思ってる。

>>192
あれは素直に驚きました。

210 :デフォルトの名無しさん:2010/02/13(土) 20:26:24
Pythonって、他の言語のいいところを参考にしながらもそれをそのまま取り込まず、
常識にとらわれずに、一番合理的な方法を考えるからな。

211 :デフォルトの名無しさん:2010/02/13(土) 20:30:44
それは無い

212 :デフォルトの名無しさん:2010/02/13(土) 20:37:15
>>208だと0と1が入るので一行目はfor i in range(2,100):だな

213 :デフォルトの名無しさん:2010/02/13(土) 20:37:22
つい__dict__をいじっちまう

214 :デフォルトの名無しさん:2010/02/13(土) 20:50:27
>>209
210みたいなコメントを見ると引く気持ちもわかるが
Pythonの実装は、基本、実用性重視だし
単なる実装の都合上の制限だってある

とりあえず本家サイトのFAQを見るといいよ
http://www.python.org/doc/faq/

General Programming FAQ と Programming FAQ の
目次を眺めると『みんな同じ疑問を持つんだな』と癒されるはず

>>198-199
おぉ、collectionsってdefaultdictだけだと思ってた
この抽象基底クラスのテンプレートはいいね!!
俺のメイン環境は2.5なので使えないけど・・・

便利なものはどんどん真似しあって欲しいね

215 :デフォルトの名無しさん:2010/02/13(土) 21:57:59
>>207
直感的だよ

そうじゃないと思うのは今まで for - else の無い言語で頭が毒されて来たからだよ

216 :デフォルトの名無しさん:2010/02/13(土) 22:07:42
>>215
英語的には直感的じゃないような気がする。作者もネイティブじゃないが

217 :デフォルトの名無しさん:2010/02/13(土) 22:27:49
値がを返す構文は基本的に後置修飾だから
一貫性はあるんだけどね

218 :デフォルトの名無しさん:2010/02/13(土) 22:31:02
>>215
直感的にはbreakしたときに実行される気がする。
何時だったか同じ話題が出たときはそんな意見が多かった印象

219 :デフォルトの名無しさん:2010/02/13(土) 23:15:00
>>218
一時期日本語ドキュメントもbreakしたときに実行されるって書いてあったw
それはさておき、実際問題としてbreakしなかったときに実行する方が需要あるし、
「最後まで止まらなかった場合に実行する」という意味で try-else と整合性あるし、
やっぱり else は今の仕様が合理的だと思うよ。

220 :デフォルトの名無しさん:2010/02/13(土) 23:21:37
というかbreakしたときに実行ってあんまり意味ないよねw
breakが1箇所ならその直前に書いとけばいい話だし、複数箇所でbreakすることも少ないし。

221 :デフォルトの名無しさん:2010/02/14(日) 02:25:56
>>218
もしその意味なら finaly かな
else だったら誤解は無いと思う


222 :デフォルトの名無しさん:2010/02/14(日) 08:25:44
>>221
finaly なら break してもしなくても return しなくても実行される気がする。

223 :デフォルトの名無しさん:2010/02/14(日) 11:50:41
いろいろと細かい資料とか読んで>>210の言ってることにちょっと納得。
個人的には、クラスの定義方法を見て、今までの細かいとことか結構どうでもよくなった。
これは……慣れるのに相当時間かかりそうな気がする。
他のOO言語から入った人は、特に違和感とかなかった? 自分毒されすぎかな?

224 :デフォルトの名無しさん:2010/02/14(日) 12:00:45
>>223
むしろ、違いを見つけてはなぜそうなっているのかを知るたびに
「なるほど!」の連続で楽しかった。

225 :デフォルトの名無しさん:2010/02/14(日) 16:19:59
>>222
try:
 print 'a'
 raise 'b'
 print 'c'
except:
 print 'd'
else:
 print 'e'
finally:
 print 'f'


for 中で break することを raise したことに置き換えるなら (>>218 の言う直観ってそういう意味に取れたから)
except と finally へ行ってくれれば良い訳で
else はあくまで最後まで except へ行かずに済んだ場合の処理ということで直観に従ってると感じる

226 :デフォルトの名無しさん:2010/02/14(日) 16:43:13
>>223
元々はアセンブラとか C をやってたけど
( FILE* みたいな構造体をクラス/インスタンス的に使う設計や実装も当時やってた )
C++ やり始めるときに先輩から薦められて「Eiffel オブジェクト指向入門」を読んで
Eiffel を通してオブジェクト指向の基本的な考え方をメイヤーさんから習った
(これはかなり良い経験だったと今でも思っています)

その後 C++ を使ってるうちに何かが変だと感じつつ
(その頃は C++ が糞だと断定出来る自信がなかった)
Objective-C (Mac じゃなくて StepStone の方) をやって本当の快適さを覚え
その流れで Smalltalk に手を出したものの環境依存が大き過ぎて
出家信者になるのが怖くてどっぷり漬かれずにいたところ
当時流行り出した Perl (のオブジェクト指向部分の実装) は糞だと思って無視
PHP (のオブジェクト指向部分) はマシかなと感じたが若干テストしただけで手を出さず
Zope-Python の存在を知ったが何それ美味しいの? Zope に環境依存するなんてやだ
と食わず嫌いで Python から遠ざかりつつ勢いで Ruby 教に入信してしまい
Ruby を有難く使っていた数年後に 2ch で Python 厨と Ruby 厨の論戦を目にして
バランスの良い Python に辿り着いたときには Ruby 要らなくなってた

227 :デフォルトの名無しさん:2010/02/14(日) 18:03:47
三行で要約↓

228 :デフォルトの名無しさん:2010/02/14(日) 18:15:42
ワナビーがルビ厨になってPython信者に宗旨替えした

229 :デフォルトの名無しさん:2010/02/14(日) 23:26:21
>>228
それ一行

230 :デフォルトの名無しさん:2010/02/14(日) 23:32:59
>>229
それ四文字

231 :デフォルトの名無しさん:2010/02/14(日) 23:49:13
list.sort(reverse=True)
これと

list.sort()
list.reverse()

って実際の動作ではやっぱ前者の方が軽い?

232 :デフォルトの名無しさん:2010/02/14(日) 23:52:15
試してみればいいじゃな

233 :デフォルトの名無しさん:2010/02/14(日) 23:53:01


234 :デフォルトの名無しさん:2010/02/15(月) 00:09:40
timeit

235 :デフォルトの名無しさん:2010/02/15(月) 01:05:55
いっしょだった

236 :デフォルトの名無しさん:2010/02/15(月) 02:12:48
比較関数でリバースさせるようにしたらどうなるかな

237 :デフォルトの名無しさん:2010/02/15(月) 02:29:26
>>236
2.5倍くらいかかった

次の案↓

238 :デフォルトの名無しさん:2010/02/15(月) 02:32:01
[::-1]

239 :デフォルトの名無しさん:2010/02/15(月) 02:33:21
>>238
はやすぎわらた

240 :デフォルトの名無しさん:2010/02/15(月) 02:55:06
いっしょってことは、内部的にはreverseの値によってCでの比較関数を変えてるんじゃなく、正順にソートして逆転してるってこと?
リストである必要がないなら、reversed(list.sort())でイテレータにするのもアリかなぁ。

241 :デフォルトの名無しさん:2010/02/15(月) 07:11:27
list.sort()
list.reverse()
これだと実際に取り出すまで reverse 始まらないのかもね

242 :デフォルトの名無しさん:2010/02/15(月) 09:27:08
ソースを流し読みした感じだと
list.sort(reverse=True)とlist.reverse()は内部的に同じCの関数を呼び出してる
Python使いが意識するべき速度差じゃないな

243 :デフォルトの名無しさん:2010/02/15(月) 20:10:50
つまり入り口が違うだけか

244 :デフォルトの名無しさん:2010/02/15(月) 20:24:52
質問書いた者だけどありがとう
バイトコンパイルされたファイルはreverse()の方が小さかったから何が違うのかと思ったけど同じなのね

245 :デフォルトの名無しさん:2010/02/15(月) 22:18:46
そりゃまあ引数付きのメソッド呼び出しより、引数なしのメソッド呼び出しの方がバイトコードは小さくなるわなぁ。

246 :デフォルトの名無しさん:2010/02/16(火) 03:34:52
>>242
それでも list.sort() と list.reverse() 二回呼んでるのは無駄だよね
律速されてるのは C の関数の方だからたまたま影響出ないだけで

247 :デフォルトの名無しさん:2010/02/16(火) 08:39:02
どういうアルゴリズムでなのかはよく追ってないが
list.sortでreverse=Trueを渡してやると反転処理は2回行われている
インタプリタがもう1行余分に処理するのに必要な計算量は知らないけど
それらのバランスも含めてPython使いが気にするような速度差ではないと言った

248 :デフォルトの名無しさん:2010/02/16(火) 08:43:57
.sortのreverseフラグはソートメソッドで2行使わないためだろ
ソースでもreverse=Trueって書いてあった方がわかりやすい。

249 :デフォルトの名無しさん:2010/02/16(火) 08:53:02
木を見て森を見ず

250 :デフォルトの名無しさん:2010/02/16(火) 09:20:57
乳を見て顔を見ず

251 :デフォルトの名無しさん:2010/02/16(火) 09:24:13
あなる舐めてかなる舐めず

252 :デフォルトの名無しさん:2010/02/16(火) 20:51:34
sorted とか reversed とかだと違うんだろうか

253 :デフォルトの名無しさん:2010/02/16(火) 21:05:58
>>252
a = sorted(a) すると、 a を変更せずに新しくソート済みリストを作った後に
a に代入するから、 a.sort() よりも遅いしメモリを食う。

254 :デフォルトの名無しさん:2010/02/16(火) 21:08:13
組み込み関数ってCで書かれてないの?

255 :デフォルトの名無しさん:2010/02/16(火) 21:18:23
bltinmodule.cで書かれてる

256 :デフォルトの名無しさん:2010/02/17(水) 16:36:10
質問です
>文字コードの指定はプログラムの1行目又は2行目に記述された場合にだけ有効です。
と、ありました

・pythonにおいて#はプログラムに影響しないコメントを意味する
・ただし最初の二行の#はプログラムに影響する
・最初の二行において#付きで宣言することはpythonのバージョンと文字コードである
と言う認識でいいでしょうか? 他に何か宣言することはあるのでしょうか?
最初の二行に関して言明している記事などあれば誘導お願いします

257 :デフォルトの名無しさん:2010/02/17(水) 16:46:14
http://www.python.jp/doc/release/ref/encodings.html

258 :デフォルトの名無しさん:2010/02/17(水) 16:51:39
>>256
これじゃダメ?
ttp://www.python.jp/doc/release/ref/encodings.html

>・最初の二行において#付きで宣言することはpythonのバージョンと文字コードである
これは全く関係ない。バージョンの宣言なんてできない。

Unix系のOSはスクリプトの一行目に、そのスクリプトを実行するプログラムのパスを
書くという仕様になっている。だから、この部分はPythonの仕様ではなく、OSの仕様。
Pythonから見れば、ただのコメントでしかない。

259 :デフォルトの名無しさん:2010/02/17(水) 17:00:40
>>257-258
超速回答ありがとうございます
OSの仕様でしたか。納得しました
あとバージョンは自分の勘違いだったようで
いろいろどもです

260 :デフォルトの名無しさん:2010/02/18(木) 00:21:32
どっちも宣言じゃねーよ

261 :デフォルトの名無しさん:2010/02/18(木) 00:41:18
エンコード宣言ってかいてあるけど

262 :デフォルトの名無しさん:2010/02/18(木) 01:20:56
おまいらもちつけ

#!/usr/bin/env python
は一行目じゃないぞ

# -*- coding: utf-8 -*-
こっちが Python から見たときの一行目だ

263 :デフォルトの名無しさん:2010/02/18(木) 01:24:18
emacsじゃないので #coding: utf-8
で済ませるな。これでも動くし。

264 :デフォルトの名無しさん:2010/02/18(木) 01:31:34
>>262
#!/usr/bin/env python
# hoge
# coding: utf-8

print "あいう"


UTF-8で保存したが「2行目」にある文字コード宣言は無視されてるようだw

265 :デフォルトの名無しさん:2010/02/18(木) 19:39:21
import sys
print sys._getframe().f_lineno

266 :デフォルトの名無しさん:2010/02/18(木) 20:21:36
というかutf_8じゃないにょ?

267 :デフォルトの名無しさん:2010/02/18(木) 22:31:13
#!/usr/bin/env python
# vim: set fileencoding=utf-8 :

import os

print u'こんにちは' + os.environ['USERNAME'] + u'さん'

vimの場合。短縮形のfencじゃ駄目みたい。'coding'って文字を見てるっぽい。

268 :デフォルトの名無しさん:2010/02/18(木) 22:51:46
正解
http://www.python.org/dev/peps/pep-0263/

269 :デフォルトの名無しさん:2010/02/21(日) 14:26:25
オブジェクトのクラスを得るにはどうすれば良いですか?例えば
class MyClass: pass
obj = MyClass()
とした時に、MyClassを得るにはどうすれば良いでしょうか

270 :デフォルトの名無しさん:2010/02/21(日) 14:28:23
obj.__class__

271 :デフォルトの名無しさん:2010/02/21(日) 14:33:16
それって特殊な属性では?
アンダーバー付きの属性を直接参照するのってどうなのでしょうか

272 :デフォルトの名無しさん:2010/02/21(日) 14:35:23
アンダーバー付きの属性にアクセスしないとクラスの生成も出来ないけど

273 :デフォルトの名無しさん:2010/02/21(日) 14:37:47
クラスの生成…?
すみません、よく分からないのですが

274 :デフォルトの名無しさん:2010/02/21(日) 14:40:24
んじゃ
class MyClass(object): pass
obj = MyClass()
type(obj)

275 :デフォルトの名無しさん:2010/02/21(日) 14:55:19
>>271
継承して、コンストラクタ呼び出すとき
class Klass(Base):
 def __init__(self):
  Base.__init__(self)
ってしない?

276 :デフォルトの名無しさん:2010/02/21(日) 15:10:17
そういうときのためのsuperじゃないの?

277 :デフォルトの名無しさん:2010/02/21(日) 15:35:04
>>274
親クラスを明示するとtype()の結果が変わる…?!
まだよく解りませんが、とりあえずは動きました
お答え頂き、ありがとうございました

>>275
そもそもPythonではまだ継承自体したことがなかったです…

278 :デフォルトの名無しさん:2010/02/21(日) 15:51:37
>>277
>親クラスを明示するとtype()の結果が変わる…?!
というか、Pythonはでバージョンアップでクラスの仕様を変えたのよね。
だから、3.0以前はobjectを継承しないと旧式のクラスになるという仕様なの。
詳しくは「new-style class」でググれ

279 :デフォルトの名無しさん:2010/02/21(日) 21:55:46
>>276
super()使ったところで、結局__init__は避けられないのでは?

280 :デフォルトの名無しさん:2010/02/22(月) 11:39:33
>>278
詳しい説明ありがとうございます
旧形式/新形式のクラスがある、ということは知っていたのですが
挙動の違いだとは知らず、てっきり
同じ挙動で全然違う記法があるのだとばかり思っていたのです…

…で、その旧形式の記法はきっと直感から大きく外れた奇っ怪なもので
自分の書いている読みやすい記法はきっと新形式なのだろう、と
勝手に勘違いしていたワケです

調べると、まさか自分の書いていたのが旧形式とは…
でもそれを知り、かなり目からウロコというか
今まで「何かおかしいな」と思っていた部分が大半スッキリしました

大変ありがとうございました

281 :デフォルトの名無しさん:2010/02/23(火) 11:34:14
if分岐は処理が遅いから、プログラムを書くときは出来る限り減らした方がいいとよくいいますが
これって、分岐予測のあるコンパイラ言語でプログラムを書くときだけで
Pythonのようなスクリプト言語とは無縁な話ですか?

282 :デフォルトの名無しさん:2010/02/23(火) 11:49:29
はい

283 :デフォルトの名無しさん:2010/02/23(火) 11:49:31
全く無関係ってことにはならないけど
他にもっと遅い部分があれば目立たないと思う
どこで時間掛かってるかを把握しておく方が重要

284 :デフォルトの名無しさん:2010/02/23(火) 11:54:33
スクリプト言語はそもそもの処理が全体的に遅いからな
連続ifくらいでは体感出来るほどの遅さにはならないことが多いと思うよ

とはいえ、オブジェクト指向的に他の良い書き方がある場合もあるので
連続ifが必ずしも良い方法だとは思わない

285 :デフォルトの名無しさん:2010/02/23(火) 11:58:11
MIMEのデコードとかでContent-Typeで処理分けるときとか
連続if以外の上手い方法あったらな〜とは思う

286 :デフォルトの名無しさん:2010/02/23(火) 12:11:03
if-elif-elif...と続いたら辞書を使うのがいいよ

287 :デフォルトの名無しさん:2010/02/23(火) 12:33:02
加工してdict.get()に渡して関数コールですよ

288 :デフォルトの名無しさん:2010/02/23(火) 13:02:12
アスキーアートとか変な日本語コード処理できるようになるのは
まだまだ先ですか?
そういうのはCでやらないとダメですか?

289 :デフォルトの名無しさん:2010/02/23(火) 15:12:23
Pascalでもいいよ

290 :デフォルトの名無しさん:2010/02/23(火) 15:39:11
変な日本語コードってなにさ
キリル文字?

291 :デフォルトの名無しさん:2010/02/23(火) 16:22:18
>>288
CでもPascalでもいいけど、COBOLでやるのが漢ってもんだ。

292 :デフォルトの名無しさん:2010/02/23(火) 16:24:09
神代文字だろ

293 :デフォルトの名無しさん:2010/02/23(火) 20:32:35
多分アスキーアートのためにロシア語の文字とかつかってること
あるみたいで,utf8に変換してもpythonのプログラムを落としてしまう文字がある
どれなのかはわかんない

2chのアスキーアート沢山はられるスレのdatに処理かけると必ず止まる

294 :デフォルトの名無しさん:2010/02/23(火) 21:29:04
encode / decode の際に ignore または replace を指定していないのかな

295 :デフォルトの名無しさん:2010/02/23(火) 21:30:59
>>292
線文字BとかはUnicodeに
あるらしい

296 :デフォルトの名無しさん:2010/02/23(火) 21:38:06
a

297 :デフォルトの名無しさん:2010/02/23(火) 21:41:05
コード書かずに文句だけ書かれてもなぁ。
cp932じゃなくてshift-jis使っちゃってるとか初心者にありがちなミスだし。

298 :デフォルトの名無しさん:2010/02/23(火) 21:49:11
たまにmacの文字が混ざってて変換できないとかはあるなぁ

299 :デフォルトの名無しさん:2010/02/23(火) 23:23:45
規格・実装を問わず、全部の文字が1:1でマッピングされてるわけじゃないから
落としてしまうのはしょうがない。

完全なdatを保存した状態で処理したいなら、
バイナリとしてやるか、自分で納得のいくようなカスタマイズをした文字列クラスと
各種処理関数を実装するしかない。

俺は面倒なのでreplaceしてるけど。

300 :デフォルトの名無しさん:2010/02/24(水) 15:19:14
2chのdatを適当な正規表現でsplitしたいだけだったけど
それだけするならperlでもいいよね

301 :デフォルトの名無しさん:2010/02/24(水) 17:56:33
jcode.pl

302 :デフォルトの名無しさん:2010/02/24(水) 19:01:52
arrayで行列を作成してある行を削除しようとして
del(test[row,:])
としたところ
ValueError: Can't delete array elements.
となってしまいます。どのようにしたらその行を
削除することができるのでしょうか?

あとn×7の配列の一番最後に行に1×7の行列を付け足すには
どのようにしたら良いのでしょうか?

303 :デフォルトの名無しさん:2010/02/24(水) 19:06:16
頑張ってドキュメント書いたやつが可哀想になってきた

304 :デフォルトの名無しさん:2010/02/24(水) 19:45:56
マルチポスト先で答え出てるじゃん

305 :デフォルトの名無しさん:2010/02/24(水) 19:50:53
arrayって何さ?

306 :デフォルトの名無しさん:2010/02/24(水) 19:51:44

ご自分の知識不足を棚に上げ、煽り・罵倒レスで返す方が数多く見うけられます。

そのような方々はスレの皆様を混乱させるだけでなく、
スレの雰囲気を壊しかねないのでお黙り頂き、そのままご退出ください。

また質問者は、リアルで全く役に立たない回答者に知識を披露する場を与え、
優越感と自己満足を感じさせてあげるという、大変貴重な存在です。

故に、質問者を見下した回答、あまりにも儀礼を欠いた回答は厳重に禁止いたします。
忙しい中、少ない時間の合間を縫って質問しに来てるわけですので、
その辺重々ご承知下さい。

以上を踏まえ、各自よく調べ、よく考え、より正確な回答をするよう常に留意すること。


307 :デフォルトの名無しさん:2010/02/24(水) 20:03:16
もともと殺伐としている本スレでお前は何を言ってるんだ

308 :デフォルトの名無しさん:2010/02/24(水) 20:57:41
誰かが回答してから貼れよ

309 :デフォルトの名無しさん:2010/02/24(水) 23:51:44
http://www.python.jp/doc/release/tut/tut.html

310 :デフォルトの名無しさん:2010/02/25(木) 07:48:18
listならappendとpop使えばいいんじゃないの?

311 :デフォルトの名無しさん:2010/02/25(木) 10:25:44
わざわざ array 使ってるんだから空気読めってことじゃん?

312 :デフォルトの名無しさん:2010/02/26(金) 08:33:13
import perl
でperlを部品として使えたらいいのに

313 :デフォルトの名無しさん:2010/02/26(金) 08:34:37
perlで出来ることの大部分がpythonでできるから要らないよ

314 :デフォルトの名無しさん:2010/02/26(金) 09:34:37
>>312
たしかそんなのあったよ

315 :デフォルトの名無しさん:2010/02/26(金) 10:35:54
2年ぐらいプログラミングから離れていて、簡単だと思っていたプログラムさえ簡単に書けなかったw
誰か俺をリハビリしてくれ

316 :デフォルトの名無しさん:2010/02/26(金) 10:50:18
>>315
カルネージハート ポータブル
でもやんなさい

317 :デフォルトの名無しさん:2010/02/26(金) 11:39:01
>>315
宿題スレを上から順に

318 :デフォルトの名無しさん:2010/02/26(金) 11:54:12
Eclipse+pydevを使っているのですが、
""" """で括ったコメントが斜体になってすごく読みにくい。
ググったり設定いじったりやってみたのですが、変更できず。

どなたかえろい人お助けすだせえ。



319 :デフォルトの名無しさん:2010/02/26(金) 12:13:31
解決しました!すごく嬉しい!
設定>pydev>Editor>Appearance color optionsで変更したいモノを選ぶ

お邪魔しました!

320 :デフォルトの名無しさん:2010/02/26(金) 12:23:03


321 :デフォルトの名無しさん:2010/02/26(金) 12:41:16
eclipseとか使い物にならない
そもそもJavaに最適化されてる時点で

322 :デフォルトの名無しさん:2010/02/26(金) 12:46:29
.を打って、メンバの一覧と説明がビローンって出るのって、
Eclipse+Pydevの他にある?

それないと話にならないし全く使いものにならない。
原始時代じゃないんだよ。

323 :デフォルトの名無しさん:2010/02/26(金) 13:40:51
eric4

324 :デフォルトの名無しさん:2010/02/26(金) 13:45:01
なんでそんなに挑発的アンド喧嘩腰なの?

325 :デフォルトの名無しさん:2010/02/26(金) 13:55:07
PythonWin (標準)

PyScripter (ほぼ標準)

どっちも出るけど?


326 :デフォルトの名無しさん:2010/02/26(金) 14:10:00
>>325
> PythonWin (標準)
これは使った事ないから知らんが、

> PyScripter (ほぼ標準)
できるんか?
設定方法教えれ

327 :デフォルトの名無しさん:2010/02/26(金) 14:46:22
> メンバの一覧と説明がビローンって出る

ってのは
http://iup.2ch-library.com/i/i0059504-1267162966.jpg
こういう事だからね。

その点踏まえて再レスよろ
ericはインスコ面倒そうだから試してないけど、できるの?

328 :デフォルトの名無しさん:2010/02/26(金) 14:53:12
なんでjpg?

329 :デフォルトの名無しさん:2010/02/26(金) 14:55:12
は?

330 :デフォルトの名無しさん:2010/02/26(金) 15:05:49
俺流は、メモ帳で

331 :デフォルトの名無しさん:2010/02/26(金) 15:34:00
意味がわからん

332 :デフォルトの名無しさん:2010/02/26(金) 15:54:11
>eclipseとか使い物にならない
そんなに酷いの?

333 :デフォルトの名無しさん:2010/02/26(金) 15:56:15
>>327
あーオレもいんてりせんす欲しいわー。
VisualBASICでいんてりせんすだと、
本当に何も覚えて無くても書けるからな。

334 :デフォルトの名無しさん:2010/02/26(金) 17:36:34
自分で探せよ

335 :デフォルトの名無しさん:2010/02/26(金) 17:51:20
http://iup.2ch-library.com/i/i0059504-1267162966.jpg

んで、ericはできるの?
んで、PythonWinはできるの?
んで、PyScripterはできるの?

何で消えるの?できるかできないかレスしてから消えろ

336 :デフォルトの名無しさん:2010/02/26(金) 18:06:53
PythonWinひさしぶりに起動したら
日本語通るようになってるな。

337 :デフォルトの名無しさん:2010/02/26(金) 18:55:10
PythonWin使い勝手悪すぎわろた

338 :デフォルトの名無しさん:2010/02/26(金) 19:48:26
PythonWinってActivePythonに付いてくるやつだっけ?
みんなActivePython入れてるの?

339 :デフォルトの名無しさん:2010/02/26(金) 20:11:35
pywin32に付いてくるやつだよ

340 :デフォルトの名無しさん:2010/02/26(金) 21:01:21
>>332
使ってみればわかるけど特にひどいところはないよ。
むしろwxモジュールを使ったコードを問題なく直接実行できたり(PyScripterでは固まる)
Google App Engine開発向けのプラグインが用意されていたり良いところも多い。
eclipseがいやだって人は起動時間が長いのが不満なんだろう多分。そこで常時起動ですよ。
emacs使いだってやってることだ。

341 :デフォルトの名無しさん:2010/02/26(金) 21:08:55
今 eclipse + pydev を入れてみた。
ほんのちょっと触っただけだけど、不満なところは、
既存のプロジェクトを pydev から扱うときの
正しい手順が判らなくて勝手に __init__ を作られたことと、
Ctrl + / でコメントアウトしたら # が行頭に追加されてしまうところと、
既存のファイルを修正したときに、元々の改行文字を無視して設定した
改行文字を使ってしまうところ。

設定したり慣れたりしたら良いんだろうけど、動的型付け言語では正確な
コンテキスト補完はできないんだし、やっぱり手になじんだエディタでいいやって
なっちゃう。

342 :デフォルトの名無しさん:2010/02/26(金) 21:13:38
たぶん今Eclipseに手を出してインテリセンスに依存したコーディングすると
何千行もの関数やメソッドをストレスなく作って後悔するから今のままでいいや

343 :デフォルトの名無しさん:2010/02/26(金) 21:13:59
>>322,326,327,335
こういった何と戦ってるのか分からない落ち武者が多いところもマイナスかな。
いわゆる統合環境の洗脳

344 :デフォルトの名無しさん:2010/02/26(金) 21:23:47
ちょっと文句言っただけで設定出来るだのプラグイン入れろだのうるさいね

345 :デフォルトの名無しさん:2010/02/26(金) 21:26:17
>>333
インテリセンス無かったら無かったで対話環境でhelp()使うかマニュアル読むんだが
関数とかメソッドの引数の順番とか暗記するのが普通なの?

346 :デフォルトの名無しさん:2010/02/26(金) 21:33:56
>>345
vim のそばで IPython を常時起動。
試しながら、動かしながら書く。

347 :デフォルトの名無しさん:2010/02/26(金) 21:36:11
IPythonといえばタブを入力するとワーキングディレクトリのファイル一覧が表示されて困ってるんだがこれはなんとかならないのか?

348 :デフォルトの名無しさん:2010/02/26(金) 21:39:25
>>340
そすか
eclipse使ってるんだがそんなに使い勝手悪くないと感じてるから
これが使いものにならないと言い切れる環境って何なのか気になったんだ。トン

349 :デフォルトの名無しさん:2010/02/26(金) 21:39:34
>>347
. を書いてからタブを打つと出ないよ。
ある程度空気読んで補完してくれる。
設定でOFFにできるかは知らない。

350 :デフォルトの名無しさん:2010/02/26(金) 21:43:36
>>349
おお本当だ。ありがとう。

351 :デフォルトの名無しさん:2010/02/26(金) 22:17:24
このIDE厨っぷり、ちんこくさいなぁ

352 :デフォルトの名無しさん:2010/02/26(金) 22:18:40
はいはいメモ帳メモ帳

353 :デフォルトの名無しさん:2010/02/26(金) 22:23:35
ここの住人はcatしか使いませんよ

354 :345:2010/02/26(金) 22:26:04
xyzzyですが何か

>>346
ごめん、helpと同じ類だから例に出さなかったけど自分はそうやってる

355 :デフォルトの名無しさん:2010/02/26(金) 22:26:28
何このスレ、CUIじじいばっかだなw
古代技術懐古厨か?(笑)
原始人はマンモスでも倒してろwww

356 :デフォルトの名無しさん:2010/02/26(金) 22:39:48
pass

357 :デフォルトの名無しさん:2010/02/26(金) 22:52:16
俺は新規コードならtype con > だな
編集は流石にvimだけど

358 :デフォルトの名無しさん:2010/02/26(金) 22:52:26
やっぱりちんこだったのか
無能なお前はJavaだけやってろや

359 :デフォルトの名無しさん:2010/02/26(金) 23:02:44
CUIじじい>>343,351,358が戦国時代に生きていたら・・・

立派な刀と鎧を持ちつつ精神論を垂れながら、
鉄砲隊に一撃であっけなく倒される役柄www

360 :デフォルトの名無しさん:2010/02/26(金) 23:04:55
はいはい、君はJavaでアプリだけ作ってればいいよ
絶対OSやコンパイラみたいなシステムは作ったりしないようにね
迷惑だ

361 :デフォルトの名無しさん:2010/02/26(金) 23:07:42
>>355
一度 IPython で動かしながら開発してみたら?
Eclipse+Javaだとメソッドのドキュメントが見えるだけだけど、
IPythonならそのまま実行してみて結果が予想通りだと確認まで
してからコーディングできるよ。
pydevだとメソッド表示はJavaほどにはできないけど、IPythonなら
実際にそのオブジェクトがあるから完璧に表示できる。

362 :デフォルトの名無しさん:2010/02/26(金) 23:12:21
http://iup.2ch-library.com/i/i0059655-1267193460.png

Vim使いだが、うぜーしおせーからほとんど使わんな
おむに補完

363 :デフォルトの名無しさん:2010/02/26(金) 23:46:30
関係のない横レスですが、
os.listdir(path)がos.pyに見当たらないんですけど、
どこにありますか?

364 :デフォルトの名無しさん:2010/02/26(金) 23:55:07
posixmodule.cかな

365 :デフォルトの名無しさん:2010/02/27(土) 00:22:11
py9t4

366 :デフォルトの名無しさん:2010/02/27(土) 00:55:49
>>362
windowsはここのバイナリと入れ替えないと動かんのな。
ttp://www.gooli.org/blog/gvim-72-with-python-2526-support-windows-binaries/

367 :デフォルトの名無しさん:2010/02/27(土) 02:30:17
httplib2ってマルチスレッドじゃうまく使えなかったりする?
ThreadingMixInなHTTPServerとあわせて使ってみたけどデータがおかしくなっちゃう

368 :デフォルトの名無しさん:2010/02/27(土) 02:43:01
versionは?

369 :デフォルトの名無しさん:2010/02/27(土) 02:50:28
httplib2-0.6.0のアーカイブの中のpython2のほう
実行環境はPython2.6.3

370 :デフォルトの名無しさん:2010/02/27(土) 08:31:03
えっインテリセンスねぇの?
だせーっすよwww

371 :デフォルトの名無しさん:2010/02/27(土) 10:22:22
>>359
ゲリラ戦になるだろうな。
サックリと喉を掻っ切られる

372 :デフォルトの名無しさん:2010/02/27(土) 11:05:21
Python-x64の環境構成の参考になるサイトはありますか?


373 :デフォルトの名無しさん:2010/02/27(土) 14:42:01
mod_pythonのpspモジュール使ってみたんだけど、
どこにpspファイルを配置してみても、カレントディレクトリが "/" になるのは仕様?
なにか設定が足りないのかな

374 :デフォルトの名無しさん:2010/02/27(土) 15:16:34
CGIにそんな仕様あったか?

375 :デフォルトの名無しさん:2010/02/27(土) 15:58:41
>>373
ハンドラに設定したスクリプトが実行されて、そいつがpspファイルを読み込んでるから、カレントはハンドラになるんとちゃうか

376 :デフォルトの名無しさん:2010/02/27(土) 15:59:31
>>373
mod_pythonというよりApacheの設定では?
os.chdir()してからpspかければよかったはず。

from mod_python import psp
exec psp.parsestring(xxx)
こんなんだっけ?

377 :デフォルトの名無しさん:2010/03/02(火) 23:43:26
>>360はeclipseがPICとかH8とかの組み込み向け開発にも使われていることを知らないようだ。

378 :デフォルトの名無しさん:2010/03/02(火) 23:51:54
pass

379 :デフォルトの名無しさん:2010/03/03(水) 02:35:38
eclipse使ってない人は何を使ってるんですか?
参考までに教えてください

380 :デフォルトの名無しさん:2010/03/03(水) 02:52:39
秀丸おっおっおっ

381 :デフォルトの名無しさん:2010/03/03(水) 04:51:13
じゃあ俺も秀丸

382 :デフォルトの名無しさん:2010/03/03(水) 05:05:58
cat

383 :デフォルトの名無しさん:2010/03/03(水) 05:22:26
echo

384 :デフォルトの名無しさん:2010/03/03(水) 09:04:18
Editra

385 :デフォルトの名無しさん:2010/03/03(水) 09:25:57
ed

386 :デフォルトの名無しさん:2010/03/03(水) 09:31:13
EmEditor+IPython

387 :デフォルトの名無しさん:2010/03/03(水) 09:46:26
TextMate (Mac限定)

388 :デフォルトの名無しさん:2010/03/03(水) 11:00:01
WindowsでPythonコンソールの付いてるエディタと言えば何がある?

389 :デフォルトの名無しさん:2010/03/03(水) 12:13:06
Editra

390 :デフォルトの名無しさん:2010/03/03(水) 13:11:22
379です。どもでした

391 :デフォルトの名無しさん:2010/03/03(水) 13:32:17
そういやVimにPythonモードあったな

392 :デフォルトの名無しさん:2010/03/03(水) 13:34:54
xyzzy

393 :デフォルトの名無しさん:2010/03/03(水) 14:34:30
edlin

394 :デフォルトの名無しさん:2010/03/03(水) 14:36:54
copy con

395 :デフォルトの名無しさん:2010/03/03(水) 16:32:30
unixのtail -fとシェルスクリプトの組み合わせの処理のように、
ラグ無しでログの新規行を取得したい

pythonでtailもどきを作ったけど、time.sleepなどでwaitかけてやる分
スマートじゃない気がしてる

tail -fのバインディングは存在しない? 良い方法があったら教えて

396 :デフォルトの名無しさん:2010/03/03(水) 16:55:11
やりたいことはselectかな

397 :デフォルトの名無しさん:2010/03/03(水) 17:43:03
http://www.python.jp/doc/2.5/lib/module-select.html

398 :デフォルトの名無しさん:2010/03/03(水) 17:45:21
Gemma 2008/01/04 00:40
>もっと賢い方法
Unix programming FAQ見たら、select()じゃだめなんだってさ。
GNU Coreutilsのtailもsleepで監視してた。
sleepしかないんじゃね。


mzp 2008/01/05 21:36
tail -fの挙動を見てると、ファイルが更新されてから反映されるまで微妙にタイムラグがあるから、たぶんsleep使ってるんだろうなぁ、という俺の直感は正しかったわけですね。
http://d.hatena.ne.jp/mzp/20080103/tail

399 :395:2010/03/03(水) 18:06:32
なるほど、ありがとう

http://code.activestate.com/recipes/576377-high-level-inotify-wrapper/

こんなのを見つけた
inotifyのbinding

使ってみようと思う

400 :デフォルトの名無しさん:2010/03/03(水) 18:07:39
Windows限定ならFindFirstChangeNortification()でFILE_NOTIFY_CHANGE_SIZEを
指定すれば良いと思う

401 :デフォルトの名無しさん:2010/03/03(水) 21:57:00
ここ数日Titaniumのデスクトップ版がGUI作るのにちょうどいい気がしてきた
htmlとjsわかるやつなら次のコードみるだけで何のことだかわかると思うけど
<script type="text/python">
def hoge():window.alert("Python?")
</script>

こんなのが動く

402 :デフォルトの名無しさん:2010/03/03(水) 21:58:25
先生!! hoge() はどこから呼ばれるんですか!!


403 :デフォルトの名無しさん:2010/03/03(水) 22:05:02
ああ、最後にhoge() 呼ばないと動きませんね!
krollとかいうとってもキモイライブラリがあって、
js/ruby/python/phpで名前空間を共有できて相互に呼び出せるみたい

404 :デフォルトの名無しさん:2010/03/03(水) 22:09:52
titaniumって何?
インテル入ってる?

405 :デフォルトの名無しさん:2010/03/03(水) 22:11:51
これ => Ruby,Python,PHP,JavaScriptでマルチプラットフォームなデスクトップアプリを簡単に作成する Appcelerator Titanium Desktop
http://d.hatena.ne.jp/yuichi_katahira/20100219/1266592521

406 :デフォルトの名無しさん:2010/03/03(水) 23:07:22
俺も丁度Titanium見てた
iPhone/Android動かす場合はjsオンリーで書く必要があるっぽいね
デスクトップアプリならruby/python/php使えるけど。
スレ違いスマソ

407 :デフォルトの名無しさん:2010/03/03(水) 23:15:48
zshのglobが欲しい
再帰検索するためだけにwalkとglob組み合わせないといけないのはどうかと思う

408 :デフォルトの名無しさん:2010/03/03(水) 23:17:32
一回書いてコピペでおk

409 :デフォルトの名無しさん:2010/03/05(金) 10:30:11
pythonはここからダウンロードすればいいのですか?
http://python.com/

410 :デフォルトの名無しさん:2010/03/05(金) 12:23:36
2.6 から可変引数の後ろにキーワード引数が書けるようになったんだけど、
(func(*args, a=1, **kwargs) みたいな。issue 3473?)
ドキュメントが間違ってるぽいんだ。
http://docs.python.org/reference/expressions.html#calls
"*" expression ["," "*" expression] ["," "**" expression]

"*" expression ["," keyword_arguments] ["," "**" expression]

誰か英語ができる人、本家に連絡してたもうm(_ _)m

411 :デフォルトの名無しさん:2010/03/05(金) 12:42:40
続きは英語板で

412 :デフォルトの名無しさん:2010/03/05(金) 13:54:25
もちつけ
"*" expression ["," "*" expression] ["," "**" expression]
ただしい

413 :デフォルトの名無しさん:2010/03/05(金) 14:08:53
positional_arguments ["," keyword_arguments] ["," "*" expression] ["," keyword_arguments] ["," "**" expression]
これにマッチするんじゃない?

414 :デフォルトの名無しさん:2010/03/06(土) 19:59:12
pythonって配布する場合本体だけでいいの?
ランタイムパッケージみたいなのがいるのかな?

415 :デフォルトの名無しさん:2010/03/06(土) 21:33:37
py2exe

416 :410:2010/03/06(土) 21:57:38
>>412
それだと func(*args1, *args2, **kwargs) になっちゃわないかな。
keyword_arguments(1つ以上のkeyword_item)が "*" expression の後ろに
置けることを示さないといけないんだけど。

>>413
それは先頭にpositional_arguments(1つ以上のexpression)が必要。

positional_arguments ["," keyword_arguments] ["," "*" expression] ["," keyword_arguments] ["," "**" expression]
の positional_arguments が無いのが
keyword_arguments ["," "*" expression] ["," "**" expression]
で、その先頭から keyword_arguments を取ったら
"*" expression ["," keyword_arguments] ["," "**" expression]
じゃないの?

417 :デフォルトの名無しさん:2010/03/06(土) 22:08:12
>>414
配布先がLinuxとか*BSDだったらPython入ってるので.pyだけでいいけど
Windowsだったらランタイム同梱が基本。

418 :デフォルトの名無しさん:2010/03/06(土) 23:48:03
3.1のだと http://docs.python.org/3.1/reference/expressions.html#calls
"*" expression ["," keyword_arguments] ["," "**" expression]
になってるね

419 :デフォルトの名無しさん:2010/03/07(日) 01:55:54
>配布先がLinuxとか*BSDだったらPython入ってるので.pyだけでいいけど
えっ

420 :デフォルトの名無しさん:2010/03/07(日) 03:00:06
>>419
えっ?ばかじゃないの?

421 :デフォルトの名無しさん:2010/03/07(日) 03:03:58
シェルスクリプトぐらい付けとけよ

422 :デフォルトの名無しさん:2010/03/07(日) 04:04:18
>>417
バージョン違ったらどうするつもりなんだ?w

423 :デフォルトの名無しさん:2010/03/07(日) 04:34:15
eselect python set 数字
python-updater

424 :デフォルトの名無しさん:2010/03/07(日) 06:18:26
419じゃあ無いが、

2.Xと3.Xで互換性が無いの知らずにはまった。
Google Data API のclient libraryが"2.6 or higher"とか書いてあったので
3.Xを使ったらさっぱりインストールできなくて。

2.6.4にしたらあっさり動いた。


てか、Linuxで「配布」するならRPMとかdebとかにして依存関係チェックさせるよなー。





425 :デフォルトの名無しさん:2010/03/07(日) 06:39:28
「Linuxで配布」なんて言う言い方やめてくれ
見てるこっちが恥ずかしい

426 :デフォルトの名無しさん:2010/03/07(日) 06:39:39
ただでさえ処理の遅いJAVAよりさらに糞遅いPythonなんて
使う意味あるの?
C#はゲーム開発もできるぐらいヌルヌルなのに

427 :デフォルトの名無しさん:2010/03/07(日) 06:41:43
無いよ
C#が世界最強さ!さようなら

428 :デフォルトの名無しさん:2010/03/07(日) 08:10:09
>>425
では言い方を教えてください。

429 :デフォルトの名無しさん:2010/03/07(日) 08:17:12
>>426
なんとか.py だけ作れば動くのが楽だよ。
でも、なんとか.vbsとかといっしょだなそれでは。

430 :デフォルトの名無しさん:2010/03/07(日) 08:41:27
>>428
氏ね

431 :デフォルトの名無しさん:2010/03/07(日) 10:30:59
>>426
ゲーム開発しか考えてないC#学生とは違うんです

432 :デフォルトの名無しさん:2010/03/07(日) 10:41:09
>>426
ちょっとしたスクリプトにC#使うバカはいませんもの

433 :デフォルトの名無しさん:2010/03/07(日) 10:59:13
>>430
なんだ。単なるレス乞食か。
ツマンネ。



434 :デフォルトの名無しさん:2010/03/07(日) 11:05:39
>>426
C#も興味はある。VBScript程、糞では無いと聞いているのでね。

なぜ、糞遅いPerlやPHPが沢山使われているのかわからない限りは
永遠に意味は理解出来ないと思うね。

それにゲーム開発するならC#よりC++の方が早いだろ。
なんだってC#なんてどマイナー言語なんか使うんだ? 不思議。


435 :デフォルトの名無しさん:2010/03/07(日) 11:06:58
なんだ、この会話のおかしさは。
色々間違えすぎだろ。

436 :デフォルトの名無しさん:2010/03/07(日) 11:15:03
>>435
何がどうおかしいか指摘しない限り、
その発言も「おかしさ」の一部になってしまうのだよ。

437 :デフォルトの名無しさん:2010/03/07(日) 11:22:14
大多数の住民にとっては明らかにおかしいので
あらためてどこがおかしいかなんて指摘するまでもないぞ
でも指摘すると

C#とVBScript(VB.netではなく)を並べて比較
PerlとPHPはメイン用途では糞遅くない
C#はメジャー言語

438 :デフォルトの名無しさん:2010/03/07(日) 11:33:54
>>426がおかしいこと書いてるから
それの意趣返しでふざけたこと書いてるだけだろ
いちいち突っ込んでたらキリがないお

439 :デフォルトの名無しさん:2010/03/07(日) 11:34:23
ゲーム作るならC++とか何千年前の化石だよw
この分じゃManagedDirectXとかXNAとか全く理解できないだろうな
.NETがC#で書かれてるなんて言ったら嘘つき呼ばわりされそうw

440 :デフォルトの名無しさん:2010/03/07(日) 11:47:20
>>438
それもそうだね。失礼しました
__init__の第一引数にselfを置く仕事に戻るお

441 :デフォルトの名無しさん:2010/03/07(日) 11:49:14
業務アプリはVB.NETで、コピペ&置換とか、
フィールド名を入れると処理用のコードを吐くExcelとかで書いてるけど
ハッキリ言って頭脳使ってません!! なので修行のためにPythonとかいじる。

で、定時バッチ処理とか書くのには便利だなとw
Excel添付でメール出すとか、30行くらいで書けるし。

442 :デフォルトの名無しさん:2010/03/07(日) 11:57:11
つまりC#は文系が使うものだ
ユーザ優先な理系はマルチプラットフォームやソースコードの可視性を優先する

443 :デフォルトの名無しさん:2010/03/07(日) 12:06:23
Jython最強でAF?

444 :デフォルトの名無しさん:2010/03/07(日) 12:09:34
PyPyでいいよ

445 :デフォルトの名無しさん:2010/03/07(日) 12:16:20
ここの人ら、頭おかしいの?

446 :デフォルトの名無しさん:2010/03/07(日) 12:21:21
ブーメラン

447 :デフォルトの名無しさん:2010/03/07(日) 13:25:04
>>445
頭が悪いことは確かだね

448 :デフォルトの名無しさん:2010/03/07(日) 13:30:06
勝ち目はないのに自ら喧嘩を売ってくるC#使いが頭おかしい。
ゲイツの洗脳によって生み出された今世紀最大の異端児

449 :デフォルトの名無しさん:2010/03/07(日) 13:34:15
勝つってなにに勝つんだか・・・
よくわからないけどがんばってくださいね

450 :デフォルトの名無しさん:2010/03/07(日) 13:44:49
今時Pythonのコードが遅いようなPCなんて無いでしょ
そういったポンコツ使ってるなら身の程をわきまえてるだろうし。
むしろwindows、.NETなんてモノを入れれるPCならPythonの速度で悩むことなし

451 :デフォルトの名無しさん:2010/03/07(日) 14:17:13
>>442
.NETにも一応Monoはあるし
動的型言語がソースコードの可読性において優位かどうかは大いに疑問があるな
静的型は読み手にかなりのヒントを与えることができる

それと、「ソースコードの可読性」を重視するのはむしろ文系的という気もするが
どうよ

>>450
Pure Pythonで画像をピクセル単位で弄くったり、H264エンコーダでも書いてみなよ
Pythonはインタプリタだから論外な上に、並列計算をしようにもすぐ
GILにつかまるが、C#はC/C++の半分程度の性能は持ってるよ


452 :デフォルトの名無しさん:2010/03/07(日) 14:20:44
可視性とか書いちゃう人になにマジレスしてるですか

453 :デフォルトの名無しさん:2010/03/07(日) 14:33:16
>>451
まあそういう処理はPythonよりは速いな。
C++の半分程度の性能、ってのはいいすぎだが。

454 :デフォルトの名無しさん:2010/03/07(日) 14:34:44
>>451
適材適所って分からないの?
なんでそんなにC#好きなの?
綺麗に書けないの?

455 :デフォルトの名無しさん:2010/03/07(日) 14:42:23
>>453
いや、そんなもんだよ
.NETが糞もっさりなのは、起動時にアホみたいにランタイムをロードするのと
GDI+、WinFormなどがうんこだから

>>454
別に俺はC#信者でも何でもないが

456 :デフォルトの名無しさん:2010/03/07(日) 14:46:34
>>434
バカ丸出しw

457 :デフォルトの名無しさん:2010/03/07(日) 14:50:52
C#にはGCも型推論もラムダもクロージャもあるんだが>>434が知らないことだけは
疑いようもないなw

458 :デフォルトの名無しさん:2010/03/07(日) 14:55:57
VBやPythonぐらいしか使ったことがない初心者は
Pythonの良さすら理解できてないと思う

459 :デフォルトの名無しさん:2010/03/07(日) 14:57:40
例えばフォームに一つボタンを配置しそれをクリックすると
"完成"というメッセージボックスを出すアプリを作るとします

C#なら
1.ツールボックスにあるボタンをフォームにドラッグ(2秒)
2.そのボタンをダブルクリック(1秒)
3.ダブルクリックするとクリックイベントのコードの自動で画面が切り替わるので
MessageBox.Show("完成");と入力するだけ(2秒)
4.F5を押したらできあがり(1秒)
合計10秒以内にできます

3.の場合 mes まで入力したら自動でIDEが入力してくれるので
実質 ("完成") の部分だけ書けばいいだけですw
初心者でもこの工程を知っていれば同じ速度ですw

で、pythonで同じソフト作る場合、どれだけ時間がかかりますかー?

460 :デフォルトの名無しさん:2010/03/07(日) 15:09:36
おれは20年くらいかかった

461 :デフォルトの名無しさん:2010/03/07(日) 15:11:14
>>459
馬鹿だなあ。
テキストエディタとコンパイラで競争するならPythonが勝つよ。
さあ、SDKとメモ帳で作ってごらん。

462 :デフォルトの名無しさん:2010/03/07(日) 15:12:12
言語の話じゃなくてVC#の機能自慢になってないか?

from PyQt4 import QtGui as gui, QtCore as core
app = gui.QApplication([])
mb = gui.QMessageBox()
mb.setText(u"完成")
but = gui.QButton(u"完成")
but.clicked.connect(mb.show)
but.show()

463 :デフォルトの名無しさん:2010/03/07(日) 15:12:50
皆早いだ遅いだ出来る出来ないで言語選んでるのな
おいらモンチパイソンのホーリーグレイルが大好きだからpython選んじゃったよ

464 :デフォルトの名無しさん:2010/03/07(日) 15:13:22
459はExcell使ってプログラミングとか言ってるのと同類だよ。

465 :デフォルトの名無しさん:2010/03/07(日) 15:13:28
>>459
マウス持つのすらめんどくさくてね

466 :デフォルトの名無しさん:2010/03/07(日) 15:16:39
趣味プログラマならあれだけど
Pythonしかできないなんてやつはいないだろ
必要があれば両方やれば良いだけの話

467 :デフォルトの名無しさん:2010/03/07(日) 15:18:02
>>461
あるのに使わないでやれっていうのは無能が言う事
ある道具は使う。もしなかったらなんてのは通用しないよ

468 :デフォルトの名無しさん:2010/03/07(日) 15:18:39
適材適所だから対立するようなものでもないしな
俺はPythonが好きだしC#も好きだった

469 :デフォルトの名無しさん:2010/03/07(日) 15:19:44
今年の東京マラソンの1位はスバルインプレッサに登場した田中さんです!

470 :デフォルトの名無しさん:2010/03/07(日) 15:20:41
>>462
こんだけ打たなきゃいかんというのがね。
. とか打っただけで候補ずらり出るべきw

471 :デフォルトの名無しさん:2010/03/07(日) 15:21:25
結局は早くム板にもID機能付けろってことですね

472 :デフォルトの名無しさん:2010/03/07(日) 15:25:17
PythonのGUIライブラリの決定版なんて物はないので勝敗は決められません

473 :デフォルトの名無しさん:2010/03/07(日) 15:25:18
C#は素晴らしい言語だと思うが、それでもたいていの場合にPythonを使う理由は、

1. IPython
今時は、タイプしている時間よりリファレンス読んでいる時間の方が長い。
実際に動かして動作を確認しながらライブラリの使い方を調べられる
強力なインタラクティブシェルにより、開発生産性が大きく上がる。
MonoについてくるC#のインタラクティブシェルはIPythonに比べて貧弱すぎる。

2. クロスプラットフォーム
たとえば >>459 くんのVC#はWindowsでしか動かない。
Monoなんて標準で入っているのは一部のデスクトップLinuxだけ。
Pythonは今時Windows以外のほとんどのOSで一般的に搭載されている。
しかも、 >>459 くんご自慢のWindows.FormsかWPFは、Windows以外では
互換性の問題だらけ。GTK#は逆にWindowsで見た目も動作も悪い。
PythonはQt, GTK, wx全部完成度の高いバインディングがあるけど、
Qtとwxの.NETバインディングは完成度が低い。

別に動的型付けにこだわりがないけど静的型付けでプラットフォームまるごと
素晴らしい言語が無いからPython使ってるだけで、C#ベースのコンパイル不要
インタプリタや高機能インタラクティブシェル、スクリプティング環境ができて
多くのLinuxで標準的にインストールされてQt#が良くなればC#メインになるかもな。

474 :デフォルトの名無しさん:2010/03/07(日) 15:26:38
>>470
インタラクティブシェルで動かしながら書いてるんで、 . 打ってタブ押したら
候補がずらりとでるけどね。

475 :デフォルトの名無しさん:2010/03/07(日) 15:28:29
武蔵がプロレスしたのと同じ
場違いスレ違い

476 :デフォルトの名無しさん:2010/03/07(日) 15:31:33
そういやあるC#の本読んだらサンプルコードが同人ゲーでストリーキングだった

477 :デフォルトの名無しさん:2010/03/07(日) 15:33:20
//←PyQt4で作成して保存する作業時間が省かれてます
from PyQt4 import QtGui as gui, QtCore as core
app = gui.QApplication([])//こういうのいちいち書かないといけないってw
mb = gui.QMessageBox()//同上
mb.setText(u"完成")//同上
but = gui.QButton(u"完成")//同上
but.clicked.connect(mb.show)//同上
but.show()//同上

このプログラムにおいて重要なのはどういった文字を表示するかである
フォームモジュールの読み込みやボタンのインスタンス化、イベントの挙動なんかを
いちいちコードで書かなければいけないのは煩わしくてありませんね
ボタンが30個あったらどうでしょう?w
表示するメッセージ部分だけ書けばいいC#と
それ以外のコードも書かなければいけないPythonとどっちが
アルゴリズムに費やする時間を多くかけられるのでしょうか?w
一目瞭然ですねw

478 :デフォルトの名無しさん:2010/03/07(日) 15:34:06
pythonのコメントの書き方すら知らない奴が語るなよ

479 :デフォルトの名無しさん:2010/03/07(日) 15:35:29
>>461
正直手書きでも大して変わらんと思う

using System.Windows.Forms;
class T {
    public static void Main() {
    var form = new Form();
    var button = new Button();
    button.Text = "完成";
    button.Click += (sender, e) => MessageBox.Show("完成");
    form.Controls.Add(button);
    Application.Run(form);
    }
};


480 :479:2010/03/07(日) 15:36:24
うぎゃインデントぐちゃぐちゃだw


481 :デフォルトの名無しさん:2010/03/07(日) 15:42:48
どうでもインデント

482 :デフォルトの名無しさん:2010/03/07(日) 15:42:57
>>477
>ボタンが30個あったらどうでしょう?w
キミは30回ボタンをポチポチ並べるの?
Pythonにはループがあるからボタン100個並べるのも簡単なんだ。

from PyQt4 import QtGui as g, QtCore as c
app = g.QApplication([])
form = g.QWidget()
mb = g.QMessageBox()
mb.setText(u"完成")
layout = g.QVBoxLayout()
form.setLayout(layout)
for i in xrange(100):
    b = g.QPushButton(str(i))
    b.clicked.connect(mb.show)
    layout.addWidget(b)
form.show()
app.exec_()


483 :デフォルトの名無しさん:2010/03/07(日) 15:45:30
>>479
そんなど素人みたいな書き方しませんしw
わざわざ見にくく書くなんて陰湿ですねw
インデントも自動でやってくれるのであんな感じにはなりません
わざわざある道具を使わないで
全部手書きで各意味あるんですか?w

その中で実際に手書きする部分は
MessageBox.Show("完成");だけ
それ以外は自動で生成するでしょw

484 :デフォルトの名無しさん:2010/03/07(日) 15:45:43
>>477
>//←PyQt4で作成して保存する作業時間が省かれてます
PyQt4で作成してという意味がわからないけど、テキストエディタ開いて保存する時間は、
VC#を立ち上げて新規プロジェクトを作成する時間よりも早いと思うよ?

485 :デフォルトの名無しさん:2010/03/07(日) 15:46:31
み、みんなアイロンパイソンやろうよ

486 :479:2010/03/07(日) 15:47:07
>>483
喧嘩を売る相手を間違えてないか?君
まあいいけどな(どうでも)w

487 :デフォルトの名無しさん:2010/03/07(日) 15:47:09
相手のもっとも得意とするところでわざわざ勝負してやるPythonスレに萌えた

488 :デフォルトの名無しさん:2010/03/07(日) 15:47:31
>>482
ただボタンが並んでるだけじゃないw
そんなアプリみたことありますかー?w

489 :479:2010/03/07(日) 15:49:36
>>488
君は知らないかもしれないが、ダイアログエディタで静的にGUIを生成するのではなく
動的にGUIを生成するように実装されているプログラムは結構ある

例えばfoobar2000を触ってみるといい

490 :デフォルトの名無しさん:2010/03/07(日) 15:50:15
ID欲しいと思ったが誰が誰か分からないのもある意味面白いな

491 :デフォルトの名無しさん:2010/03/07(日) 15:50:26
>>485
IronPython使ったら >>473の利点が無くなるから、別にC#で良いんだよ。

>>459
IronPythonでIPythonが動くようになって、Windows.FormsがLinux上でも
Mac上でも完全に動くようになって、.NET製のコマンドラインツールがコンマ1秒で
起動できるようになってから出直して。

492 :デフォルトの名無しさん:2010/03/07(日) 15:52:37
>>488
一応言っておくけど、Qtにはマウスでダイアログやフォームをデザインする
VC#みたいなツールもついてくるからね。もちろんGTKにもwxにもある。
起動してマウス握るよりもvim上で書いた方がストレス少ないし2chに貼りやすいから
あえて全部プログラムで書いてるだけ。

493 :デフォルトの名無しさん:2010/03/07(日) 15:53:01
多くのユーザーが利用できるアプリを作れても
糞UIじゃ誰もやりませんよw

ほんと個人でほそぼそとやる程度w
だったらクロスプラットフォームもクソもあったもんじゃないw

Pythonの利点てなんですか?まったく見えてこないんですけど
PCユーザーの大部分がWindows使っているのに
ほんと1%のlinuxユーザーのためにわざわざPython覚える意味あるんですか?

494 :デフォルトの名無しさん:2010/03/07(日) 15:54:08
http://pc12.2ch.net/test/read.cgi/tech/1266844916/192
だからさっさと病院逝けよ

495 :デフォルトの名無しさん:2010/03/07(日) 15:55:16
来週の日曜はWindows PowerShellとのセメントマッチをお送りします

496 :デフォルトの名無しさん:2010/03/07(日) 15:56:18
>>493
デスクトップマシンの99%がWindowsでも、キミがブラウザや携帯電話から
利用しているサービスはLinuxで動いていることもあるんだよ。
仕事や趣味で普段からLinuxやMacを使っている人には、Windows以外では
手足を縛られる言語は魅力的に見えないんだよ。

497 :デフォルトの名無しさん:2010/03/07(日) 15:59:31
Javaで言うSwing GUI ビルダー的な物ってPythonにはないんだっけ?

498 :デフォルトの名無しさん:2010/03/07(日) 16:00:01
>>491
起動が遅いってpcショボイんじゃないのw?
起動が早くても処理が遅いPythonのほうが
ストレスフルだわw

>>496
つまり仕事でやってるひとだけでしょw
WudowsユーザーやPC初心者の人がPythonやる価値なしとw

499 :デフォルトの名無しさん:2010/03/07(日) 16:00:28
Pythonの利点は色んなことが出来る、に尽きるね。
まぁGUIの静的なコンポーネントをいちいちコーディングするのはマゾくらいだろうけど

500 :デフォルトの名無しさん:2010/03/07(日) 16:03:30
Python以外は色んなことが出来ないのかい

501 :デフォルトの名無しさん:2010/03/07(日) 16:04:48
そうやって勝手に脳内変換しないでよ。
Pythonを習得することで色んなジャンルの開発に手を出せるってこと。

502 :デフォルトの名無しさん:2010/03/07(日) 16:05:33
from PyQt4 import QtGui, QtCore
app = QtGui.QApplication([])
mb = QtGui.QMessageBox()
mb.setText(u'完成')
btn = QtGui.QPushButton(u'押せ')
btn.connect(btn, QtCore.SIGNAL('clicked()'), mb.show)
btn.show()


503 :デフォルトの名無しさん:2010/03/07(日) 16:07:44
WidowsPCしかもっていない
会社でもwindowsの人で
プログラミングはじめようとしている人に
どの言語を勧めますか?

というより、Pythonやっている人で
上記のような人いますか?

504 :デフォルトの名無しさん:2010/03/07(日) 16:07:48
>>498
はいはいそうですね。ずっとWindowsしか使わないで良いと思ってる初心者が
デスクトップアプリを始めるにはC#の方が適していますね。

俺はLinuxもWindowsも使うんで現状ではデスクトップアプリ作るのにもPython
使ってるけど、.NETがLinuxでもマトモになってIPythonのC#版が出れば
デスクトップアプリもC#で作るかも。

あと、Pythonの処理速度の遅さがストレスになる事はないよ?
画像処理とかCPU食うところは全部C言語で実装されているor実装するから。

505 :デフォルトの名無しさん:2010/03/07(日) 16:08:43
>>502
PyQt4.7になって、シグナルの使い方がPythonicになったよ
btn.clicked.connect(mb.show)
でいける。

506 :デフォルトの名無しさん:2010/03/07(日) 16:09:27
>>503
GUI作りたいとかじゃなきゃ迷わずPythonかRuby

507 :デフォルトの名無しさん:2010/03/07(日) 16:14:41
なんか2ch復旧してから副作用で規制甘くなったよね
基地外が涌いてうざすぎ

508 :デフォルトの名無しさん:2010/03/07(日) 16:16:06
>>504
それはわかるよ
linuxも使っているならおれもPythonやるだろう
移植作業なんて面倒だからな

で、linux使っているならPC初心者ではないわけで
初心者にわかりやすい言語としてPython勧めるなんてどういうこと?
って思うんだよ。英語も理解出来ないとまともにプログラミングできないしね

>>504
1000のテキストファイルから正規表現で文字列検索するなら
Windows上でC#とPythonどっちが速いですか?

509 :デフォルトの名無しさん:2010/03/07(日) 16:16:10
PyQtいいなあ使ってみたくなったわ

510 :デフォルトの名無しさん:2010/03/07(日) 16:18:02
Pythonってわかりにくい言語か?

511 :デフォルトの名無しさん:2010/03/07(日) 16:20:57
最近は日本語でいくらでも情報があるぞ
ある限度を超えると英語ができなきゃいけないのは.NETもPythonも一緒

512 :デフォルトの名無しさん:2010/03/07(日) 16:21:22
>>508
PC初心者じゃなくてもプログラミングは初心者という事はあるでしょ?
あと、プログラミングに興味を持っている初心者には、Windows以外の
OSに興味を持っている人も居るでしょ。

あとは、やっぱりIPython。
ドキュメントを読むだけじゃなくて、実際に動作させて結果を確認しながら
プログラムを書けるのは、初心者にも易しいし、初心者じゃなくても慣れてない
大きいライブラリを使うときに楽。

513 :デフォルトの名無しさん:2010/03/07(日) 16:22:25
Windowsオンリーのユーザーにとって
C#を捨ててまでやる価値が果たしてあるのかということが知りたいわけ

ここにいるひとは日常趣味として
どういうソフトをPythonで作っているのか知りたい

・ファイルや文字列検索しそのファイルを開くアプリ
・他のソフトを操作するためのAPIを利用したアプリ
・吉里吉里みたいなアプリ
・UMLチックなメモ的なアプリ
・画像ビューアー
・CravingやIrvineのような動画、画像ダウンローダー

例えばこういうソフトをWindows用オンリーで開発することになったとして
C#とPythonの2択だったとしてどちらの言語使いますか?

514 :デフォルトの名無しさん:2010/03/07(日) 16:23:02
ちなみに、WindowsはGUIとスレッドに制限があるから、IPythonを使うときに
ipython -q4thread みたいにしないといけない。
wx なら -wxthread, gtkなら -gthread。

Linuxなら普通にipythonでおk

515 :デフォルトの名無しさん:2010/03/07(日) 16:24:55
連投規制もなくなってるんだな

516 :デフォルトの名無しさん:2010/03/07(日) 16:25:23
>>513
俺はPythonに慣れているし、いろいろなAPIの挙動をIPythonで手探り
しながらじゃないとWindowsアプリ書けないから、やっぱりPythonかな。
でも、その条件で他人に勧めるならC#だよ。

517 :デフォルトの名無しさん:2010/03/07(日) 16:25:50
>>513
http://pc12.2ch.net/test/read.cgi/tech/1266844916/192
だからさっさと病院逝けよ

518 :デフォルトの名無しさん:2010/03/07(日) 16:26:23
いや捨てるっつうか、両方出来るほうがよりイイんじゃない?
いわゆるアプリはもちろんC#で書くだろうな。

Windowsとプログラム言語の距離が小さいのがC#で、
頭脳とプログラム言語の距離が小さいのがPythonなんだよ多分。

519 :デフォルトの名無しさん:2010/03/07(日) 16:27:32
いい加減この板ID必須にしようぜ



520 :デフォルトの名無しさん:2010/03/07(日) 16:27:34
>>512
実行しながら〜
実行中でも変更〜
ここがPythonの利便性についてよく語られているけど
それがよくわからないんだよね
C#でも小規模なら一瞬でコンパイルできる

まあ1+2がすぐ表示されたのは感動したけどね
C#なら
Console.Writeline(1+2);
だから

521 :デフォルトの名無しさん:2010/03/07(日) 16:29:27
C#はちょっと書かないと文法忘れちゃうんだよな
Pythonなら半年触らないでいても書けるだろうけど

どっちもいい言語だから片方とかいわず両方やったらいい
んで使い分けたらいい

>>520
WriteLineじゃね

522 :デフォルトの名無しさん:2010/03/07(日) 16:30:28
PC初心者になんて誰も勧めてないよ。
プログラミングの初心者に勧めてるんだよ。
最初にGUIをIDEしちゃうと、ループ処理すら書けないポンコツプログラマになっちゃうんだよ。
なによりpythonは学習用言語としての実績があるし、GoogleからBitCometなんてのもPython使ってるし。

523 :デフォルトの名無しさん:2010/03/07(日) 16:33:33
BitCometはC++じゃね?本家のBitTorrentがPythonで。
いまじゃDropBoxの方が有名だけどな。
あとはバージョン管理システムで今人気の git, hg, bzr のうち二つはPythonで
書かれているとか。
C#で書くと、コマンドのレスポンスが遅くてコマンドライン派に受け入れられなさそう。

524 :デフォルトの名無しさん:2010/03/07(日) 16:34:13
そうか
じゃあとりあえず、もうしばらくPythonの勉強してみるわk
非常に参考になったから
またくるわノシ

525 :デフォルトの名無しさん:2010/03/07(日) 16:36:55
pass

526 :デフォルトの名無しさん:2010/03/07(日) 16:38:11
CとPythonどっちが良いって言い方に変えるとこんなに白熱しない不思議

527 :デフォルトの名無しさん:2010/03/07(日) 16:51:42
で、実行の速さのためにPython使ってる人がどこにいるって?
Pythonじゃ我慢できないほど遅い処理は、どうせC#でも遅いからC++で書く。

>>508
>1000のテキストファイルから正規表現で文字列検索
grep使えば。
速度なんて書いてみないと分からんが、どっちもそこまで大きな差はない気がするぞ。

>初心者にわかりやすい言語としてPython勧めるなんてどういうこと?
わかりやすくないか?
ツールにだっこにおんぶしてもらわないと簡単なGUIすら作れない人がいるような難解言語よりは。

>英語も理解出来ないとまともにプログラミングできないしね

その程度の英語すら読めないとか、バカなんじゃないの?
ていうか日本語ドキュメントもそれなりには充実してるし、ある程度以上になると英語ドキュメント当たらないといけないのは大抵の言語で一緒だろ?
日本語ドキュメントが一番詳しそうなのは、Rubyとなでしこくらいだろ。

528 :デフォルトの名無しさん:2010/03/07(日) 16:53:19
もう今日はお客さん帰ったからお開きでしてよ

529 :デフォルトの名無しさん:2010/03/07(日) 16:57:30
ていうか、もうこなくていい。
今度来たらRuby勧めてみる。

530 :デフォルトの名無しさん:2010/03/07(日) 17:10:49
オウム返しで相手の好きな奴薦めた方が早いな
どうせ話聞かないんだし

531 :デフォルトの名無しさん:2010/03/07(日) 17:13:42
Small Basicでも勧めとけばいいよ

532 :デフォルトの名無しさん:2010/03/07(日) 17:16:11
>>527
http://creators.xna.com/ja-JP

533 :デフォルトの名無しさん:2010/03/07(日) 17:27:38
20年前で知能が停止しちゃってるここの人って・・・

534 :デフォルトの名無しさん:2010/03/07(日) 17:29:46
オブジェクト指向大嫌いな俺はPythonもそれほど好きではないが、ライブラリが豊富なので使ってる。

535 :デフォルトの名無しさん:2010/03/07(日) 17:35:51
こんどはこっちで暴れてるのか
いい加減マルチするのやめれ

536 :デフォルトの名無しさん:2010/03/07(日) 17:43:28
型付けがないって
変数名にintとかstrつけちゃうわけ?
名前空間がファイルごとって
大規模な開発になったら変数名がものすごく長くなりそうw

537 :デフォルトの名無しさん:2010/03/07(日) 17:50:38
WSSecurity10WSTrust13WSSecureConversation13WSSecurityPolicy12BasicSecurityProfile10

をディスるのはやめろ

538 :デフォルトの名無しさん:2010/03/07(日) 18:02:58
>>536
変数自体に型がない。値には型がある。
C言語ではint i;という風に宣言したらiにはint型の値しか入れられないが、
pythonでは型宣言は不要でiに整数の値を入れた後に文字列の値と置き換えることもできる。
名前でどんな値を入れるか工夫するようなスタイルとは全く違うw

539 :デフォルトの名無しさん:2010/03/07(日) 18:04:19
pass

540 :デフォルトの名無しさん:2010/03/07(日) 18:09:11
>iに整数の値を入れた後に文字列の値と置き換えることもできる
動的型だからってそういう頭の悪い使い方をするのは感心できないな。

自分の場合、
インターフェース重視のプログラミングをして、行き着く先がTypeErasureみたいな黒魔術なんだったら
最初から静的型などいらぬ、ってノリだなぁ。

541 :デフォルトの名無しさん:2010/03/07(日) 18:14:03
>>538にやらせるとバグだらけだろうな

542 :デフォルトの名無しさん:2010/03/07(日) 18:15:45
>>533
kwsk

543 :デフォルトの名無しさん:2010/03/07(日) 18:16:25
静的型付けと動的型付けが混ぜられるのが理想だから、C#はわりと理想に近いんだけど、
もっとMonoにがんばってもらわないとまだPythonの置き換えにはならないな。
遠い将来にはIronPython+C#がCPython+C言語よりも便利になってるかなぁ。

544 :デフォルトの名無しさん:2010/03/07(日) 18:29:28
>>538
C#でもできますね

545 :デフォルトの名無しさん:2010/03/07(日) 18:34:50
>>541
あんたは啓蒙本の読みすぎw
もっと手動かしなさい

546 :デフォルトの名無しさん:2010/03/07(日) 18:36:04
>>540
Type Erasureって何かと思ったらboost.functionで使ってる技術なのか
確かにC++はboost.functionみたいなものを使ってようやく
C#のデリゲートに似たことが実現できる言語だからなあ

静的型でも、OCamlやHaskellだと、C++系列のnominalなsubtypingとはまた全然
違うんじゃないかな

547 :デフォルトの名無しさん:2010/03/07(日) 18:40:35
python のリファレンスマニュアル見てて糞だと思うのは
関数やメソッドのパラメータの型が判らないことにいらつく
書かれている動作の説明からどんな型のデータを渡せば良いのか推測するしかない
ちゃんとどんなオブジェクトを渡されることが期待されているのかを明記するか
サンプルソースでも付けてもらわないと結局色々試行錯誤しなきゃいけない

548 :デフォルトの名無しさん:2010/03/07(日) 18:43:35
引数も返り値もちゃんと型書いてると思うけど…

549 :デフォルトの名無しさん:2010/03/07(日) 18:46:35
Pythonで2chブラウザ作ってよw

550 :デフォルトの名無しさん:2010/03/07(日) 18:51:56
どこまでも他力本願

551 :デフォルトの名無しさん:2010/03/07(日) 18:53:26
>>549
http://www.tetteke.tk/

552 :デフォルトの名無しさん:2010/03/07(日) 18:53:26
たとえば
http://www.python.jp/doc/2.5/lib/node151.html
ここの
Parser().parsestr(s)
の戻り値が
http://www.python.jp/doc/2.5/lib/module-email.message.html
これだってすぐに気付くか?
あらかじめ知ってないと無理だろ?

553 :デフォルトの名無しさん:2010/03/07(日) 18:54:42
ファイラが作れるくらいだから2chブラウザ作るくらいなら出来るだろ。
作ったからどうする、ってなるから作らないわけで。

554 :デフォルトの名無しさん:2010/03/07(日) 18:57:17
>>552
Pythonのドキュメントがそんなによく書かれてるとは俺も思わんな

もっとも、その手のはREPLで試してdir()とかhelp()とかtype()とかやれば大抵は十分だ
まあ最後はソースだがなw

555 :デフォルトの名無しさん:2010/03/07(日) 19:02:17
そういう意味ではコメリカではともかく日本で教育用とはまだまだ言えないのか

556 :デフォルトの名無しさん:2010/03/07(日) 19:08:26
初心者用、教育用と言うには2.X系はUnicode絡みがどうにもな
3.X系でJavaや.NETと同様の方針を採ったのですっきりしたが
いずれにせよ今はタイミングが悪い

経験的にはドキュメント/仕様からのトップダウンじゃなくて
REPLで試すなりソース読むなり、手を先に動かしたほうがよっぽど早いな
Pythonの場合
付き合い方がよくも悪くもハッカー的というか

557 :デフォルトの名無しさん:2010/03/07(日) 19:25:07
>>552
Pythonのマニュアルらしい書き方じゃないか
上から順に読み物になってるからParserクラスに書かれてる説明をちゃんと理解しないとメソッドは使えない
理解したところで使っていくうちによく分からないことが積もり積もってソース見て親クラス直接触ったり自分で実装しないと痒いところまで手が届かない
urllib, urllib2おまえのことだ

558 :デフォルトの名無しさん:2010/03/07(日) 19:53:24
>>553
Python製ファイラって??

559 :デフォルトの名無しさん:2010/03/07(日) 19:57:18
>>557
不覚にもフイタ

560 :デフォルトの名無しさん:2010/03/07(日) 19:57:55
C#でできることをPythonでやるのは時間がかかるな
C#なら一行でできるようなことがPythonだと
どっかからモジュール落としてきて
英語読んで書き込まなきゃならない

勉強がてらにC#で作ったクリップボード監視するソフトを
移植しようとしたが即効で詰まったわww

一体何に使えるんだよwwこの糞言語w

561 :デフォルトの名無しさん:2010/03/07(日) 20:05:06
>もっとも、その手のはREPLで試してdir()とかhelp()とかtype()とかやれば大抵は十分だ
>まあ最後はソースだがなw

結局色々試行錯誤しなきゃいけないだろ

562 :デフォルトの名無しさん:2010/03/07(日) 20:10:55
>>560
.NETってCRC32すら入ってねえのかよwwwしんじられなあいwwww

まで読んだ

563 :デフォルトの名無しさん:2010/03/07(日) 20:12:01
cgi, urlparseも入れてやって下さい

564 :デフォルトの名無しさん:2010/03/07(日) 20:13:13
>まあ最後はソース
>試行錯誤

RubyもPythonも初心者むけじゃなくて
実際に動作させて結果を確認しながら
プログラムを書ける人むけ

565 :デフォルトの名無しさん:2010/03/07(日) 20:13:52
チュートリアル1ヶ月かけて読んだけど、
糞言語ってことだけわかった

.netに帰りますノシ

566 :デフォルトの名無しさん:2010/03/07(日) 20:15:28
自分が使いこなせないだけで糞言語認定ですかそうですか

567 :デフォルトの名無しさん:2010/03/07(日) 20:22:02
ほげ言語でもやってろよ

568 :デフォルトの名無しさん:2010/03/07(日) 20:24:48
さっさと巣に帰れw

569 :デフォルトの名無しさん:2010/03/07(日) 20:25:02
Cをやってた人間からすると、実際に動作を確かめたとしても
それが仕様なのか処理系依存なのか未定義動作なのか不安が拭えないんだけど、
そういうのはPythonではないの?
それにドキュメントに書いてないことに依存するとバージョンアップで互換性無くなりそうで怖いんだけど

570 :デフォルトの名無しさん:2010/03/07(日) 20:27:53
どんどん訳が分からなくなっていきますw

571 :デフォルトの名無しさん:2010/03/07(日) 20:30:12
こんなクソ言語に頼るしかない
マカやlinuxユーザーがかわいそうですw

あれやるにはあれインストールしろ
これやるにはこれインストールしろ

importimportimport wwwwwwwwwwww

めんどくせww

C#なら初めからオールインワン^^
何でも手軽にできちゃいます!
しかも実行速度はC++の8割ほど確保できます

572 :デフォルトの名無しさん:2010/03/07(日) 20:30:31
>>569
心配しなくても互換性なんか担保されてないし
バージョン3は思いっきりbreaking changeだ、安心しろ

573 :デフォルトの名無しさん:2010/03/07(日) 20:33:01
>それが仕様なのか処理系依存なのか未定義動作なのか不安が拭えないんだけど、
Cをやってたら分かると思う

574 :デフォルトの名無しさん:2010/03/07(日) 20:33:10
>>564
ちょっとづつ実行しながらじゃないとプログラミング組めないなんて
キャパが足りない低脳向け言語だね

575 :デフォルトの名無しさん:2010/03/07(日) 20:34:28
C#もライブラリやDLLあるだろ

576 :デフォルトの名無しさん:2010/03/07(日) 20:35:40
>>571
釣れますか

577 :デフォルトの名無しさん:2010/03/07(日) 20:35:48
>>573
彼が言いたいのは、REPLで動作確認したからいい、でいいのかってことじゃないのかな

まあ10年20年のスパンで自分のコードを活かし続けたいんなら
Pythonなんか使うな
それは間違いない

578 :デフォルトの名無しさん:2010/03/07(日) 20:41:25
ロングスパンでコードを生かしたいならCかC++あたりか。
C++とBoostとICU+どこかのGUI入れればある程度のことはできるよ。

579 :デフォルトの名無しさん:2010/03/07(日) 20:43:00
win32clipboardなんてどこにあるんだよw
どこからインストールできるんだよw
そんな情報どこにもないしw
あーめんどくせ、やめだやめだ!

こういうプログラムと関係ないところで時間かけなきゃならないって
糞面倒くさいことやってらんねーわw

それに比べてC#なら即効でチュートリアルが大量に見つかるし
何もインストールする必要がない

こうなったら極力w32APIを使わないような
リファレンスに乗ってるしょぼい関数使ったアプリを作るしかないな
あーつまんねw
まさかクリップボードすらまともに使えないとわなーw

580 :デフォルトの名無しさん:2010/03/07(日) 20:43:44
>しかも実行速度はC++の8割ほど確保できます

おまえさっきまで5割っつってただろ

581 :デフォルトの名無しさん:2010/03/07(日) 20:46:20
GCを持ってる言語は遅いよ。ないとお掃除大変だよ

582 :デフォルトの名無しさん:2010/03/07(日) 20:48:41
C#とPythonの諸刃使いたる俺への>>579の見解が聞きたい

583 :デフォルトの名無しさん:2010/03/07(日) 20:49:19
IronおっPython

584 :デフォルトの名無しさん:2010/03/07(日) 20:53:50
>>582
クリップボードはGUIライブラリについてないか
Python標準添付で無いだけで

あと両刀じゃないかと

585 :デフォルトの名無しさん:2010/03/07(日) 20:56:13
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!

586 :デフォルトの名無しさん:2010/03/07(日) 20:59:09
python製のファイラってなんて言う名前?

587 :デフォルトの名無しさん:2010/03/07(日) 21:04:03
ipython使うぐらいならC#使うわw

588 :デフォルトの名無しさん:2010/03/07(日) 21:08:01
好きにしなはれ

589 :デフォルトの名無しさん:2010/03/07(日) 21:08:21
あふをリスペクトしたっていうパイソンファイラがあったような希ガス

590 :デフォルトの名無しさん:2010/03/07(日) 21:08:47
遅レスだが、
>>552
それは若干日本語訳の問題だな。英語なら message object と書いてあって、
同じパッケージにMessageクラスであることを表現している。
日本語訳するときには「Message型のオブジェクト」とするべきだけど、
まぁ日本語化プロジェクトは人手不足なので多重チェックとかされてないから、
どうしてもこういうのが残ってしまう。
同じように「Foo型のオブジェクト」というべきところが「フーオブジェクト」と
翻訳されてしまっている部分は幾つかあるから、それが判っていれば日本語訳でも
大体なんの型なのか理解できる。

591 :デフォルトの名無しさん:2010/03/07(日) 21:09:04
>>563
cgiのFieldStorage・・・というかmod_pythonは鬼門だったなぁ

592 :デフォルトの名無しさん:2010/03/07(日) 21:10:19
>>572
互換性は担保されているよ。
アンダースコアで始まっていない物はパブリックAPIだから、いきなり無くなったり
挙動が変わったりはしない。

593 :デフォルトの名無しさん:2010/03/07(日) 21:13:28
3で
print "sdd"
とやるとエラーがでるが?

594 :デフォルトの名無しさん:2010/03/07(日) 21:16:38
でるが?

595 :デフォルトの名無しさん:2010/03/07(日) 21:16:57
ここはGoogle App Engineとか扱わないの?

596 :デフォルトの名無しさん:2010/03/07(日) 21:19:48
当店ではGAEは取り扱っておりません

こちらへどうぞ
http://gimpo.2ch.net/test/read.cgi/kinoko/1242621789/

597 :デフォルトの名無しさん:2010/03/07(日) 21:20:05
>>593
もちろん同じメジャーバージョン内での話だよ。
10年に一回くらいPythonicじゃなくなったゴミの掃除をさせてやれよ。

598 :デフォルトの名無しさん:2010/03/07(日) 21:29:42
>>584
GUIライブラリ?なにそれ?
どこにあるの?
どうやってインストールするの?

もうね、こんな初歩的なところで時間がかかるのなんて
やってらんない

599 :デフォルトの名無しさん:2010/03/07(日) 21:34:04
>>586
内骨格ってやつじゃね

600 :デフォルトの名無しさん:2010/03/07(日) 21:38:44
キチガイさんはC#の庭の中で引き篭もっててください

601 :デフォルトの名無しさん:2010/03/07(日) 21:46:30
>>598
http://sourceforge.net/projects/pywin32/

602 :デフォルトの名無しさん:2010/03/07(日) 22:01:26
pywin32っていまどきANSIなライブラリのような気がしたのだが
気のせいだっけ

603 :デフォルトの名無しさん:2010/03/07(日) 22:04:20
>>602
だいたいのAPIは、unicode文字列を渡したらW系APIを使って、str文字列を渡したらA系のAPIを使うようになってる。
引数で区別できないAPIなんかは、〜Wと〜Aの2種類あったりする。

604 :デフォルトの名無しさん:2010/03/07(日) 22:06:20
>>603
ああ、それは頑張ってるな
というか、本体のosモジュールと似た実装か

605 :デフォルトの名無しさん:2010/03/08(月) 02:01:00
python 3.1 idle

ちょっと教えてほしいんですけど
class hoge:
  def msg(self):
     print("")

このあとにインスタンス化するために
class gora(hoge):
と書きたいのだけど、クラスの定義から抜ける方法がわかりません
どうすればいいんでしょうか?

606 :デフォルトの名無しさん:2010/03/08(月) 02:09:30
    pass

607 :デフォルトの名無しさん:2010/03/08(月) 02:16:33
>>605
何も入力せずに改行したらどう?

608 :デフォルトの名無しさん:2010/03/08(月) 02:33:16
3.1って(object)とかいらないの?

609 :デフォルトの名無しさん:2010/03/08(月) 02:41:28
改行したらずっとprintの高さのままなんですが・・・
再び>>>が出るようにしないと次のコード書けないんですよね?

610 :607:2010/03/08(月) 03:01:03
>>609
うーん、俺の環境では改行で行けたんだけど。。。バックスペースもムリ?

>>608
うん、 old style class が無くなったから、 class foo: は class foo(object): と同じ意味。

611 :デフォルトの名無しさん:2010/03/08(月) 03:31:11
うまくいきました
エラーコード書いていただけでした

612 :デフォルトの名無しさん:2010/03/08(月) 12:42:04
pythonやってみた感想
簡単な数式を計算する電卓としては使える

613 :デフォルトの名無しさん:2010/03/08(月) 12:43:15
1÷2=0になる電卓をどう使うのか詳しく

614 :デフォルトの名無しさん:2010/03/08(月) 12:48:14
1.0 / 2 とする努力も工夫も無い奴に教えることなどない

615 :デフォルトの名無しさん:2010/03/08(月) 12:51:19
>>> 1/10.0
0.10000000000000001

なるほど、実に便利だ
Lispなら有理数が扱えるが、xyzzyのオマケの電卓は中置記法が使えるので
Lispを知らん人でも使いやすいぞ

616 :デフォルトの名無しさん:2010/03/08(月) 12:55:19
Pythonの有理数は組み込みじゃなくてライブラリだな。
rationalだっけ?

617 :デフォルトの名無しさん:2010/03/08(月) 12:56:55
というかlispからpythonに移行した人多いでしょ

618 :デフォルトの名無しさん:2010/03/08(月) 13:00:34
>>>x:704=640:480

これだとエラーがでる

619 :デフォルトの名無しさん:2010/03/08(月) 13:01:22
Lispはライブラリがあんまりないもんネ

620 :デフォルトの名無しさん:2010/03/08(月) 13:26:34
>>613
>>> 1/2
0
>>> from __future__ import division
>>> 1/2
0.5

621 :デフォルトの名無しさん:2010/03/08(月) 15:30:32
>>615
できるヤツはそこから二進数を学ぶ

622 :デフォルトの名無しさん:2010/03/08(月) 15:32:44
役に立たないくせに妙に教えたがりな電卓、かw

623 :デフォルトの名無しさん:2010/03/08(月) 15:52:49
凡人は凡人なりの

624 :デフォルトの名無しさん:2010/03/08(月) 16:11:12
この言語はデスクトップアプリの開発には向いてないの?
個人でちょろっとしたもの作るだけなんだけど

625 :デフォルトの名無しさん:2010/03/08(月) 16:12:44
>>624
汎用言語だから、十分向いているよ。
PyQtかwxPythonがおすすめ。

626 :デフォルトの名無しさん:2010/03/08(月) 16:26:49
rubyはWEBアプリ開発用みたいでデスクトップアプリには向いてなくて
PythonもWEBアプリ開発用として紹介されているけど
Pythonの位置づけってどういう感じなんでしょうか?

VB6.0にオブジェクト指向が追加されたものと考えていいのでしょうか?

627 :デフォルトの名無しさん:2010/03/08(月) 16:45:50
質問する奴はフシアナしろ!!!!!

628 :デフォルトの名無しさん:2010/03/08(月) 16:52:55
>>626
いやどっちも汎用言語で、別にWeb用ってわけじゃないが……
例えばASCIIのRPGツクールはRubyだしな

とは言えこの手のスクリプト言語がWebで多用されるのはそれなりに理由があって、
再コンパイル無しで多くのプラットフォームで実行できて、文字列処理が得意で、
パフォーマンスが大して重要でない(というか、ボトルネックは他にある)ことが
多いからだろう

VBとは全然別物

629 :デフォルトの名無しさん:2010/03/08(月) 16:57:58
ボトルネックって
どこ?ネット?
でも最近では重い処理もサーバでやるからネットもボトルネックにはならなくなってきたよね。
どこ?データベース?
でも分散memcacheみたいなのがあると相当早いからボトルネックにはならなくなってきたよね。
どこがボトルネックなんだろう??

630 :デフォルトの名無しさん:2010/03/08(月) 16:59:47
>>629
そうマトモに受け取られると困るがw
一般論としては、CPUとメモリの中の計算よりI/Oのほうが比べ物にならないほど
遅いでしょ
たとえそれがローカルディスクであってもだ

もちろんどれぐらいの計算をやるかによるのであって、
「大した計算は自分ではやらない」と仮定しての話だ

631 :デフォルトの名無しさん:2010/03/08(月) 17:10:48
>>630
よく考えたらpythonみたいな低速のインタプリタ言語を使うのはUI部分だけだよな。
バックグラウンドはHadoopみたいな分散処理系を使って
UI部分だけpythonみたいな使い分けが重要だな。

632 :626:2010/03/08(月) 17:11:09
簡単な言語で探しているとsmall basicが見つかりました
インテリセンスで単語候補が出たり
デザインのよいIDE、豊富なドキュメント
すぐにできるグラフィカルな処理

Pythonはこれ以上簡単なのでしょうか?

633 :デフォルトの名無しさん:2010/03/08(月) 17:12:19
>>632
とりあえずその言語で2chブラウザ書いてからまたおいで。

634 :デフォルトの名無しさん:2010/03/08(月) 17:12:52
むしろもう秋田から来るなと

635 :デフォルトの名無しさん:2010/03/08(月) 17:16:39
>>631
ttp://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e?pli=1
これを読む限りでは、googleは最近Pythonを避けつつあるようだね

Pythonはgoogleの公用語のひとつであるわけだけど、googleのように
本当に大きいプレイヤーになってくると、たとえフロントエンドで文字列の
切り貼りをさせたりデータを右から左に流すだけのアプリであっても
パフォーマンスが重要でないとはとても言えないんだろうな

636 :デフォルトの名無しさん:2010/03/08(月) 17:29:50
フロントエンドのPythonはずっと使われるだろ

637 :デフォルトの名無しさん:2010/03/08(月) 17:56:11
Pythonを避けるというより、これからのGoogleはGoを推していくんだろ

638 :デフォルトの名無しさん:2010/03/08(月) 17:57:42
Goって碁っていう意味なんだろ

639 :デフォルトの名無しさん:2010/03/08(月) 18:05:12
Pythonオワタ

640 :デフォルトの名無しさん:2010/03/08(月) 18:27:19
Pythonハジマタ

641 :デフォルトの名無しさん:2010/03/08(月) 18:30:19
tkinterをimportしてダイアログを表示するプログラムを作った場合

その機能を1つにまとめて、新しくプログラムを作るときに
一行で表示できるようにすることはできますか?

642 :デフォルトの名無しさん:2010/03/08(月) 18:39:02
GoはPython3が無いと動かないよな

643 :デフォルトの名無しさん:2010/03/08(月) 18:42:30
フロントエンドもGoogle規模になったらコンパイル型言語とPythonの速度差が
無視できなさそうだな。
でも、Google内部で使う開発支援ツール群はPythonのままだろう。

644 :デフォルトの名無しさん:2010/03/08(月) 19:22:39
2.xから3.xへの変化を見て
Pythonってノロノロ歩きでC#の辿った道を歩いているように思えるな

645 :デフォルトの名無しさん:2010/03/08(月) 19:25:39
それよりGoogleがpython高速化プロジェクトを立ち上げて欲しいな
goなんていらんからさ

646 :デフォルトの名無しさん:2010/03/08(月) 19:26:05
え?

647 :デフォルトの名無しさん:2010/03/08(月) 19:44:44
ん?

648 :デフォルトの名無しさん:2010/03/08(月) 19:44:55
Goに入らばGoに従え

649 :デフォルトの名無しさん:2010/03/08(月) 19:48:48
>>645
>>635は見たか?
なら、ここも見ようぜ
ttp://code.google.com/p/unladen-swallow/

650 :デフォルトの名無しさん:2010/03/08(月) 20:18:08
PythonのよさはWin環境でもLinux環境でも使えるところだろ。
強制インテンドはすばらしぃ

651 :デフォルトの名無しさん:2010/03/08(月) 20:21:01
でも細かいところでwindowsとlinuxは違うところがあるから
実用アプリを作ろうと思ったら環境でコードを分けることになる。
結局のところ、ある程度複雑なアプリの場合は他の言語と同じって事だ。

652 :デフォルトの名無しさん:2010/03/08(月) 20:22:10
つまりC#最高ということですね

653 :デフォルトの名無しさん:2010/03/08(月) 20:25:35
ploneの使い道がわかりません

654 :デフォルトの名無しさん:2010/03/08(月) 20:29:50
>>651
まあ同意なんだが、ネイティブバイナリとそうでない言語には結構差があると思う
早い話が、ネットワーク共有されたディレクトリに置いたプログラムコードを
ホストOSを問わずそのまま実行できるというのは、管理上ものすごく便利だ

655 :デフォルトの名無しさん:2010/03/08(月) 20:55:40
>>651
アプリケーションが複雑さと、環境依存の部分のコードの比率との間には相関がない。
だからアプリケーションが複雑になっても「他の言語と同じ」にはならない。
Mercurial, Bazaar, Dropbox, TaskCoach, etcetc... がCygwin 無しでもWindowsで動いている。

656 :デフォルトの名無しさん:2010/03/08(月) 20:58:43
a=10
def msg():
    a=1
    print (a)

msg()

これでエラーがでない言語なんて怖くて使ってられない

657 :デフォルトの名無しさん:2010/03/08(月) 21:02:32
OOあるから環境依存部分は切り替えれば済むだろ
なんのためのOOだ

658 :デフォルトの名無しさん:2010/03/08(月) 21:02:39
使わなければいいと思うよ

659 :デフォルトの名無しさん:2010/03/08(月) 21:02:54
え?何かおかしいか?

660 :デフォルトの名無しさん:2010/03/08(月) 21:04:06
>>656
global-aを生成してmsg.aを表示してるだけじゃん。

661 :デフォルトの名無しさん:2010/03/08(月) 21:06:25
>>660
そこが問題なんだよ

ローカル変数とグローバル変数が同じ変数名で定義できるなんて
恐ろしいことができてしまうなんて・・・

662 :デフォルトの名無しさん:2010/03/08(月) 21:08:15
>>656
Pythonユーザがそのコードを読むときは、msg()の中の
a=1を(set! a 1)ではなく(let ((a 1))と読むので
意図は伝わらないだろう


663 :662:2010/03/08(月) 21:09:06
と、思ったが勘違いだったか

>>661
君が使っていて、それが「できない」言語を教えて欲しい

664 :デフォルトの名無しさん:2010/03/08(月) 21:10:35
Cでもできるが

665 :デフォルトの名無しさん:2010/03/08(月) 21:21:37
俺も公式のマニュアル読んでて変数の衝突がありえる言語だと思ってる
http://www.python.jp/doc/release/tut/node11.html
9.2 Python のスコープと名前空間と9.4 いろいろな注意点が難解

666 :デフォルトの名無しさん:2010/03/08(月) 21:34:39
みんな動作確認しないの?

667 :デフォルトの名無しさん:2010/03/08(月) 21:36:01
def setAge():
 a=12
a=21
setAge():
print(a)

はわわわわ・・・・

668 :デフォルトの名無しさん:2010/03/08(月) 21:37:53
>>661
Name Hidingがある言語の方が普通だろ?
ローカルとグローバルで名前被ったらエラーとか勘弁してくれ

669 :デフォルトの名無しさん:2010/03/08(月) 21:40:12
>>667
それが はわわわ だと思ってるのはお前ぐらいだから
一年後に読み返して赤面する前に巣に帰ったほうがいいぞ

670 :デフォルトの名無しさん:2010/03/08(月) 21:41:19
>>667
動作確認してないけどこれで動くだろ
def setAge():
    global a
    a=12

a=21
setAge()
print(a)

671 :デフォルトの名無しさん:2010/03/08(月) 21:45:23
はわわ・・・直った

672 :デフォルトの名無しさん:2010/03/08(月) 21:45:49
global文ってキモいよね
Cのプラグマとか
MFCあたりで昔多用されていたUSES_CONVERSIONマクロみたいに見える
もちろん意味も役割も全然別物だが

673 :デフォルトの名無しさん:2010/03/08(月) 21:46:14
>>670
そうすりゃできるのはわかっているが
グローバルとローカルが
ソースの見た目上明確に区別されてないなんて・・・

674 :デフォルトの名無しさん:2010/03/08(月) 21:47:01
大文字でも使っときなさいよ

675 :デフォルトの名無しさん:2010/03/08(月) 21:48:21
>>673
いやあんた、Cでもグローバルとローカルの区別は
関数の中で定義したかどうか、そんだけだべ

676 :デフォルトの名無しさん:2010/03/08(月) 22:03:04
うーむ、値だけを保持したメソッドのないクラスは作れないのか・・・

677 :デフォルトの名無しさん:2010/03/08(月) 22:03:42
超マイナーな商用科学計算ソフトだけどPythonのラッパーが用意されていたことに感動した

678 :デフォルトの名無しさん:2010/03/08(月) 22:11:39
>>676
2.6からだけど、namedtupleとかじゃダメかな?

679 :デフォルトの名無しさん:2010/03/08(月) 22:22:22
>>673
def setAge() {
 a=12
}
a=21
setAge():
print(a)

こうしたらどう?
一応インデントで明確に区別されてるのよ
まぁ Perl の my とか JavaScript の var 的なものが欲しいと思うことはあるけどね


680 :デフォルトの名無しさん:2010/03/08(月) 22:33:34
そのsetAge()の例は、Pythonの仕様を理解してしまえば特に困ることはないよ
困るのは、以下のような単純なケース

bar = 123
  :
  :
var = 456 # barのつもりだった


681 :デフォルトの名無しさん:2010/03/08(月) 22:40:23
それって、もしかしてvarやmyの必要性を訴えてるの?
varやmyを付け忘れて意図せずグローバル変数にアクセスするバグのほうが遥かに確率高いと思うんだが

682 :デフォルトの名無しさん:2010/03/08(月) 22:41:48
>>681
PerlやJavaScriptのように、varやmyを「つけなくてもいい」、
「つけなければグローバルになる」言語ではそうだね


683 :デフォルトの名無しさん:2010/03/08(月) 22:42:00
つ単体テスト

684 :デフォルトの名無しさん:2010/03/08(月) 22:48:45
静的型な人間は、コンパイル時に処理系にエラーが早期摘出されるほうが
いいに決まっていると考えるし
動的型な人間は、どうせ単体テストは必要なのだから同じだと考える

両者が相いれることは無いだろうな

685 :デフォルトの名無しさん:2010/03/08(月) 22:51:54
仕事だと静的で単体テストって感じが好き

686 :デフォルトの名無しさん:2010/03/08(月) 23:04:23
はわわ・・・・・・

def msgShow():
    class Tako:
       def msgShow(self,msg):
             print( msg)

    Ika=Tako()
    Ika.msgShow("oreIka")

    def msgShow():    ←ここは何?
        print("CanITalk?")

msgShow()

>>>oreIka

msgShow().msgShow()

error

687 :デフォルトの名無しさん:2010/03/08(月) 23:14:21
>>686
msgShow()内で使えるmsgShow()関数

688 :デフォルトの名無しさん:2010/03/08(月) 23:18:00
def f():
  pass
f.a = 'Hello'
print f.a

689 :デフォルトの名無しさん:2010/03/08(月) 23:23:31
>>688
何でクラスにしないの?

690 :デフォルトの名無しさん:2010/03/08(月) 23:25:31
あ、なるほど

691 :デフォルトの名無しさん:2010/03/08(月) 23:27:07
class hoge(object):
def f(self):
pass
def a(self):
return "hello"

c = hoge()
print c.a()

692 :デフォルトの名無しさん:2010/03/08(月) 23:27:44
>>656
C使うな

693 :デフォルトの名無しさん:2010/03/08(月) 23:30:37
def f():print'a'
f()
f.__call__()
def g():print'b'
f.__call__, g.__call__ = g.__call__, f.__call__
f()
f.__call__()
del f.__call__
f.__call__()

なんかワクワクしてきた

694 :デフォルトの名無しさん:2010/03/08(月) 23:32:09
うにゅ〜字下げされていないとわけわからんw

695 :デフォルトの名無しさん:2010/03/09(火) 01:46:34
おいおい・・・まじかよ・・・・

x=1000
def mymoneyis():
return x*2

money=mymoneyis()
print str(money)+"en"

696 :デフォルトの名無しさん:2010/03/09(火) 02:05:10
それのどこが問題なのかはっきり言えよ

697 :デフォルトの名無しさん:2010/03/09(火) 02:11:16
グローバルと宣言しなくてもグローバル変数として
処理しちゃってるじゃん・・・

698 :デフォルトの名無しさん:2010/03/09(火) 02:13:10
えっ

699 :デフォルトの名無しさん:2010/03/09(火) 02:22:10
そういえば初めの頃俺もそれで迷ったことが有った。
今はなんとも思わんけど。

700 :デフォルトの名無しさん:2010/03/09(火) 02:25:44
いちいちモジュールもglobal宣言すんのか

701 :デフォルトの名無しさん:2010/03/09(火) 02:29:02
global文なんてあんまり使わないと思うけどなあ。なんのための関数なんだよ、と

702 :デフォルトの名無しさん:2010/03/09(火) 04:14:22
まずチュートリアルで勉強したからglobalでは迷わなかった。

703 :デフォルトの名無しさん:2010/03/09(火) 04:24:35
確かに不思議仕様だが、実に合理的な素敵仕様でもある。

書き込み時にglobal宣言しなければならないのは、
globalで同じ名前の変数が宣言されていることを知らずにglobalに上書きしてしまうのを防ぐため。
というか、プログラマは自分が見たくも触りたくないglobal変数については、そもそも知っている必要がない。

あるいは、globalを作る人が、別の関数で既に使われている名前の変数を作ってしまっても問題にならないように。
これも、プログラマは関数の内部でどんなローカル変数が使われているかなんて、知っている必要がない。

ローカル変数を明示的に宣言する文法にしてもよかったのだけど、
globalに書き込む必要があるときよりも、ローカル変数だけで済ませられるケースの方が圧倒的に多いので、
特別な処理が必要な場合にだけ、わざわざ宣言しなければならない。


読み込み時にglobal宣言しなくてもよいのは、
プログラマは自分の作っている関数については把握しているべきだし、
そしたら、ローカルで宣言していない変数を読んでいることはプログラマ自身が自覚しているはずだから。

わざわざ明示しなくても、スコープ内にない変数を読んでいるのは外のスコープにあるからに決まっている。
だから、わざわざ明示する必要はない。

704 :デフォルトの名無しさん:2010/03/09(火) 04:35:35
別の言語なら、なんたらかんたらが1行でとか言ってる奴に言いたい。
pythonならローカルCGIサーバが1行で立てられる。
多分、そんなことできる言語、他にあんまりない。

けど、1行で書けるなんてのは、偶然用意されてるライブラリに偶然やりたい処理があるってだけだ。
ちょうどその機能だけを使いたいのなら、その言語を使えばいいさ。
Python大好きな俺だって、ちょうど別言語で1行でできる処理をやりたくて、それを今後拡張する意志もなかったら、別言語使うさ。

言語のよさってのは、1行でできない処理を書くときにどれだけ楽に書けるかで決まる。
その答えがPythonかどうかは分からないが、1行で書けるからこっちの言語のが偉いとか言うのは馬鹿げている。

705 :デフォルトの名無しさん:2010/03/09(火) 06:26:31
>>703
つまり、プログラマはクラスの内部も
関数の内部も把握してプログラミングしなければいけないということですね
それって小規模ならいいが規模が大きくなるほどものすごく大変な作業
テレビの内部構造を理解していないとリモコンもおちおち触れないなんて
ものすごい言語ですね

どの関数が勝手にグローバルの関数や変数の値を
拾っていったか探しながら、気をつけながらやらなければいけないなんて・・・

706 :デフォルトの名無しさん:2010/03/09(火) 06:33:31
君の使ってる言語のある関数は内部であんなことやこんなことをしているかもしれないぞ
そういう物騒なことをしないと担保するものは何か考えたらよろし

707 :デフォルトの名無しさん:2010/03/09(火) 06:41:06
その場合はコンパイラがエラーを吐いてくれる
Pythonの恐ろしいのはエラーを吐かないこと

708 :デフォルトの名無しさん:2010/03/09(火) 08:10:54
標準出力に吐きますが?

709 :デフォルトの名無しさん:2010/03/09(火) 08:42:23
>>705
どの関数がグローバル変数を書き換えるか、にくらべると、
どの関数がグローバル変数をひろったか、は重要じゃないから
合理的だろ。

だいたい、Pythonにとってはクラスも関数もモジュールもグローバル変数だ。
import os
def foo(): pass
def bar():
    global os
    os.listdir('.')
    global foo
    foo()

なんていちいち必要だなんてゾッとする

710 :デフォルトの名無しさん:2010/03/09(火) 08:49:37
global変数なんて使わなきゃいいだけや。


711 :デフォルトの名無しさん:2010/03/09(火) 09:15:47
たくさん使ってメモリ産業に貢献しなさい

712 :デフォルトの名無しさん:2010/03/09(火) 09:57:54
global変数って何ですか?

713 :デフォルトの名無しさん:2010/03/09(火) 10:28:54
静的型言語の構文が魔法みたいに実装者の意図しない挙動を防いでくれるって思ってるのが若干一名いるな

714 :デフォルトの名無しさん:2010/03/09(火) 12:52:24
すべてpublicでどこからもアクセスできるのが問題
しかも型宣言もないから意図しない動きをする
プログラムのどこからでも書き換えられる危険性があるなんて
やってられないわ

715 :デフォルトの名無しさん:2010/03/09(火) 13:02:25
どんまい

716 :デフォルトの名無しさん:2010/03/09(火) 13:06:32
プロパティもないしな
いちいちメソッドでアクセスなんてめんどくせ

717 :デフォルトの名無しさん:2010/03/09(火) 13:10:35
__

718 :デフォルトの名無しさん:2010/03/09(火) 13:28:53
C#4.0についていけそうにないからってPythonスレに来てわめきちらすのはやめてほしいです

719 :デフォルトの名無しさん:2010/03/09(火) 14:33:26
property()も知らないとか
型宣言あっても誤動作上等だし
ダックタイプ最高!!!
硬いだけが売りの言語とかゴミですwwww

720 :デフォルトの名無しさん:2010/03/09(火) 14:41:50
>>716
あるよw

721 :デフォルトの名無しさん:2010/03/09(火) 14:42:33
>>714
アクセス制御できるよw

722 :デフォルトの名無しさん:2010/03/09(火) 14:43:08
@property
def x(self):
  return self.__x
@x.setter
def x(self, value):
  self.__x = value

723 :デフォルトの名無しさん:2010/03/09(火) 14:53:58
最近使いだしたデコレータ

724 :デフォルトの名無しさん:2010/03/09(火) 14:58:15
デコレータは美しくないから嫌い
言語の構文はごくシンプルな少数のパーツから構成されるべきだと思う

725 :デフォルトの名無しさん:2010/03/09(火) 15:03:08
うーん、確かにデコレータはRubyのブロックみたいに
「これ一つあればなんでもできるよ」って感じのオールインワン臭がするから、
見ようによっては微妙なのかもしれないね。

726 :デフォルトの名無しさん:2010/03/09(火) 15:06:35
なんかさ、どの言語も満足できない・・・
俺言語作っちまうか。

727 :デフォルトの名無しさん:2010/03/09(火) 15:08:39
どの言語も満足できないからLispでいいや

728 :デフォルトの名無しさん:2010/03/09(火) 15:11:33
俺も趣味プログラマだから
schemeでいいや
楽しいし

729 :デフォルトの名無しさん:2010/03/09(火) 15:13:40
面接官「Lisp・・・ふははっ!Lisp!」

面接官「Lispやってるんですか?wwwww」

http://anond.hatelabo.jp/20100125020240

730 :デフォルトの名無しさん:2010/03/09(火) 15:14:56
Lispなめんなよ
リストしか無いんだぜ

731 :デフォルトの名無しさん:2010/03/09(火) 15:18:01
俺ホワイトスペースでいいや

732 :デフォルトの名無しさん:2010/03/09(火) 15:19:34
Lispはlinuxでしかまともに使えない

733 :デフォルトの名無しさん:2010/03/09(火) 15:30:59
Lisp・・・ニヤニヤ

734 :デフォルトの名無しさん:2010/03/09(火) 15:33:02
おっと、Lisp vs Python戦争勃発か

735 :デフォルトの名無しさん:2010/03/09(火) 16:45:19
Prologも入れて下さい×


736 :デフォルトの名無しさん:2010/03/09(火) 16:46:10
まあ正直Prologさんは孤高すぎて勝てる気がしない
何気に影響力あるし

737 :デフォルトの名無しさん:2010/03/09(火) 16:48:00
言語オタやRuby厨を排除するために、クラウドの話でもしようぜ!

738 :デフォルトの名無しさん:2010/03/09(火) 16:55:42
クラウドといえばerlangだろ

739 :デフォルトの名無しさん:2010/03/09(火) 17:04:43
時代はπ計算ですか

740 :デフォルトの名無しさん:2010/03/09(火) 17:08:53
実はパイ計算流行らせてるのは俺

741 :デフォルトの名無しさん:2010/03/09(火) 17:09:43
またruby厨が自演してるのか

742 :デフォルトの名無しさん:2010/03/09(火) 18:06:15
Smalltalk

743 :デフォルトの名無しさん:2010/03/09(火) 18:10:30
もうJavaScriptでいいよ

744 :デフォルトの名無しさん:2010/03/09(火) 18:37:33
でいいってなんだよ

745 :デフォルトの名無しさん:2010/03/09(火) 19:08:05
もうJavaScriptがいいよ

746 :デフォルトの名無しさん:2010/03/09(火) 19:16:04
ラッパ作るなんて面倒臭いことせずに
どの言語からでも呼び出せるライブラリ仕様ができたらいいのに

747 :デフォルトの名無しさん:2010/03/09(火) 19:26:56
>>746
JVMとかCLRはわりとそんな感じじゃないか

748 :デフォルトの名無しさん:2010/03/09(火) 21:35:57
Parrot

749 :デフォルトの名無しさん:2010/03/09(火) 21:51:03
腐ってやがる、遅すぎたんだ。>Python3

750 :デフォルトの名無しさん:2010/03/09(火) 22:13:53
腐ってんの?

751 :デフォルトの名無しさん:2010/03/09(火) 22:36:29
きもちわるいなー


752 :デフォルトの名無しさん:2010/03/09(火) 22:39:40
なんでidでないんだここ

753 :デフォルトの名無しさん:2010/03/09(火) 22:50:41
IDないから書き込めるんじゃないか。

754 :デフォルトの名無しさん:2010/03/09(火) 23:00:09
定期的に基地外が現れるから困る

755 :デフォルトの名無しさん:2010/03/09(火) 23:45:05
きょうはここだったか

756 :デフォルトの名無しさん:2010/03/09(火) 23:46:15
>>754
自演だろ

757 :デフォルトの名無しさん:2010/03/10(水) 01:34:03
>>705
規模が大きくなっても、クラスや関数を分けないのならそうなる。
Pythonは簡単な言語だが、どうしようもない馬鹿のための言語ではない。

758 :デフォルトの名無しさん:2010/03/10(水) 01:40:23
OOじゃない関数型のelispはclassname-action-about-localname みたいな
伝統だけで棲み分けがなされててある意味すごい

まあ、たまに同名の関数作る人がいて衝突してるが

759 :デフォルトの名無しさん:2010/03/10(水) 01:42:20
関数ってwまだこんな言語やっているやついるんだなw

760 :デフォルトの名無しさん:2010/03/10(水) 01:55:01
Pythonはデータ構造が貧弱だな

761 :デフォルトの名無しさん:2010/03/10(水) 02:21:17
list, dict, set, deque, heapqの他に何が欲しいの

762 :デフォルトの名無しさん:2010/03/10(水) 02:35:39
>>759
emacsユーザーは避けて通れないの

763 :デフォルトの名無しさん:2010/03/10(水) 10:58:42
>>761
タプルとクロージャ!

764 :デフォルトの名無しさん:2010/03/10(水) 11:00:04
>>761
肝心要の関数的consリストと末尾最適化が無い

765 :デフォルトの名無しさん:2010/03/10(水) 11:02:00
pyLINQ
なんてないすか

766 :デフォルトの名無しさん:2010/03/10(水) 11:10:09
末尾最適化ってデータ構造なのか

767 :デフォルトの名無しさん:2010/03/10(水) 11:20:20
>>766
違うが、consリスト「だけ」あっても意味が無いからな

768 :デフォルトの名無しさん:2010/03/10(水) 11:25:49
もうだめだこのスレ

769 :デフォルトの名無しさん:2010/03/10(水) 11:27:34
私女子中学生だけど
このスレきもちわるい

770 :デフォルトの名無しさん:2010/03/10(水) 13:12:01
>>761
代数的データ型が無いのは致命的だな

771 :デフォルトの名無しさん:2010/03/10(水) 13:12:43
>>769
ここ女人禁制なんで出ていってください

772 :395:2010/03/10(水) 13:15:56
女子中学生はまだ女になってないだろ

773 :デフォルトの名無しさん:2010/03/10(水) 13:20:15
>>770
代数的データ型ってなんぞ?
Rational型みたいに、演算子オーバーロードした値型を作るのじゃだめなん?

774 :デフォルトの名無しさん:2010/03/10(水) 13:22:20
>>773
ダメダメ、全然ダメだ
Haskellの代数的データ型が強力すぎるのかもしれないが。

775 :デフォルトの名無しさん:2010/03/10(水) 13:29:10
>>774
代数っていうから演算子による演算が定義されることかと思ったよ。

さくっとWikipediaを読んで、動的型付け言語には向かない機能だと思った。
オブジェクト指向的なメソッドのオーバーライドで解決するのに比べて、
新しい機能を取り込む明確なメリットがある?
メリットが判りやすい例を示して。現在のPythonicな方法と比べて、明らかな
メリットがあるんだったら Python idea で提案できるから。

776 :デフォルトの名無しさん:2010/03/10(水) 13:57:34
>>770ではないが

代数的データ型はパターンマッチ&再帰的アルゴリズムとの合わせ技で
初めて力を発揮するもんだと思うが
リストや木のような再帰的データ構造を表現するのが非常に得意で
当然再帰的アルゴリズムとの相性が良い
Haskellでコンパイラのようなものが書きやすいといわれる所以だろうな

パターンマッチでは、大雑把に言えば
subtypingによるポリモーフィズムを使わず
Pythonで言えばisinstance()で分岐させる形になる
そんだけ取れば泥臭いんだが、帰納的で、形式として数学表記に近い形になる

別に静的型じゃなきゃ意味が無いってことは無いんじゃないのかな
Lispみたいになんでもリストってんじゃなくて
Pythonは動的だが型付けはむしろ強い言語なのだしな

777 :デフォルトの名無しさん:2010/03/10(水) 14:12:17
>>776
うーん、頻繁にほしいわけではないし、辞書を使って関数を区別するなり
クラスにメソッドを後付するなりデコレータを使うなりで解決できる問題だから、
構文レベルでサポートはしないだろうな。

検索したらPythonで実装した例が見つかった。
http://www.python.jp/pipermail/python-ml-jp/2009-January/004575.html

Python3では関数アノテーションが入ったから、これを使ってもっと使いやすい
代数的データ型用ライブラリができるかも。
まだ関数アノテーションになる前、型アノテーションと呼ばれていたころの
議論があった。
http://mail.python.org/pipermail/python-3000/2006-May/002117.html

778 :デフォルトの名無しさん:2010/03/10(水) 14:16:39
あれもこれも取り込んでダイナソー化して身動き取れなくなるのはいやだ
「あれがないじゃんプギャー」って言う人には理解できないんだろうが

779 :デフォルトの名無しさん:2010/03/10(水) 14:23:19
Wikipediaにあった例を試しに実装してみた。
冗長だけど、やっぱり構文の構成要素を増やしてまでほしい機能じゃないな。
from collections import namedtuple

Empty = namedtuple("Empty", "")
Leaf = namedtuple("Leaf", "n")
Node = namedtuple("Node", "l r")

def depth(tree):
    if isinstance(tree, Empty): return 0
    if isinstance(tree, Leaf): return 1
    if isinstance(tree, Node):
        return 1 + max(depth(tree.l), depth(tree.r))

print depth(Node(
                Node(
                    Leaf(1),
                    Leaf(2)
                    ),
                Leaf(3)
                ))

print depth(Empty())


780 :デフォルトの名無しさん:2010/03/10(水) 14:25:18
Pythonって宣言型言語の影響は強くないし
取り込んでもしっくりこないからいらないね

781 :デフォルトの名無しさん:2010/03/10(水) 14:28:07
コード貼るならリザルトも貼ってよ
インデント直すの面倒なんだよ

782 :デフォルトの名無しさん:2010/03/10(水) 14:30:16
OO的に実装するとこういう感じか。
データ構造と操作を分けたいならvisitorパターンになってより長くなるな。

class TreeNode(object):
    def depth(self):
        raise NotImplementedError()

class Empty(object):
    def depth(self):
        return 0

class Node(object):
    def __init__(self, l, r):
        self.l = l
        self.r = r
    def depth(self):
        return 1 + max(self.l.depth(), self.r.depth())

class Leaf(object):
    def __init__(self, n):
        self.n = n
    def depth(self):
        return 1

print Node(Node(Leaf(1), Leaf(2)), Leaf(3)).depth()
print Empty().depth()


783 :779, 782:2010/03/10(水) 14:31:16
>>781
あー、インデントは変換してから書き込んでるんだけど、一応結果はどっちも
3
0
ね。

784 :782:2010/03/10(水) 14:32:29
うぉ、 >>782 で継承するの忘れた。
ダックタイピングだから忘れてても動くんだな。

785 :デフォルトの名無しさん:2010/03/10(水) 15:31:51
これは酷い
http://codepad.org/cYZ5SaBZ

786 :782:2010/03/10(水) 16:09:12
>>785
面白いじゃん

787 :デフォルトの名無しさん:2010/03/10(水) 23:48:44
文字列扱いなのが残念だけど、文法として定義されてない以上無理なんだよね。
もう少しHaskellっぽいパターンマッチとか取り込んでくれると面白いんだけど、
既存のクラス型とうまいことマッチしないか。

788 :デフォルトの名無しさん:2010/03/11(木) 00:03:17
やはり自由度の高さではC#だな

789 :デフォルトの名無しさん:2010/03/11(木) 00:25:30
いい加減その荒らしは飽きた。
Pythonしか荒らさないあたり、実は中身はRuby信者なんじゃないかと穿った見方をしてしまう。

790 :デフォルトの名無しさん:2010/03/11(木) 00:26:56
C#であぼんするぞ
汚すなよ

791 :デフォルトの名無しさん:2010/03/11(木) 00:27:02
>>787
すでに >>782>>779 みたいにして同じことが実現できるから、滅多に使わない
方法をちょっとカッコ良く書くためだけに構文の追加はムリだろうね。

792 :デフォルトの名無しさん:2010/03/11(木) 00:49:36
ちょっとかっこよく書くための方法がダメなんだったら
デコレータとか導入してないと思うが

793 :デフォルトの名無しさん:2010/03/11(木) 00:54:27
>>792
デコレータはすごく広く使える一般的な仕組みで、利用場面が多い。
それに比べると代数的データ型は訴求力が弱い

794 :デフォルトの名無しさん:2010/03/11(木) 01:21:58
>>792,793
代数的データ型は単なる便利機能じゃないよ。
その言語の型システムの基盤となるようなものだよ。

だからこそ、Pythonに入るとも入れるべきとも思わないけど。

795 :デフォルトの名無しさん:2010/03/11(木) 01:53:26
文字列処理だけperlにまかせるpythonプログラミングスタイルってないのかな
perlのモジュールをpythonで制御するような感じ

796 :793=791:2010/03/11(木) 01:55:14
>>794
Haskellとかにとってはそうなのかもしれないけど、すでに動的型付けOO言語としての
型システムを持っているPythonで後付の代数的データ型を追加するとしたら、
>>779みたいなコードと等価なコードを簡潔に書くための単なる便利機能にしかならないよね。

797 :デフォルトの名無しさん:2010/03/11(木) 01:59:47
>>795
正規表現とかいうPythonicから程遠い代物よりも
パーサコンビネータっぽいものが綺麗に書けると嬉しいんだけど

798 :デフォルトの名無しさん:2010/03/11(木) 02:14:23
マルチパラダイムでどんな書き方しても同じ速度でライブラリが豊富でexe吐ける言語があれば言うこと無し

799 :デフォルトの名無しさん:2010/03/11(木) 02:47:06
C

800 :デフォルトの名無しさん:2010/03/11(木) 02:57:32
文字列処理ならRubyでOK

801 :デフォルトの名無しさん:2010/03/11(木) 03:00:41
>>798
マルチパラダイムはできたとしても、どんな書き方しても同じ速度は無理だな。
.NETみたいに、一つの言語にとらわれずに、多数の言語から同一の中間コードを生成するってのが、現実的かなぁ。

802 :デフォルトの名無しさん:2010/03/11(木) 08:16:14
>>800
簡単な書き捨てテキストフィルタなら実際Rubyで良いな
ただ大きなコードはRubyで書きたくないなあんまり

803 :デフォルトの名無しさん:2010/03/11(木) 09:21:53
大きなコードはやっぱPerlだよな

804 :デフォルトの名無しさん:2010/03/11(木) 14:45:51
それは指定されたら書くけどさ…

805 :デフォルトの名無しさん:2010/03/11(木) 15:20:37
数値計算、グラフ描画はpythonが一番楽
テキスト処理とwebはperl
数式処理とか複雑なのはlisp

問題はこれらをうまくくっつける方法がないこと

806 :デフォルトの名無しさん:2010/03/11(木) 15:24:29
>>805
何いってんの、数値計算・グラフ描画はR最強なのは揺ぎ無いだろ。

807 :デフォルトの名無しさん:2010/03/11(木) 15:25:20
数式処理もRかMathematicaだな。

808 :デフォルトの名無しさん:2010/03/11(木) 15:27:47
pythonってテキスト処理に向かないの?

809 :デフォルトの名無しさん:2010/03/11(木) 15:38:42
Perlは6が出たら死に絶える言語

810 :デフォルトの名無しさん:2010/03/11(木) 15:39:54
全部Assembleすればいいじゃん。

811 :デフォルトの名無しさん:2010/03/11(木) 15:44:11
Rの数式処理関連のライブラリ数は尋常じゃないからな

812 :デフォルトの名無しさん:2010/03/11(木) 18:45:13
>>808
正規表現リテラルがなかったり、Rubyにあるような文字列内で #{} で文字列の展開がないのは寂しいと感じるな。
#{} は便利だから取り入れてほしい。ちゃんと括弧内に式がかけるような感じで。
本格的なPythonプログラマは嫌がるのかもしれないけど

813 :デフォルトの名無しさん:2010/03/11(木) 19:49:06
"foo"[0]の型がstrなのは違和感がある
(3.Xのbytesではb"foo"[0] -> 116だが、strは相変わらずで統一性がない)

せっかく文字列がシークエンスなのだから、シークエンスに対する高階関数や
内包表記が文字列に対しても統一的に便利に使えて欲しかった

sum(["a","b"],"")→エラー
map(lambda x: x.upper(), "this")→['T','H','I','S'] # "THIS"ならいいのに
str(x.upper() for x in "help") # 望みのものは得られない

もちろん''.join(....)で逃げられるけど、あまり美しくない

814 :デフォルトの名無しさん:2010/03/11(木) 19:50:59
お前の身勝手な「違和感」で勝手に型変換しないでくれよ。

815 :デフォルトの名無しさん:2010/03/11(木) 19:53:28
>>> '\\'
'\\'
>>> print '\\'
\
↑この差はなんなんだ?どうにかなんないのか

816 :デフォルトの名無しさん:2010/03/11(木) 19:54:33
>>814
型変換って?
シークエンスに対して__getitem__を呼ぶと、str以外ではシークエンスではなく
シークエンスの要素が得られる
strの場合は、意味的に要素ではなく、シークエンスのスライスが得られるわけで
そこに違和感がある

mapも、入力と出力のシークエンスが対応するようになっていると便利だったろう
という話
まあジェネレータも受け入れる関係で無理なのだろうけれども

817 :デフォルトの名無しさん:2010/03/11(木) 19:58:07
もうこのスレは気持ち悪いね。

818 :デフォルトの名無しさん:2010/03/11(木) 20:15:34
>>816
>strの場合は、意味的に要素ではなく、シークエンスのスライスが得られるわけで

それもお前の身勝手な「違和感」が生み出す「意味」じゃないのか(www

819 :デフォルトの名無しさん:2010/03/11(木) 20:22:13
>>818
うん、身勝手かもしれないし、よくわからないのでPythonユーザとして
素人にstrのことを教えてほしい

「strはシークエンスである」→真
「strはXのシークエンスである」→?
「strはstrのシークエンスである」→?

最後のものは自己言及のループになってしまうので、strの定義としては
採用できないように見える

820 :デフォルトの名無しさん:2010/03/11(木) 20:25:14
>>819
str は 文字 のシーケンスである
文字とは長さが1の文字列である

821 :デフォルトの名無しさん:2010/03/11(木) 20:27:30
>>820
多分そうなるんだろうと思うが、
2行目の「文字列」とは、つまりstrのことだよね
そのstrをどうやって解決するの?

822 :デフォルトの名無しさん:2010/03/11(木) 20:27:53
>>815
なにに混乱しているのか判らないけど、
>>> print repr('\\')
してから、 repr() と str() の違いをリファレンスで確認したら良いと思うよ。

インタラクティブシェルで表示しているのは str() じゃなくて repr() だからね。
そうじゃないと、 '3' と 3 の区別がつかない。

823 :デフォルトの名無しさん:2010/03/11(木) 20:31:06
>>821
解決って何?何でそんなことする必要があるの?
例えば「文字列は文字の配列である」という言語があったとしたら、
文字はどうやって解決するの?

824 :デフォルトの名無しさん:2010/03/11(木) 20:34:29
>>823
その定義は全然ループしていないし、文字は文字列とは別ものだから、
単に別のところで定義されるのでは?

上の例だと、strの定義としてはループしているだけで何も解決されないよね

825 :デフォルトの名無しさん:2010/03/11(木) 20:35:14
>>812
変数展開は何度も出てるけど、コンパイル時に分解する仕様だと
gettextみたいに動的な文字列に対しては使えないから、限定した状況で
のみ使える仕様を増やすよりも汎用的に使える機能一つで色々カバーする
という方針のPythonでは受け入れられないんだよね。
代わりに、 .format() と template が入った。

826 :デフォルトの名無しさん:2010/03/11(木) 20:37:42
>>812
つTempita

827 :デフォルトの名無しさん:2010/03/11(木) 20:38:21
strは長さ1のstrのシークエンスである
→strは長さ1の(長さ1のstrのシークエンス)のシークエンスである
→strは長さ1の(長さ1の(長さ1のstrのシークエンス)のシークエンス)のシークエンスである


本当にこんな定義なの?
変な言語だね
まあ「身勝手な」感覚なんだろうけど

828 :デフォルトの名無しさん:2010/03/11(木) 20:39:48
>>822
thx やってみる

829 :デフォルトの名無しさん:2010/03/11(木) 20:45:24
>>824
たぶん、"シーケンス"を誤解しているから違和感があるんだと思う。
シーケンスとは、イテレート、要素の取り出し、スライス, といった幾つかの操作が定義されて
いる事を言っているのであって、配列型という意味はないし、「要素型」も要求していない。
だから、「YはXのシーケンスです」という言及ができる型もあるけれど、それはYの定義ではない。

整数型が単独で整数型であるように、文字列型は単独で文字列型なの。

830 :デフォルトの名無しさん:2010/03/11(木) 20:46:55
まあC言語にも、関数はいくらでもデリファレンスできるという愉快な仕様があるし、
そんな点のひとつやふたつはどんな言語にもある。

831 :デフォルトの名無しさん:2010/03/11(木) 20:47:30
print r'\\'

832 :デフォルトの名無しさん:2010/03/11(木) 20:48:24
Cにはlongjumpもあるぜ

833 :デフォルトの名無しさん:2010/03/11(木) 21:04:07
>>831
ごめん、説明が足りなかった やりたいのはその逆なんだ
\単体を文字列として(つまり'\'みたいなのを表現したい)扱いたいんだが無理かな

834 :デフォルトの名無しさん:2010/03/11(木) 21:11:14
>>833
なら、 "\\" で \ が一つの文字列だよ。 repr すると \ がエスケープされて \\ と表示されるだけ。

835 :デフォルトの名無しさん:2010/03/11(木) 21:15:36
>>813
map()はともかく、sum()とstr()は違和感ないけどなあ。

sum()は__add__を要素の数だけ呼び出すから、n ** 2の実行時間なってしまう
-> 言語仕様で禁止しちゃえ、だろうし。

str()は引数としてオブジェクトを受け取るんだから、
str(1)が'1'で、str(['a', 'b'])が"['a', 'b']"でいい。これが'ab'になるのは変な感じ。

list()やtuple()は引数としてシーケンス(というかiterable)を取るんだから、
list(1)はエラー。list([1, 2])は[1, 2]。

836 :デフォルトの名無しさん:2010/03/11(木) 21:25:27
こんなところで言語議論かと思ったら基本ができてない質問の話だったでござる

837 :デフォルトの名無しさん:2010/03/11(木) 21:27:16
>>835
''.join()を使ったほうが速いので、それを使って欲しいという「気持ち」は
理解できるのだけれども、シークエンスのジェネリシティが今一歩な感じで
勿体無く見える

sum([[1,2,3],[4]],[]) → これはOK
reduce(operator.add, ["a", "b"], "") → これもOK

関係ないけど2.6のbytesはただのstrのtypedefですか?
bytes([1,2,3])
→'[1, 2, 3, 4]'
3.Xだと
b\'x01\x02\x03\x04'
になってくれる模様

Python難シス

838 :デフォルトの名無しさん:2010/03/11(木) 21:27:26
map(str.isalpha, "this") が "TrueTrueTrueTrue" だったらおかしいと思うが

839 :デフォルトの名無しさん:2010/03/11(木) 21:29:52
>>837
>>> bytes is str
True
>>> bytearray([1, 2, 3])
bytearray(b'\x01\x02\x03')

840 :デフォルトの名無しさん:2010/03/11(木) 21:31:11
>>838
そうすね
第一引数が型を保たない変換である場合は、止むを得ないと思う

841 :デフォルトの名無しさん:2010/03/11(木) 21:44:05
>>837
実行時間のオーダーが変わる場合には違うものとみなす、というか、
見た目の統一感を壊してでも速いのを用意するというのがPython流だと思う。

たとえば、
a.extend(seq)の代わりにmap(a.append, seq)と書くようにすれば、
list.extendは不要。でも前者の実行時間はn log n、後者はn。


842 :デフォルトの名無しさん:2010/03/11(木) 21:51:32
Python2 ではまだ bytes = str を文字列として動かさないといけないけど、
Python3 では完全にバイト列と文字列を区別するようになったから、
bytes の挙動を変えたんだよな。
Python2 がごちゃごちゃしてしまったのは、 unicode が後付けだから
仕方無い面もある。

843 :デフォルトの名無しさん:2010/03/11(木) 21:56:24
そもそも、 sum() は数値型の合計を求める関数だから、
リストやタプルを入れるのも良くないんだよな。
明示的にチェックしてrejectしているのが文字列型というだけで。

844 :デフォルトの名無しさん:2010/03/11(木) 22:08:45
だめだわかんね
print使わずにブログラム中に'\\'と記述しても、そのまま'\\'として処理されるのはなんでだろ

845 :デフォルトの名無しさん:2010/03/11(木) 22:09:39
コード全部書けよ

846 :デフォルトの名無しさん:2010/03/11(木) 22:11:47
>>844
あー、インタラクティブシェルの罠にはまっているな。
インタラクティブシェルは、入力された文の結果の repr() を毎回表示している。
だから、
>>> print "foo"
foo
で foo を表示しているのは print 文で、
>>> "foo"
'foo'
を表示しているのはインタラクティブシェル。

foo.py の中に
print "foo"
"foo"
と記述すると、後ろの "foo" は何も出力しないので、print による foo 一つしか表示されない。

847 :デフォルトの名無しさん:2010/03/11(木) 22:14:35
setも sum([{1},{2},{1,2,3}], set()) っていうふうに書けないよね。
和集合に + 使えないのは、あえてそうしているの?

848 :デフォルトの名無しさん:2010/03/11(木) 22:20:03
>>847
{1} って書けないからエラーになってるだけじゃない?それともPython3使ってる?

そもそも、sum() が >>843 の言うように数値型しかサポートして無くて、 sum([[2], [3]], [1]) が
できること自体ただの偶然だからね。
sum([[2], [3]]) してもエラーになる。

849 :デフォルトの名無しさん:2010/03/11(木) 22:26:45
>>845
ライブラリとか、著作権面で怖いので全部はちょっと
outmes = '\\'.join(['', 'x90', 'x3c', 'x64'])

>>846
printで何やってるかわかればいいんだが

みんなありがと、もうちょっと勉強してくる

850 :デフォルトの名無しさん:2010/03/11(木) 22:27:15
>>841
自己レス。

いい加減なこと書いてスマン。
http://effbot.org/zone/python-list.htm
によると、リストが小さいときはO(1)、大きくなるとO(n * n)になることもあるんだそうです。

851 :デフォルトの名無しさん:2010/03/11(木) 22:33:11
>>849
それで、
print outmes
したら、ちゃんと "\\" が \ と表示されるはずだよ。

852 :デフォルトの名無しさん:2010/03/11(木) 22:45:29
バカはからかって楽しむべき

853 :デフォルトの名無しさん:2010/03/11(木) 22:49:28
>>848
> sum([[2], [3]])
これがエラーになるのは、単にsum()の第二引数のデフォルト引数が0だからでは?

> できること自体ただの偶然だからね。
この根拠は?
随分いい加減な言語だね


854 :デフォルトの名無しさん:2010/03/11(木) 22:58:34
あ、根拠はhelp(sum)見りゃわかるという電波を受信しますた

855 :848:2010/03/11(木) 23:51:10
>>853
ただの偶然ってのは言い過ぎた。
でも、sum()が数値型を期待して設計されているから、数値型以外の動作で一貫性が無いという指摘が
的外れなのには変わりない。
数値型プロトコルの+演算子は合計を返す、シーケンス型プロトコルの+演算子はconcatenationを返すと
決められていて、C言語のAPIレベルでも PyNumber_Add と PySequence_Concatenate で分けられている。

もちろん、同じ + 演算子を通して利用している以上数値型を期待して合計しようとしているsum()に
シーケンス型を渡したら結合するのがスジで、sum()で文字列型が許されていないのは
「"".join() の方が効率良いからそっち使え」という啓蒙の意味しか無い。

856 :デフォルトの名無しさん:2010/03/12(金) 00:46:10
>>848
実はPython3しか使ったことがない。
setのリテラルは3からなんだね。

functools.reduce(lambda r,e: r|e, [{1},{2},{1,2,3}]) や set().union(*[{1},{2},{1,2,3}]) とかよりも
sum([{1},{2},{1,2,3}], set())でかけた方が綺麗だと思うなぁ。
setに+メソッド欲しいよう。

857 :デフォルトの名無しさん:2010/03/12(金) 01:07:01
>>856
だから、数値型のための sum をコンテナ型に使おうとするなって…
Number の sum としての + と Sequence の concatenation としての + 以外に、
組み込み型のsetがNumberでもSequenceでもない独自の+を実装してしまうと
混乱するだろ。 | の方が合ってるし良いじゃないか。
set().update() でいいじゃん。

858 :デフォルトの名無しさん:2010/03/12(金) 01:19:57
ちなみに、reduceを使いたいなら、
functools.reduce(operator.or_, iter_of_sets)
だな。
operatorモジュールでも、 operator.add (Number の +) と operator.concat (Sequence の +) は
区別されて別に定義されている。結局は __add__ が呼ばれるから concat の代わりに add が
使えることには変わりないんだけどね。

859 :デフォルトの名無しさん:2010/03/12(金) 01:39:34
最初から++をconcatに割り当ててれば良かったんだがなあ
まあ今更だけど

860 :デフォルトの名無しさん:2010/03/12(金) 01:49:39
operator.addやoperator.or_がLispの+やorのように可変長引数対応なら
こういう単純なケースではそもそもreduce()すら要らないんだけどな
わざわざモジュールインポートしてタイプ数も長いんだからもっとがんばれ!

sum()は正直なにがしたいのかわからん
ダックタイピング言語で同じオペレータを割り当てているという意味づけを
reduce()の劣化版であるsum()という関数では否定してるわけだよな

861 :デフォルトの名無しさん:2010/03/12(金) 03:11:20
>>857
setが | の意味以外の + を定義したらそれはそれで混乱するような・・・。
RubyのSetは + と | の両方同じ意味になってる。

862 :デフォルトの名無しさん:2010/03/12(金) 07:38:35
>>851
それはできる
この結果と同じ文字列を、printを使ってコンソールに書くのではなく内部的に処理したい

863 :デフォルトの名無しさん:2010/03/12(金) 07:59:30
>>807
Rが数式処理できるのは始めて聞いた
たしか少し前にRからmaxima使う方法とか話題になってたような気もするんだが

864 :デフォルトの名無しさん:2010/03/12(金) 08:26:57
>>862
内部的にも \ なんだって。
インタラクティブシェルが出力する形式だと、 \ 一つを \\ と表示するだけで。

865 :デフォルトの名無しさん:2010/03/12(金) 08:53:03
>>861
set が | の意味以外の + を定義したら混乱するのは激しく同意
なおかつ、 | と同じ意味の (数値型プロトコルでもシーケンス型プロトコルでもない) + を
わざわざ定義しないといけない必然性も無い。
あとはポリシーの問題。Rubyは必要が無くてもやり方がたくさんあって良いね、Pythonは
必要最低限のやり方だけあるのが良いね、という言語。

>>860
operator.add や operator.or_ みたいな operator モジュール内の関数は、
インタプリタ内部の PyNumber_Add(), PySequence_Concatenate() という低レベル関数に
ダイレクトにマップされていて、言語上の演算子一つを置き換えるためだけの関数だから、
可変長引数に対応するのは違う気がする。低レベル単機能なビルディングブロックであって、
単体で何かをするための便利関数じゃない。
複数引数に対応するのは .update() や .union() みたいな高レベル関数で良いじゃないか。

sum() は、文字列以外では
>ダックタイピング言語で同じオペレータを割り当てているという意味づけを
否定していないよ。PyNumber_Add() は数値プロトコルが実装されていない型なら
ちゃんとシーケンスプロトコルの concat に fallback している。

866 :デフォルトの名無しさん:2010/03/12(金) 10:00:42
春休みですね。

867 :デフォルトの名無しさん:2010/03/12(金) 10:31:12
>>865
> sum() は、文字列以外では
> >ダックタイピング言語で同じオペレータを割り当てているという意味づけを
> 否定していないよ。PyNumber_Add() は数値プロトコルが実装されていない型なら
> ちゃんとシーケンスプロトコルの concat に fallback している。
でも文字列のconcatだけは否定したいわけでしょ?
他の型も受け入れるつもりなら、デフォルト引数0ってのもいかにも筋が悪いし


868 :デフォルトの名無しさん:2010/03/12(金) 10:42:56
>>865
operator.add〜やらの部分
実装がそうだろうというのは想像はつくけど、使う側の感覚として
(+)(1, 2)
reduce((+), (1, 2, 3))
これぐらいlightweightなら別にそれでいいんだけどな〜という感じ
mapやreduceのような基本的なビルディングブロックだって使いやすくなるし

モジュールインポートして
operator.or_
ってLL言語の「基本的ビルディングブロック」っていうには冗長

869 :デフォルトの名無しさん:2010/03/12(金) 10:56:04
例えば[1,2,3]形式で表現されたベクトル3つ以上足すときに、operator.addは
つかえないわけだよね
こうは書けない
map(operator.add, [1,2,3], [4,5,6], [7,8,9])
まあ、数値の加算の場合だけならsumでいいけど


870 :デフォルトの名無しさん:2010/03/12(金) 11:02:58
それぞれに存在意義があるわけで
そういった討論はバカのすること
つまりその調子で続けてろ

871 :デフォルトの名無しさん:2010/03/12(金) 11:39:12
>>867
だから、Sequenceを入れても同じ+演算子だから一応動くようにしているというだけで、
基本的に数値のsumを取るために用意された関数だからデフォルト値0なの。
文字列に関しては、 ''.join() を使わせるために禁止しているだけで。

数値の為の sum() について、数値以外の引数を入れたときの挙動について
ゴチャゴチャ言う方がどうかしてる。

872 :デフォルトの名無しさん:2010/03/12(金) 11:58:09
>>868
mapやreduceも、Python3ではモジュールに移動される。
俺も、itertoolsやfunctoolsやoperatorを使いたいときにいちいちimportするのが
面倒というのには同意するが、そういった関数的プログラミングっぽい書き方は
あまり必要とされない(一般的な操作は高レベルなやり方が用意されている)から
グローバル関数にしないというポリシーは正しいと思う。

文字列の連結は ''.join(seq_of_str)
集合の総和は s =set(); s.update(seq_of_set)
リストの総連結は itertools.chain(seq_of_list) で。結果をリスト化する必要があるなら
list(itertools.chain(seq_of_list)) とすれば良いが滅多に使わない。

ムリに reduce とか operator とか使おうとするから import ウゼーってなるだけだ。

873 :デフォルトの名無しさん:2010/03/12(金) 12:02:06
>>871
なんかよくわかんねえなー
sum()の仕様がすっきりしないとは1ミリも思わんの?

数値用だっつーんなら、それこそ数値限定にすりゃいいわけじゃん
[]は受け入れるが文字列はダメ、デフォルト値は0とかいう
意味不明な仕様じゃなくてさ

他の型も受け入れるんなら、本来第二引数はデフォルトつきの引数じゃなくて、
reduceの第三引数と同じで(オプショナルな可変個引数)にすりゃいいわけでしょ?

sum()がビルトインでreduce(), operator.add()が外モジュール
(reduce()に関しては3.Xか)とかこの辺も意味不明だわ
sum()のほうがoperator.add()より基本的なの?

874 :873:2010/03/12(金) 12:03:15
ああ、>>872にレスが書いてあったw
リロードしてなかったyo

875 :デフォルトの名無しさん:2010/03/12(金) 12:12:50
>>873
Duck-typing 言語として、ユーザーが自分で + 演算子を定義したオブジェクトを
サポートしない訳にはいかないから、ホワイトリスト方式で数値型オブジェクトのみを
許可するのは無理。

で、文字列だけに関しては、 ''.join() という計算量が軽くて簡潔な書き方があるから
そっちを推奨するために特別扱いで拒否しているだけで、リストの場合は [].join() が
無いから計算量が大きくても簡潔な map() という選択肢をあえて制限する必要は無い。

876 :デフォルトの名無しさん:2010/03/12(金) 12:18:26
春休みですね。


877 :デフォルトの名無しさん:2010/03/12(金) 12:20:31
>>875
相変わらずよくわからん
''.join()がstrのconcat専用なのだから、sum()が数値のaccumuratorだと
言いたいのなら、そう実装すればいいだけのように思えるけど

[]を制限しないのがデザインとしての選択なら、デフォルト引数0は明らかに
まずいしね




878 :デフォルトの名無しさん:2010/03/12(金) 12:22:04
いちばんダメなのは、 set の update が複数引数を取るのに、
list の extend が引数一つしか取らないことだと思う。

L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか
for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。

879 :デフォルトの名無しさん:2010/03/12(金) 12:22:44
いちばんダメなのは、 set の update が複数引数を取るのに、
list の extend が引数一つしか取らないことだと思う。

L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか
for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。

880 :デフォルトの名無しさん:2010/03/12(金) 12:23:59
いちばんダメなのは、 set の update が複数引数を取るのに、
list の extend が引数一つしか取らないことだと思う。

L.extend(a,b,c) と書いたときに L.extend([a,b,c]) と等価になるのか
for x in (a,b,c): L.extend(x) と等価になるのか判りにくいから難しいけど。

881 :デフォルトの名無しさん:2010/03/12(金) 12:29:32
春休みですね。


882 :878:2010/03/12(金) 12:38:58
連投スマソ。なんか接続が悪かった。

>>877
strを受け付けないのは ''.join() を推奨するため。それ以外については、基本的に
+演算子を定義していればOK。
デフォルトの数値がゼロなのは、sumが基本的には数値型の為のものであるから、
sum([]) の結果をゼロにした方が都合が良いから。 (reduceの場合はエラーになってしまう)

Pythonは「一般的な動作をするためのものを引数のデフォルト値に採用する」という
言語だから、[]を制限しないけどデフォルト引数が0なのはマズくない。
0 + X がサポートされない X を使いたかったら、Xのゼロ元を書くというのは合理的。

883 :デフォルトの名無しさん:2010/03/12(金) 12:42:12
> sum([]) の結果をゼロにした方が都合が良いから。
ああ、確かに0要素のシークエンスに対応したければデフォルト引数が要るね

sum()が美しいとは全く思わないけど、そういう設計方針なのだということは
理解したよ


884 :デフォルトの名無しさん:2010/03/12(金) 12:47:34
GvRさんが関数型プログラミングが好きじゃないみたいだから、
その辺の仕様がおざなりなのはしょうがない。
reduceなんかとうとうitertoolsに追い出されたし。

885 :デフォルトの名無しさん:2010/03/12(金) 12:49:05
functoolsね

886 :デフォルトの名無しさん:2010/03/12(金) 13:09:51
「美しさ」ってなると、Lisp的な reduce(add, seq, 0) の方が美しいんだろうな。

sum(seq) の方がLisp的美しさが無いけど判りやすい。
「よく使う物をデフォルトに」という方針も、一部の物を他の物より優先するのは
美しくないかもしれないが合理的だ。
Pythonは美しさよりも合理的な方向を目指しているから、Lisp的に不細工な
部分があるのは仕方無いよ。

887 :デフォルトの名無しさん:2010/03/12(金) 13:44:15
このスレを全部読んでいるのは、全世界で3人位です。

888 :デフォルトの名無しさん:2010/03/12(金) 15:28:29
888 get ずさー

889 :デフォルトの名無しさん:2010/03/12(金) 15:29:02
3人の中に入れて光栄です

890 :デフォルトの名無しさん:2010/03/12(金) 15:55:49
あと一人誰なんだろう.

891 :デフォルトの名無しさん:2010/03/12(金) 16:03:35
>>849
よく分からないけど outmes が "\x90\x3c\x64" (バイナリで 90 3c 64) になる事を期待している?

892 :デフォルトの名無しさん:2010/03/12(金) 17:07:25
>>849
何のライブラリ?

893 :デフォルトの名無しさん:2010/03/12(金) 17:13:34
>>890
ROMってるんじゃない?

894 :デフォルトの名無しさん:2010/03/12(金) 17:47:23
>>891
バイナリで がよくわからないけど、多分そう

>>892
MidiIO

895 :デフォルトの名無しさん:2010/03/12(金) 18:50:57
>>894
>>891 の言っているような事をしたいのであれば、
>>> "903c64".decode('hex')
'\x90<d'
とかになるけど。
まだおまえさんが何をやりたいのかの全体像が見えない。

896 :デフォルトの名無しさん:2010/03/12(金) 18:52:46
"\x90\x3c\x64" は3文字の文字列だけど
>>849 の outmes は "\\x90\\x3c\\x64" という12文字の文字列
評価後の文字列を結合しても駄目だよ

>>> "\\90", len("\\90")
('\\90', 3)
>>> "\\x90", len("\\x90")
('\\x90', 4)
>>> "\\" + "x90", len("\\" + "x90")
('\\x90', 4)
>>> "\x90", len("\x90")
('\x90', 1)
>>> "\x90" == chr(0x90)
True

897 :895:2010/03/12(金) 18:54:58
"\\x60" (\, x, 6, 0 の4文字)というエスケープされた文字列を
"\x60" (16進で60になる1文字) に変換したいなら、string_escapeで変換する。
>>> "\\".join(["", "x90", "x3c", "x64"])
'\\x90\\x3c\\x64'
>>> "\\".join(["", "x90", "x3c", "x64"]).decode('string_escape')
'\x90<d'

898 :デフォルトの名無しさん:2010/03/12(金) 19:02:44
C#なら簡単に一行でできるのにねw
かわいそw

899 :デフォルトの名無しさん:2010/03/12(金) 19:04:10
>>898
>>897 で一行でできていますが?
string[] foo = {"x90", "x3c", "x64"};
をC#の一行で変換して下さいな。

900 :デフォルトの名無しさん:2010/03/12(金) 19:14:54
できてないじゃないw
もともとの本題わかってから言えよカスw

901 :デフォルトの名無しさん:2010/03/12(金) 19:16:31
>>900
もともとの本題とやらが判ってるの?
あれだけの情報で本題を掴むなんてスゲーなおまえ。
俺らにも判るようにもともとの本題を解説してくれ。

902 :デフォルトの名無しさん:2010/03/12(金) 19:20:44
>>898
Pythonic's HOWTODOTHAT!
Is that executable on unix and BSD?
Is that executable without compilers and linkers?
Is that able to maintain for many environments?
If you can't answer, that is fuck comparing! sucker!

パイソニックズ それどうやんの!
それはUnix系・BSDで実行可能ですか?
それはコンパイラ・リンカなしで実行可能ですか?
それはさまざまな環境で維持できますか?
お前が答えられないならば、その比較はファックだ!クズ!

903 :デフォルトの名無しさん:2010/03/12(金) 19:21:16
今時Unicodeで悩まされるなんてかわいそw

904 :デフォルトの名無しさん:2010/03/12(金) 19:23:50
>>887
この3人、煽り耐性なさすぎですねw

905 :デフォルトの名無しさん:2010/03/12(金) 19:35:09
春休みだねえ

906 :デフォルトの名無しさん:2010/03/12(金) 19:39:26
パイ君1号:1おつパイ
パイ君2号:自演します
パイ君3号:(w

907 :デフォルトの名無しさん:2010/03/12(金) 19:47:35
>>906
春休み君はこのうちのどれ?

908 :デフォルトの名無しさん:2010/03/12(金) 19:57:20
>>897でできた
まさに言ってる通りなんだ
説明下手ですまんかった、本当にありがとう

909 :デフォルトの名無しさん:2010/03/12(金) 20:00:32
C#ならこんなところで立ち往生しなくて済んだのにね
かわいそ

910 :デフォルトの名無しさん:2010/03/12(金) 20:02:23
俺もC#使いだがさすがにウザイ

911 :デフォルトの名無しさん:2010/03/12(金) 20:04:57
C#も4.0でダックタイピングできるようになるんか
なんか凄い勢いで進化しとるなあ
最初はJavaに毛が生えたような言語で、そういう客層だったろうに
皆ちゃんとついてってるのか

912 :デフォルトの名無しさん:2010/03/12(金) 20:06:42
LINQやラムダ式辺りから付いてきてない人大勢いるわ
俺もF#やるまでラムダ式?おいしいの?って感じだったけど

913 :デフォルトの名無しさん:2010/03/12(金) 20:09:16
3.0で既に脱落者多数だったからな

914 :デフォルトの名無しさん:2010/03/12(金) 20:10:01
名前付き引数が使えるようになったし、
無名型を使って手軽に複数の値を戻り値にできるし。
本当に良い言語だよね、C#は。
現時点でメジャーな静的型付け言語の中では一番だよ。

あとは、Monoがもっとがんばってくれれば…

915 :デフォルトの名無しさん:2010/03/12(金) 20:15:54
みんないいかげんRuby使えよ

916 :デフォルトの名無しさん:2010/03/12(金) 20:17:23
>>915
いやだよ。PerlとPythonがサーバー全部に入ってるのに、なんでRubyまで
インストール&メンテしないといけないんだよ。
Pythonに比べて利点が少なすぎる。

917 :デフォルトの名無しさん:2010/03/12(金) 21:00:10
確かに ruby はもういらなくなったと感じる

918 :デフォルトの名無しさん:2010/03/12(金) 21:04:58
日本語とユニコードがあつかえてgrepもつかえればOK
処理がほしければboostとつないで使えばいいし。
cgiもあるからpythonで十分

919 :デフォルトの名無しさん:2010/03/12(金) 22:15:50
pythonもっと普及したら使うんだけどな。

920 :デフォルトの名無しさん:2010/03/12(金) 22:38:35
欧米ではGoogleが使うほどに普及しておりますがこれでは不十分でしょうか?

921 :デフォルトの名無しさん:2010/03/12(金) 22:40:34
今TIOBE indexみたらPHPが3位でわろた

922 :デフォルトの名無しさん:2010/03/12(金) 22:41:34
GoogleはGoに移行するんじゃないのか?

923 :デフォルトの名無しさん:2010/03/12(金) 22:45:55
GoはC++かJavaの対抗じゃないの

924 :デフォルトの名無しさん:2010/03/12(金) 22:45:57
>>922
まだ一部の人間が実験している段階。

925 :デフォルトの名無しさん:2010/03/12(金) 23:00:14
goでpythonのモジュールが書ければいいのに

926 :デフォルトの名無しさん:2010/03/12(金) 23:01:30
pythonもphpもjavaも根本的な部分はcで実装されてるんだよね

927 :デフォルトの名無しさん:2010/03/12(金) 23:02:25
JVM は C++ だお

928 :デフォルトの名無しさん:2010/03/12(金) 23:06:18
2.x>3.xに移行、もしくは3.x>4.xに移行せずにGOにシフトするなんてことはないの?

GOOGLEの戦略ってどういう見解なんだろ
大規模はGO 末端はpythonてな感じで分けるつもりなんだろうか

929 :デフォルトの名無しさん:2010/03/12(金) 23:12:25
googleは全てnoopになります

930 :デフォルトの名無しさん:2010/03/12(金) 23:14:34
>>928
どうだろね。

http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e

931 :デフォルトの名無しさん:2010/03/12(金) 23:17:30
大規模はPythonだろ
GoはGoogleOSやAndroidに内蔵するつもりなんだろう

932 :デフォルトの名無しさん:2010/03/12(金) 23:18:04
goでpythonのモジュールが書けるのに


933 :デフォルトの名無しさん:2010/03/12(金) 23:25:17
すみません
専門用語的に何と言うのかはわかりませんが
s1 = 'a+b'
s2 = 'c+d'
のような入力があるとき
s3 = s1 * s2
を実行すると
s3 が 'ac + ad + bc + bd'
になるような計算をしてくれるモジュールってあるのでしょうか?

934 :デフォルトの名無しさん:2010/03/12(金) 23:28:40
何のことかと思ったけど、数式処理ってことか。
Mathmaticaみたいな。

935 :デフォルトの名無しさん:2010/03/12(金) 23:39:34
s1 = "1+2"
s2 = "3+4"
exec("s3=%s+%s"% (s1, s2))
>10

936 :デフォルトの名無しさん:2010/03/12(金) 23:43:51
>>934
たぶんそうです
Mathmaticaを使わずにpythonだけで出来れば

>>935
馬鹿は返事しなくていいです

937 :デフォルトの名無しさん:2010/03/12(金) 23:45:05
numpy

938 :デフォルトの名無しさん:2010/03/12(金) 23:45:09
えええええー
>>935ガチでかわいそうすぎる

939 :デフォルトの名無しさん:2010/03/12(金) 23:46:29
http://ja.wikipedia.org/wiki/MATLAB
http://ja.wikipedia.org/wiki/Sage_%28%E6%95%B0%E5%BC%8F%E5%87%A6%E7%90%86%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%29

940 :デフォルトの名無しさん:2010/03/12(金) 23:46:32
使ったことは無いがSAGE, SymPyあたりに数式処理の機能があるらしい
SAGEはどっちかっつーとCythonで有名かもしれない……

Mathematicaほどの高機能は期待しないほうがいいだろうとは思うけど

941 :デフォルトの名無しさん:2010/03/12(金) 23:48:04
>>938
俺にも煽られても仕方ないレベルに見えたけどな

942 :デフォルトの名無しさん:2010/03/12(金) 23:51:42
>>939
ありがとうございます

>>938
>>> exec('s3=(a+b)*(c+d)')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'a' is not defined

だめでした orz

943 :デフォルトの名無しさん:2010/03/13(土) 00:08:21
>>> from sympy import *
>>> a,b,c,d = symbols('abcd')
>>> expand((a + b) * (c + d))
a*c + a*d + b*c + b*d

944 :デフォルトの名無しさん:2010/03/13(土) 00:20:33
>>887
ズッコケ三人組ですね。

945 :デフォルトの名無しさん:2010/03/13(土) 00:30:06
ボンクラーズやろ
うちはちゃうけどな

946 :デフォルトの名無しさん:2010/03/13(土) 00:31:05
>>943
あなたが神か

947 :デフォルトの名無しさん:2010/03/13(土) 00:32:54
>>930
それ前にも見たぞ。前書いたのをコピーして貼っておく。


412 :デフォルトの名無しさん:2010/02/27(土) 16:17:44
>>409
全然マンセーじゃないみたいだが…

http://groups.google.com/group/unladen-swallow/browse_thread/thread/4edbc406f544643e

414 :デフォルトの名無しさん:2010/02/27(土) 16:44:34
>>412
読んだけど、元々速度が要求される場面ではPythonは用いてないと思うし、そもそもそれは憶測の域を出ないよね。

948 :デフォルトの名無しさん:2010/03/13(土) 00:49:12
>>947
LtU や Hacker News でも一時期話題になった有名な話だからな。
Unladen Swallow を支援しているけど、速度は問題だよねというお話。

949 :デフォルトの名無しさん:2010/03/13(土) 01:17:52
http://image.blog.livedoor.jp/tpg2008/imgs/b/b/bb73382c.jpg

950 :デフォルトの名無しさん:2010/03/13(土) 02:09:00
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ おっぱい!おっぱい!
└─┘      おっぱい!おっぱい!



951 :デフォルトの名無しさん:2010/03/13(土) 03:34:53
>>943
>>> sympy.expand((a+b)*(a-b))
a**2 - b**2
>>> sympy.expand((a+b)*(a-b)/(a-b))
a + b
>>> sympy.expand((a**2 - b**2)/(a-b))
a**2/(a - b) - b**2/(a - b)

だめですね orz

952 :デフォルトの名無しさん:2010/03/13(土) 03:36:22
C#なら独自の演算子作れるから
一行でできるのに・・・
かわいそw

953 :デフォルトの名無しさん:2010/03/13(土) 03:57:10
a**2 - b**2 = (a + b)(a - b) になるとは限らないしな。
乗算に関して交換法則が成り立たないといけない。

954 :デフォルトの名無しさん:2010/03/13(土) 04:02:01
>>> expand(factor(a**2 - b**2) / (a-b))
a + b

955 :デフォルトの名無しさん:2010/03/13(土) 04:09:55
>>952
後学のためにその一行PLZ

956 :デフォルトの名無しさん:2010/03/13(土) 04:32:20
>>955
いやだから

s3 = s1 * s2
と書けばいいだけ

s3がac + ad + bc + bd
になる

C#ならねw

957 :デフォルトの名無しさん:2010/03/13(土) 04:34:06
>>> sympy.factor(a**2 - b**2)
(a + b)*(a - b)

958 :デフォルトの名無しさん:2010/03/13(土) 05:03:55
>>> sympy.factorint(111111111)
{3: 2, 333667: 1, 37: 1}

959 :デフォルトの名無しさん:2010/03/13(土) 05:23:02
猿は覚えたてのオナニーを死ぬまでやるって言うな

960 :デフォルトの名無しさん:2010/03/13(土) 05:28:22
ライブラリがなければ何もできないバカばっかw
アルゴリズムぐらい自分で考えろ

961 :デフォルトの名無しさん:2010/03/13(土) 05:31:24
>>960
さあお手本いってみようか

962 :デフォルトの名無しさん:2010/03/13(土) 05:37:10
>>961
おれならGSL使ってパパっとやっちゃうね

963 :デフォルトの名無しさん:2010/03/13(土) 05:38:35
4つ引数取るクラス作って
a*c + a*d + b*c + b*d
の計算させればいいだけじゃんw
何が難しいのよwww

964 :デフォルトの名無しさん:2010/03/13(土) 05:47:01
なんかもうスレが幼稚園と化しとるwww
会話のキャッチボールが全く成立しとらんwwww

965 :デフォルトの名無しさん:2010/03/13(土) 05:55:45
192のせい

966 :デフォルトの名無しさん:2010/03/13(土) 09:32:41
じゃあ、次スレタイはPython幼稚園だな

967 :デフォルトの名無しさん:2010/03/13(土) 10:04:48
園児に失礼

968 :デフォルトの名無しさん:2010/03/13(土) 10:07:19
いつの間にかなくなってるね。
ttp://rail.s4.pf-x.net/python/

969 :デフォルトの名無しさん:2010/03/13(土) 10:15:58
たった3人でもできることがある。

970 :デフォルトの名無しさん:2010/03/13(土) 10:17:10
献血か

971 :デフォルトの名無しさん:2010/03/13(土) 10:18:51
千秋楽だろ

972 :デフォルトの名無しさん:2010/03/13(土) 10:52:05
>>958
Rubyならそんなこと簡単にできるのに...
みんなRuby使いなよ

973 :デフォルトの名無しさん:2010/03/13(土) 11:02:02
もうそういうの飽きた

974 :デフォルトの名無しさん:2010/03/13(土) 11:04:22
PyPy Status Blog: Introducing the PyPy 1.2 release
ttp://morepypy.blogspot.com/2010/03/introducing-pypy-12-release.html

パイパイ!

975 :デフォルトの名無しさん:2010/03/13(土) 11:27:02
せっかくのLL言語なんだからインプリメントすればいいじゃん

976 :デフォルトの名無しさん:2010/03/13(土) 14:45:53
>>956
え?そうしたくないときでも、そういうふうになっちゃうの?C#だと。

それくらいならいいけど、
(a+b+c+d+e)**10
なんて計算をする度に必要なくても展開されるとか恐ろしくて使えない。

977 :デフォルトの名無しさん:2010/03/13(土) 15:14:53
>>> sympy.simplify((a**2 - b**2)/(a-b))
a + b

978 :デフォルトの名無しさん:2010/03/13(土) 15:21:32
a_1 + a_2
とか添字と配列処理も混合できるなら乗り換える

979 :デフォルトの名無しさん:2010/03/13(土) 15:38:10
C#くらい使える言語になったら乗り換える

980 :デフォルトの名無しさん:2010/03/13(土) 15:53:30
Whenever they needs .NET Framework

981 :デフォルトの名無しさん:2010/03/13(土) 17:11:43
Pythonのお勉強 Part37
http://pc12.2ch.net/test/read.cgi/tech/1268467168/

982 :デフォルトの名無しさん:2010/03/13(土) 19:57:28
そうなのか。知らなかった。


983 :デフォルトの名無しさん:2010/03/13(土) 20:09:32
用途によってはC#より使えるけどな

984 :デフォルトの名無しさん:2010/03/13(土) 20:25:49
ないないww

985 :デフォルトの名無しさん:2010/03/13(土) 20:33:12
C# も UN*X に標準搭載されたら試してみても良いんだけど…

986 :デフォルトの名無しさん:2010/03/13(土) 20:57:34
rubyでさえ載っていないのにC#が載る訳がなかろう

987 :デフォルトの名無しさん:2010/03/13(土) 21:05:42
じゃあ意味無いじゃん…

988 :デフォルトの名無しさん:2010/03/13(土) 21:12:33
UbuntuにはMonoが標準で入ってるな。
Earlangも入ってるけど、Rubyは入ってない。

989 :デフォルトの名無しさん:2010/03/13(土) 21:23:18
CentOSもmonoがあるね。
iphoneもmonoが動くし、ゲームも出回ってる。

990 :デフォルトの名無しさん:2010/03/13(土) 21:24:53
>>989
>iphoneもmonoが動く

クローズドで有料なんじゃなかったっけ

991 :デフォルトの名無しさん:2010/03/13(土) 21:25:57
つまりC#最強

992 :デフォルトの名無しさん:2010/03/13(土) 21:28:01
開発環境は有料だね。安いと思うけど。
monoも有料なんだっけ?よーわからん。

どちらにせよApple様の縛りがあるんだよなぁ。
何で独占禁止法で訴えられないんだ。

993 :デフォルトの名無しさん:2010/03/13(土) 21:28:30
iPhoneはMonoが動いているわけじゃないだろ…

994 :デフォルトの名無しさん:2010/03/13(土) 21:45:22
>>989
>CentOSもmonoがあるね。

デフォで入ってたっけ?

995 :デフォルトの名無しさん:2010/03/13(土) 22:33:35
VMwareから拾ってきたのに入ってたんだが、ヘンなの掴んだのかな・・・

996 :デフォルトの名無しさん:2010/03/13(土) 22:36:47
だったら「入ってたよ」って答えればいいじゃん

997 :デフォルトの名無しさん:2010/03/13(土) 22:40:49
Rubyはバージョン変わると互換性ないからなあ

998 :デフォルトの名無しさん:2010/03/13(土) 22:48:03
RubyはC++の熟練者が暇を持て余してやる遊びの言語

999 :デフォルトの名無しさん:2010/03/13(土) 23:17:14
>811
逆に「豊富な(統計)ライブラリ」以外には魅力は
あまり感じないのは贔屓目すぎかね?

そこまで徹底的に使ってないし Rpy でそれなりに
Rライブラリは利用できるし、そんなに
python+numpyも悪くないと思うけど

グラフの描画については… Rについて語れるほど
グラフィック関係を呼んだことないんだけど
matplotlib と比べてそんなに優秀?

1000 :デフォルトの名無しさん:2010/03/13(土) 23:34:02
かみちゅ!

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

214 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)