Pythonのお勉強 Part10

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
2デフォルトの名無しさん:2006/06/29(木) 00:34:26
>>1
3デフォルトの名無しさん:2006/06/29(木) 12:06:40
>>1
スレを立てる前にスレ立て宣言しろ
スレ立てたら現行スレに報告入れろ
4デフォルトの名無しさん:2006/06/29(木) 16:44:21
>>3
誰かがスレを立てる前にお前がスレ立て宣言しろ
誰かがスレ立てたらお前が現行スレに報告入れろ
5デフォルトの名無しさん:2006/06/29(木) 16:57:06
6デフォルトの名無しさん:2006/06/29(木) 19:00:06

>>3

なんで俺に断り無く勝手にスレ立ててんだよ

って言いたいのかと esp
7デフォルトの名無しさん:2006/06/29(木) 19:33:37
じゃあ、タイトルに「python」を含む新しいスレッドが無いか
毎日2chをチェックするプログラムを作ってみれ。
8デフォルトの名無しさん:2006/06/29(木) 19:45:52

とりあえずここだけ見ればいいですか?
http://pc8.2ch.net/tech/subback.html
9デフォルトの名無しさん:2006/06/29(木) 19:49:29
http://pc8.2ch.net/tech/subject.txt
公開するつもりなら、転送量考えてこっちにするべき
10デフォルトの名無しさん:2006/06/29(木) 19:50:21
了解
11デフォルトの名無しさん:2006/06/29(木) 20:10:22
290 名前:名無しさん@お腹いっぱい。 :2006/02/27(月) 11:41:23

竹石圭佑って他人に色々迷惑かけてんだな。確かコイツの親は中国人だったろ。中学校ん時に噂あった。
やっぱ在日って最低だ。近いうちテレビ報道されるような犯罪起こすんじゃないか?性犯罪とか
12デフォルトの名無しさん:2006/06/29(木) 20:20:27
クソレスから、なぜかプログラムスレにふさわしい神展開にw
13デフォルトの名無しさん:2006/06/29(木) 20:58:19

import re
import urllib

print re.findall('(.*)ython(.*)', urllib.urlopen('http://pc8.2ch.net/tech/subject.txt').read())
14デフォルトの名無しさん:2006/06/29(木) 21:16:26
for a, b, c in re.findall('(.*)(p|P)ython(.*)', urllib.urlopen('http://pc8.2ch.net/tech/subject.txt').read()): print a + b + 'ython' + c
15デフォルトの名無しさん:2006/06/29(木) 22:02:14
どうしてそんな意地悪するの?
16デフォルトの名無しさん:2006/06/29(木) 22:29:23
パイパンと聞いて飛んできました。
17デフォルトの名無しさん:2006/06/30(金) 18:34:56
すいません、タイトルにpythonを含む新しいスレッドが一向に増えないのですが。
これでは動作確認ができません。
18デフォルトの名無しさん:2006/06/30(金) 19:07:09
>>17
短気だな。このスレが埋まるまで待て。次のFIFAワールドカップまでにはたぶん・・・
19デフォルトの名無しさん:2006/06/30(金) 19:52:02
>>17
2chの subject.txtをコピー&改造してローカルサーバーを立ち上げてテストするんだ
・・って、マジレスすればいいの?
20デフォルトの名無しさん:2006/07/02(日) 01:12:28
誰か、2.5βをインストールしたらアイコンだけください
21デフォルトの名無しさん:2006/07/02(日) 01:31:45
>>20
解凍すればサブディレクトリ"PC"の中に入ってるよ
22デフォルトの名無しさん:2006/07/02(日) 02:59:52
23デフォルトの名無しさん:2006/07/02(日) 10:52:53
だれか >22 でプリントTシャツつくってくれ。
ワンポイントの刺繍でもいいです。
24デフォルトの名無しさん:2006/07/02(日) 14:06:50
25デフォルトの名無しさん:2006/07/02(日) 17:27:19
パ・パイソン(;´Д`)ハァハァ
26デフォルトの名無しさん:2006/07/02(日) 21:41:51
(*゚∀゚)=3ハァハァ
27デフォルトの名無しさん:2006/07/02(日) 22:22:19
python の文字になりたい…
28デフォルトの名無しさん:2006/07/02(日) 22:36:49
てめーら下のURLしか頭にねえだろw
29デフォルトの名無しさん:2006/07/03(月) 00:13:03
こういうのにつきあわされる女性は可哀想。
あとこういう画像を張る24も別の意味で可哀想。
30デフォルトの名無しさん:2006/07/03(月) 00:22:32
これほしいなぁ
31デフォルトの名無しさん:2006/07/03(月) 01:08:46
俺は >29 の頭が可哀想でしょうがない。
(フツーのモデルさんでしょ?)
32デフォルトの名無しさん:2006/07/03(月) 01:24:22
個人的にPython結構いいと思うんだけどなんで流行らないんだろうねぇ?
可読性の高さは群を抜いてるからそれが強みだと思うんだけども
可読性が高いっつーことは、保守性が高いっつーことで
後から手入れるにしても他の言語より楽だし
33デフォルトの名無しさん:2006/07/03(月) 01:28:56
新しいこと覚えるのは大変だから。
マイクロソフトに期待してる。。ほのかに
34デフォルトの名無しさん:2006/07/03(月) 01:43:35
新しいこと覚えるのが面倒って人はプログラミング自体出来ないだろう
35デフォルトの名無しさん:2006/07/03(月) 01:58:49
>>32
俺の感覚ではかなーり流行っている希ガス。
爆発的じゃなくゆっくりと、しかし確実に普及してきているように感じる。

主観だけじゃ何なのでググって見つけた数字でも。
TIOBE Programming Community Index for June 2006
http://www.tiobe.com/tpci.htm
Programming Language Popularity (updated 2005-10-20)
http://www.dedasys.com/articles/language_popularity.html
36デフォルトの名無しさん:2006/07/03(月) 03:58:48
>>34
まあ明らかにプログラマ向きでない人がプログラマを職業としているわけだが。
37デフォルトの名無しさん:2006/07/03(月) 09:22:43
>>32
Windowsバイナリを追加モジュールがないと作れないのも原因かと。
py2exe使ったときは配布サイズがHelloWorldでも4Mとか行くし。
38デフォルトの名無しさん:2006/07/03(月) 10:19:45
>>37
んだね。LinuxではPython流行りまくり。
39デフォルトの名無しさん:2006/07/03(月) 13:10:18
数年前のPyJUGのサイトが多言語への罵詈雑言であふれてなかったら
もうちょっと早くはやり始めたのではないかと思う。
40デフォルトの名無しさん:2006/07/03(月) 13:37:04
>>39
>多言語

あんたはMatzか。
41デフォルトの名無しさん:2006/07/03(月) 13:46:37
>>39
それはぜんぜんかんけいないよ
42デフォルトの名無しさん:2006/07/03(月) 14:31:20
>>39
そうだったの?
43デフォルトの名無しさん:2006/07/03(月) 15:21:32
まぁ、Google Trendでも眺めて自己満足するのがよいのではないかと。
44デフォルトの名無しさん:2006/07/03(月) 15:54:58

仲間内で使ってて流行ってるというのはどうかと思うが
それだと Ruby 厨と変わらん
45デフォルトの名無しさん:2006/07/03(月) 16:21:18
>>44
そういう対立を煽るような馬鹿発言が一番うざいんですけど
46デフォルトの名無しさん:2006/07/03(月) 16:52:06
仲間内の外だと、使ってるのが確定してるのはGoogleくらいしか知らん。
47デフォルトの名無しさん:2006/07/03(月) 17:25:21
そろそろウンチ?
48デフォルトの名無しさん:2006/07/03(月) 17:27:22
俺使ってるよ俺
49デフォルトの名無しさん:2006/07/03(月) 18:28:07
みんなそんなにマイナなものを使うのが怖いのか?
俺はPythonがメジャになればそれはそれで嬉しいけど、別にマイナでも構わん気がする。
50デフォルトの名無しさん:2006/07/03(月) 18:47:24
俺はRubyがメジャになればそれはそれで嬉しいけど、別にマイナでも構わん気がする。
51デフォルトの名無しさん:2006/07/03(月) 18:56:27
マイナーだとそもそも実行できなかったり。
perlの強みはどこでも実行できることだし
52デフォルトの名無しさん:2006/07/03(月) 19:23:07
>>51
えーー
53デフォルトの名無しさん:2006/07/03(月) 19:26:00
最近のLinuxは最初から入ってるぞ、Python。
54デフォルトの名無しさん:2006/07/03(月) 19:54:38
CPANがないと使えないPerl
スレッドの実装がタコなRuby
国内でマイナーなPython
55デフォルトの名無しさん:2006/07/03(月) 20:01:05
.NET Framework 3.0 (旧名称WinFX)にもPythonが標準装備されればいいのにな
56デフォルトの名無しさん:2006/07/03(月) 20:59:50
python2.3以前において
l = [1,3,5,6,3,3,4,6,9]
があったときに、重複した値を取り除く(uniq)エレガントな方法を教えてください。
2.4ならset(l)でokなんだが‥‥‥。
dictに突っ込むしかないかなぁ
57デフォルトの名無しさん:2006/07/03(月) 21:28:51
Red Hat や Fedora のシステム管理アプリケーションはほとんどPythonで書かれている。
Pythonが無いとすげー困る。つーか、インストールに必須。
58デフォルトの名無しさん:2006/07/03(月) 22:22:21
>>56
dictにつっこむと順番が狂う鴨
59デフォルトの名無しさん:2006/07/03(月) 22:44:33
m = []
for i in l:
    i in m or m.append(i)

これじゃダメ・・・?
60デフォルトの名無しさん:2006/07/03(月) 23:13:52
>59
いいかも。ありがと。実験してみたら in って計算量O(1)に近いみたいね‥‥‥

>58
順番は気にしなかった、今は反省している。

61デフォルトの名無しさん:2006/07/03(月) 23:36:38
>>60
> 実験してみたら in って計算量O(1)に近いみたいね‥‥‥
ソース見る限りはO(N)だがなぁ。リストやタプルのinはただの線形探索だから。
まぁ100や200の要素くらいではほとんど一瞬なので、あまり気にしなくていいと思う。
62デフォルトの名無しさん:2006/07/04(火) 08:25:07
ソースってどのへんを見ればok?
あるものを確認するときはリストサイズに影響を受けてたけど、
無いものを確認するときはO(1)っぽかったね。
63デフォルトの名無しさん:2006/07/04(火) 08:55:40
a = [1,3,5,6,3,3,4,6,9]
a.sort()
[item for item, iter in itertools.groupby(a)]
64デフォルトの名無しさん:2006/07/04(火) 09:34:04
# 順序は保存されないけど
a = [1,3,5,6,3,3,4,6,9]
a = dict.fromkeys(l).keys()
65デフォルトの名無しさん:2006/07/04(火) 12:21:01
a = [1,3,5,6,3,3,4,6,9]
b = a[:]
print [x for x in a if x not in b.remove(x)]

寝てるときに考えたらできそうだったけど、ダメだった。removeだし。
66デフォルトの名無しさん:2006/07/04(火) 13:15:16
順序も考えるなら、最初に現れる位置か、最後に現れる位置か、っていう問題も出てくるな。
67デフォルトの名無しさん:2006/07/04(火) 14:55:31
いろんなやりかたあるんだねー

65> 寝てるときに考えたら

器用だねー。うやらまし。

ありがとん。


68デフォルトの名無しさん:2006/07/04(火) 17:49:12
>>67
日本語の「寝る」という単語には「眠る」という意味と「横になる」という意味があるんですよ。
難しいですね。
69デフォルトの名無しさん:2006/07/04(火) 20:50:09
まぁ普通の日本人なら横になって考えたら
と書くだろうけどな
70デフォルトの名無しさん:2006/07/04(火) 20:53:20
つか、ここで「眠る」の方の意味と解釈するヤツは、
プログラミング能力無しどころか社会生活不適合だろ。
71デフォルトの名無しさん:2006/07/04(火) 21:48:57
半眠りで脳波がθ波の状態は
ヒラメキが発生しやすいんだぞ
72デフォルトの名無しさん:2006/07/04(火) 21:51:07
俺はいつも夢の中でインデントしてますが何か?
73デフォルトの名無しさん:2006/07/04(火) 22:16:15
眠ってるうちに小人さんが・・・って話は良く聞くよね
74デフォルトの名無しさん:2006/07/04(火) 22:16:28
最近 Planet Python Japan が落ちてるねー。
便利だからよく見ていたんだけど、復活してくれないものかのう。
75デフォルトの名無しさん:2006/07/04(火) 22:29:07
ええ
76デフォルトの名無しさん:2006/07/04(火) 23:51:23
ぱいそにあんてな……憶えてる人いる?
7761:2006/07/05(水) 00:05:45
>>62
Objects/listobject.c: list_contains
Objects/tupleobject.c: tuplecontains
Objects/stringlib/fastsearch.h: fastsearch
辺りを見たらO(N)ぽかった。
78デフォルトの名無しさん:2006/07/05(水) 00:18:10
ぱいそにあんてな の検索結果 1 件
79デフォルトの名無しさん:2006/07/05(水) 22:01:12
>77

お、ありがとう。今度時間取ってみてみんべぇかな。

>67

日本語難しいね。でも僕も学生時代は寝ながら考えてたよ。
夢の中でコード検証してて、バグに気づいて飛び起きて
あわてて大学に回線繋いでデバッグしたこともあった。

ジジィになったらできなくなったよ(・ω・)
80デフォルトの名無しさん:2006/07/06(木) 17:58:48

こんにちは
81デフォルトの名無しさん:2006/07/06(木) 18:23:50

さようなら
82デフォルトの名無しさん:2006/07/06(木) 20:23:32
おかえりな(ry
83デフォルトの名無しさん:2006/07/06(木) 21:04:05
print文を使うと、コンマのところで必ず空白が出力されてしまうんだけど、これを抑制する方法ってない?
i=10
print "i=", i
とすると「i= 10」となるから、これを「i=10」としたいだけ。

超初心者質問ですまそ。
ttp://www.python.jp/doc/release/ref/print.html
あたりを読んだのだが、それらしいことは書いてなかった。
84デフォルトの名無しさん:2006/07/06(木) 21:14:10
8583:2006/07/06(木) 21:20:54
>>84
さんくす。書式文字列使うのね。
コンマが最後にくるときはどうしたらいい?
if x:
 print "<x=%d>" % x,
if y:
 print "<y=%d>" % y,
とすると、「<x=10> <y=20> 」とかになって、余分な空白が出力されてしまう。
86デフォルトの名無しさん:2006/07/06(木) 21:38:04
sys.stdout.write()
87デフォルトの名無しさん:2006/07/06(木) 21:42:39
if x:
 result ="<x=%d>" % x
if y:
 result +="<y=%d>" % y
print result
8883:2006/07/06(木) 22:15:58
>>86,87
さんくすです。
でもなんか、ちょっと面倒くさいですね。print文が勝手に空白を出力するという仕様の理由がしりたいですね。
89デフォルトの名無しさん:2006/07/07(金) 00:07:37
>>88
そりゃ、くっついたら読みにくいからだろww
そもそもデバッグ用みたいなもんなんだから、ちゃんとしたフォーマットに使うのがおかしい
90デフォルトの名無しさん:2006/07/07(金) 00:22:50
そうだなあ・・
printをこまめに次々に使うのって、やっぱ開発時のちょっとテストやデバッグの時が多いんじゃないかな。
本格的に出力したいときは、

OutText= []
if x:
 OutText.append("<x=%d>" % x)
if y:
 OutText.append("<y=%d>" % y)

print '\n'.join(OutText)

みたいに配列に追加して、最後にまとめて出力してる。
91デフォルトの名無しさん:2006/07/07(金) 00:23:31
printは、なんでもなんとなく表示するって感じのヤツだから、
自分好みに出力したいなら、他のヤツを使った方がいいお( ^ω^)
92デフォルトの名無しさん:2006/07/07(金) 01:32:55
今、はじパイ片手に勉強してるんだけど

ネットで個人サイト巡ってちまちま勉強するより
数千倍効率いいね
ネットだろうと本だろうと同じような気がするんだけど
こうも変わるのはなんでだろう
93デフォルトの名無しさん:2006/07/07(金) 02:19:46
ネットだと、見てるだけって気分で、あんまり必死にならないからじゃないかな。
「もっと分かりやすいサイトがあるんじゃないか」って思ったりして、どこか信頼できないとか。
自分で買った本ならまじめに勉強する気になるんじゃないかな。

でも、ある程度慣れて、ちょっと専門的なモジュールの勉強しようとすると
ネットでちまちま調べるしかないけどね。
94デフォルトの名無しさん:2006/07/07(金) 02:42:19
print "i="+str(i)
print "i="+str(i),
ですが何か?
95デフォルトの名無しさん:2006/07/07(金) 02:48:27
あと,これは姑息だけどprint "¥bj="+str(11)
9689:2006/07/07(金) 07:03:44
>>89
printがデバッグ用とはだれがいったの?リファレンスに書いてある?
97デフォルトの名無しさん:2006/07/07(金) 08:52:06
名前まちがえた。96の名前「86」は間違い。
98デフォルトの名無しさん:2006/07/07(金) 11:54:19
>>92
宣伝乙
99デフォルトの名無しさん:2006/07/07(金) 12:13:34
はじパイ厚いよう…研究で使いたいのに読み終える気配が無いから、
matlab使ってる。
100デフォルトの名無しさん:2006/07/07(金) 12:58:23
>>96
日本語苦手な人ですか?
「みたいなもん」
101デフォルトの名無しさん:2006/07/07(金) 13:21:16
「誰か言った」「リファレンスに書いてある」とか
そんなソース出せっていうほどの事じゃないだろ
102デフォルトの名無しさん:2006/07/07(金) 14:26:43
printステートメントは失敗作
はやく3.0でねーかな
103デフォルトの名無しさん:2006/07/07(金) 14:52:56
Perl講座
104デフォルトの名無しさん:2006/07/07(金) 15:17:35
>>102
手軽でいいやん
105デフォルトの名無しさん:2006/07/07(金) 15:57:35
先頭で
DEBUG=sys.stderr.write
しちゃって DEBUG() とか書くだろ普通
106デフォルトの名無しさん:2006/07/07(金) 17:09:16
ひとつのtry:節に、except:節とfinally:節を同時につけることができないようですが、
この制限はどのような理由によるものでしょうか。
思想上の理由ならどのような理由なのか、また実装上の制約ならどのような制約か教えてくれませんか。

あと、except:とfinally:の両方を使う場合の書き方としては
try:
 try:
  ...
 except:
  ....
finally:
 ...

でいいんでしょうか。
107デフォルトの名無しさん:2006/07/07(金) 19:34:34
>>106
前半: Python 2.5 からできるようになります
後半: おっけー
108デフォルトの名無しさん:2006/07/07(金) 19:38:17
109デフォルトの名無しさん:2006/07/07(金) 19:42:09
>>106

try - finally が、内側
外側のtryで、例外をひらうべきじゃないかな。。
110デフォルトの名無しさん:2006/07/07(金) 19:48:24
>>109
except:へ来る前にfinally:が走って欲しいか後で走ってほしいかによるな
どちらでもよければどちらでもいいだろう
111106:2006/07/07(金) 19:51:04
>>107
ありがとうございます。同時に指定できない理由はご存じないですか?
2.5はβ1がリリースされているようですが、広く使われるようになるのはまだ先のようですね。

>>108
ちょうどそれを読んで勉強しているところです。そこを読んでもわからなかったので質問してみました。
というか、このページはわかりにくい。特にgeneratorのとことか。

あと間違いっぽいのがあるですけど、「8.3 例外を処理する」で
> この値は例外の例外の引数 (argument) としても知られています。
「例外の例外の引数」は「例外の引数」でしょうか。
112106:2006/07/07(金) 19:57:55
>>109
Javaだと、catch節(except節)が実行された後にfinally節が実行されるようです。
なので、これが普通かなと思ってました。
どうなんでしょう。

>>110
except:より先にfinally:がやりたい場合というのは、今まで考えたこともありませんでした。
そんな場合もあるかもしれませんね。なるほど。
113デフォルトの名無しさん:2006/07/07(金) 20:16:15
なんで、try-finally , try-exceptが別々なのかは
Guidoがそう実装したから。という理由らしいです。
http://mail.python.org/pipermail/python-list/2004-June/225797.html

114デフォルトの名無しさん:2006/07/07(金) 20:26:13
Pascal も try except と try finally は別々に書くよな
115デフォルトの名無しさん:2006/07/07(金) 20:59:39
>>114
Pascal にそんな機能はない
116106:2006/07/07(金) 22:05:38
>>113
どうもありがとうございます。なんと、思想的な理由でしたか!これは驚き。

> it is completely ambiguous what the programmer meant if both are
> specified together, Guido deliberately kept them separate so that
> one had to be very explicit about whether the finally was inside
> or outside the except.
ほんどうだ。except:とfinally:のどちらを先にやるのかを明確に示すために、
わざわざ同時に指定できないようにしたのですか。>>110の指摘どおりですね。

2.5では指定できるようになるとのことですが、例えば
 try:
 except:
 finally:
ならexcept:が先でfinally:が後、
 try:
 finally:
 except:
ならfinally:が先でexcept:が後、
という仕様にでもなるんでしょうか。もしそうならかなりユニークですね。
117デフォルトの名無しさん:2006/07/07(金) 22:34:04
>>116
> という仕様にでもなるんでしょうか。
文法見る限りならないみたい。

ところで、
try:
 return 1
finally:
 return 2
って書いたら2が帰ってくるのね。
return 1をキャンセルしてるよ……。
118デフォルトの名無しさん:2006/07/07(金) 22:38:04
ふと思ったんだけど、ePerlのようにテキストファイルにコードを埋め込んで実行するもの(ePython)ってありますか?
Pythonがインデントによるブロック範囲指定だから、ePython→Pythonへの変換がちょっと面倒な気はするけど、もしあれば教えてください。
ぐぐったところでは、なんか関係なさそうのばかり引っかかった。
119デフォルトの名無しさん:2006/07/07(金) 23:34:02
120デフォルトの名無しさん:2006/07/07(金) 23:42:14
>>117
finallyはエラーあるなしに関わらず実行されるわけだから、そのとおりじゃね?
121デフォルトの名無しさん:2006/07/08(土) 03:19:39
>>120
いやreturn握りつぶしといてエラーにしないのがすごいなと思って。
finallyブロックが実行されることに不満があるわけじゃないのよ。
122デフォルトの名無しさん:2006/07/08(土) 03:35:07
returnはそのスコープで有効なfinally句をすべて実行してからreturnするのだから
妥当な挙動だと思うけど。当然finally句の中でのreturnも「正しく」実行されるという
だけでしょ。それが結果的にペンディング中のreturnを握りつぶしたとしても。
123デフォルトの名無しさん:2006/07/08(土) 04:13:18
>>119
ほほう。このページはありがたいな。
このうち、Pythonをそのまま埋め込めるのってどれ?
124デフォルトの名無しさん:2006/07/08(土) 08:39:14
boost::pythonの話をここでしても良いかな?
主にC側の話なんだけど・・・。

Cアプリ起動後にPythonを呼ぶとき、BOOST_PYTHON_MODUL(モジュール名)でPythonに名前を公開しています。
(initモジュール名を呼Py_Initialize呼んだ後に呼ぶ)

この時、C側の外部変数などをPythonで直接操作させる方法はありますでしょうか。
以下の問題があります。
・関数を仲介させるのは手間がかかる。boost::python::defでの更新はしたくない。
・boost::python::scopeでは属性は定義できても、C側外部変数へ引き渡す処理が書けない。
・Python関数起動時の引数に渡す方式だと、マッピング関数が必要になるためやりたくない。

理想はboost::python::defみたく
boost::python::value_<int>("g_foo", &g_foo);
って書ける事なんですけど。
125デフォルトの名無しさん:2006/07/08(土) 08:49:11
Visual Studio 2005 って IronPython の IDE として
使用できるんですか?
126デフォルトの名無しさん:2006/07/08(土) 10:53:09
質問1
Pythonって、クロージャをサポートしてますか?
チュートリアルを読んだところ、それらしいのは見つかりませんでした。

質問2
lambdaは本体に式しか書けなくて文は書けないようなんですけど、なぜなんでしょうか。
また文をかけるlambdaのような機能はありますか。
127デフォルトの名無しさん:2006/07/08(土) 11:49:59
1 => ない
2 => def
128126:2006/07/08(土) 12:30:16
defは名前付き関数定義だと思うのですが、関数オブジェクトを取り出して
lambdaのように使うということでしょうか。
あと、lambdaで文がサポートされていない理由についてもご存知でしたらお願いします。
129デフォルトの名無しさん:2006/07/08(土) 12:36:29
Py然としていないとguidoがオモタから
ttp://www.artima.com/weblogs/viewpost.jsp?thread=147358
130デフォルトの名無しさん:2006/07/08(土) 12:41:09
一般論として
lambda式みたいなところに複雑なロジックを埋め込むと
可読性の悪いコードができあがりがち
def文を使った関数定義は
名前考えたり改行したり面倒だけど
可読性が高いし明瞭でよいとおもう
これがPythonic(Python的)ということなんじゃないかなあ

実際,リスト内包表記とかジェネレータ式
組み込み関数や標準モジュールを組み合わせるだけで
かなりのことができるので
翻訳ドキュメントにさらっと目を通してみることをお勧めする
131デフォルトの名無しさん:2006/07/08(土) 12:53:53
つまりだね

Python初心者:
簡単で明瞭な文法を使って
よちよち歩きながらコードを書く
条件分岐,ループ,(複雑な)関数定義が必要な部分は
パッと見で分かるようにブロックとして分離されるので
自分の書いたコードを反芻しながら学習を続けて行ける

Python中級者:
徐々に組み込み型,組み込み関数の素晴らしさに気づく
標準モジュールを使ったより高度なプログラミングができるようになってくる

Python上級者:
一見複雑な処理も,標準モジュールなどを駆使して簡潔に記述できるようになる
しかも,5秒くらいでどうかけば簡潔になるか思いつくようになる
既存のクラスやフレームワークを拡張して
生産性の高いプログラミングができるようになる

Pythonウイザード:
自分でPython使ったフレームワークやオープンソースプロジェクトを立ち上げる
Googleに雇われる(ww
132デフォルトの名無しさん:2006/07/08(土) 13:05:55
lambdaでできる無名関数てクロージャでしょ?
133デフォルトの名無しさん:2006/07/08(土) 13:20:03
xoltar toolkit駆使するスタイルの人とかもいるんだろうな世の中には
134126:2006/07/08(土) 14:00:58
>>130
どうもありがとうございます。
単に、JavaScriptや関数型言語のように無名関数を生成するためにlambdaがあるのだと思ったのですが、
Pythonのそれは式しか指定できないから、あれっ?と思ったわけです。
def の場合は関数名をつけなければならないし、必ず文にしなければならなくて式として記述できないので、
関数型言語のlambdaやRubyのブロックと比べるとどうしても使い勝手が劣ります。
これがとても残念なので、Pythonのlambdaがわざわざ単一式だけに制限している理由が知りたいなと思ったしだいです。

またリスト内容表記やジェネレータ式が便利なのはわかるのですが、これらで無名関数の機能や用途を
すべてカバーできるわけではないし、そもそも用途が違うので、無名関数の代用にはなりません。
135デフォルトの名無しさん:2006/07/08(土) 14:32:47
pythonのlambdaがそういうもんだっていうのは単なる事実であって
みんなそういうことはわかっててその上でpython使ってるんだよね

lambdaの仕様が致命的だと考えるならlispなりrubyなりjavascriptなり使えばいいよ
136135:2006/07/08(土) 14:35:22
そういうこと=
>def の場合は関数名をつけなければならないし、必ず文にしなければならなくて式として記述できないので、
>関数型言語のlambdaやRubyのブロックと比べるとどうしても使い勝手が劣ります。
137デフォルトの名無しさん:2006/07/08(土) 14:47:06
>>126
その事実がそうなっている理由を知りたいだけ。
別に致命的とはだれも書いてない。
138デフォルトの名無しさん:2006/07/08(土) 14:51:40
式や文が複雑に入れ子になったりするのを嫌ってるんじゃないの?
139デフォルトの名無しさん:2006/07/08(土) 14:56:13
ワンライナーが300文字を超えて分かりにくいから改行したいなら最初からまともな書き方しろって話だろ
実用上はなくてもほとんど困らない
140135:2006/07/08(土) 15:03:50
>>137
あ、そう
なんかこの手の「この言語にはあれがない、これがない」っつーのって
4〜5年前から飽きるほどみてるからさ
今更頼んでもないのにご説明頂いちゃってむかっときたもんで
141デフォルトの名無しさん:2006/07/08(土) 15:04:08
ブロックの中で def するのと,無名関数を宣言できるのとどう違うの?
142デフォルトの名無しさん:2006/07/08(土) 15:05:15
4,5年も見てるならいい加減学習してスルーできないのか。
143126:2006/07/08(土) 15:44:45
>>135,140
lambdaが式しかとらないという仕様にはなにか理由があるはずだと思ったので、
それを聞いただけです。
べつにPythonのlambdaを非難することを狙っているわけじゃないです。
#あの文章を、Pythonへの非難と受け止められるとは思いませんでした。
#仕様がそうなっている理由を質問することがそんなに悪いことでしょうか。

>>138
なるほど。たしかに、インデントでブロックを表すPythonでは、式の中に文をいれるような
ことはしにくいですね。
JavaScriptだと、関数の引数に無名関数を指定できたりするんですが、
こんな感じ → funct(arg1, arg2, function(x, y) { if (x > y) return x; else return y; })
これはJavaScriptがインデントによらずコードを記述できるからできることであって、
同じようなことをPythonでするとして、lambda に文を埋め込むためのきれいな文法はちょっと思いつかないです。
それならdefでいったん関数を作成し、その関数オブジェクトを使う方がわかりやすいです。
個人的にはPythonのインデント方式は好きなんですが、それがこのような制限になるとは。むむむ。

>>141
できる・できないでいうと、どちらもできることに大差はないです。たんに、使い勝手の問題です。
Pythonの関数って、実際にはJavaScriptや関数型言語と同じように関数オブジェクトを変数に
代入してるだけだと思うので、ならJavaScriptや関数型言語のように無名関数を定義できる方法があるだろうと思って。
144デフォルトの名無しさん:2006/07/08(土) 15:52:34
>>129 のことも忘れないであげてください
145デフォルトの名無しさん:2006/07/08(土) 16:01:03
def Lambda(prog):
    exec compile(prog, "lambda", "exec")
    return _

Lambda("""
def _(msg):
  print msg
""")("hello lambda (^^;")
146135:2006/07/08(土) 16:09:34
>>143
非難していると受け取ったんじゃなくて、オナニーがうざいと言っているだけ
147126:2006/07/08(土) 16:45:59
>>144
情報ありがとうございます。>>129 を読んでみましたが、英語なのでよくわかりませんでした。

> But I'm rejecting that too, because in the end (and this is where I
> admit to unintentionally misleading the submitter) I find any solution
> unacceptable that embeds an indentation-based block in the middle of
> an expression. Since I find alternative syntax for statement grouping
> (e.g. braces or begin/end keywords) equally unacceptable, this pretty
> much makes a multi-line lambda an unsolvable puzzle.

「I find any solution unacceptable that embeds an indentation-based block
in the middle of an expression」とあるので、やっぱりインデントされた文を
式の中に埋め込むのは難しい、というふうに読めたのですけど、どうでしょうか。
作者が文章全体でいいたいことは、言語仕様設計はパズルを解くのとは違い、
ユーザインターフェースを設計するのと同じなんだ、ということみたいですが。

>>146
あの文章がオナニーと受け止められるとは思いませんでした。
どこらへんがそう思ったのでしょうか。
148デフォルトの名無しさん:2006/07/08(土) 18:31:58
>>145 を少し変えてみた

def Function(args, body):
    code = "def _tmp_func_(" + args + "):\n"
    code += "\t" + body.lstrip("\n").rstrip().replace("\n", "\n\t")
    exec compile(code, "lambda", "exec")
    return _tmp_func_


map(Function("n", """
    if n % 2 == 0:
        return n * n
    else:
        return n
    """), range(10))
→ [0, 1, 4, 3, 16, 5, 36, 7, 64, 9]


読みづらすぎる・・・
149デフォルトの名無しさん:2006/07/08(土) 19:04:12
>>147
> 作者が文章全体でいいたいことは、言語仕様設計はパズルを解くのとは違い、
> ユーザインターフェースを設計するのと同じなんだ、ということみたいですが。

つまりどういうこと?
150デフォルトの名無しさん:2006/07/08(土) 19:57:09
Q: lambda が式しかとらない仕様の理由は?
A: scheme 由来だから。

# ruby厨は巣に帰れ
151デフォルトの名無しさん:2006/07/08(土) 20:01:06
>>148
inspectとか使って名前空間も引っ張ってくればウマーだな
まずつかわないけどw
152126:2006/07/08(土) 20:22:34
>>150
これってほんとですか?どっかにそう書かれているなら、それを教えていただけないでしょうか。
それから、Schemeのlambdaは本体に複数の式や文を指定できますよ。
Schemeの場合、文も式だから「式や文」という表現はおかしいかもしれませんが。

>>149
英語なんであまりよくわからないんですが、ある機能が実現できるからといって、複雑さも増えてしまっては、使いづらいものになる、ということみたいです。
パズルなら、その解法でパズルが解けるかどうかが重要であって、その解法が
複雑かどうかはあまり問題ではない(複雑でも問題ない)が、
言語仕様は開発者に対するユーザインターフェースなのだから、ある機能を
追加したために仕様が複雑になってしまってはユーザインターフェースとして
失敗だという主張のようです。
lambdaに文を指定できるような文法を持ち込むと複雑になってしまうし、
今でも def でできるわけだから、わざわざ複雑さを増やしてまで導入する必要は
ないという判断なのでしょう。
(間違ってたらごめんなさい)
153デフォルトの名無しさん:2006/07/08(土) 20:28:19
>>148 ワロスw
154デフォルトの名無しさん:2006/07/08(土) 21:43:28
>>143
>こんな感じ → funct(arg1, arg2, function(x, y) { if (x > y) return x; else return y; })

こんなことできる仕様だから、セキュリティ上の問題が発生するんだろ
155デフォルトの名無しさん:2006/07/08(土) 22:15:14
それはない
156デフォルトの名無しさん:2006/07/08(土) 22:16:51
結論: Guidoがそうしたかったから、でいいじゃん。
lambda自体無くしたい、という4月ネタもあったことだし。
157デフォルトの名無しさん:2006/07/09(日) 00:10:50
ヒントー>可読性

158デフォルトの名無しさん:2006/07/09(日) 01:23:13
>>126は前スレでもこんなことしてただろ
159デフォルトの名無しさん:2006/07/09(日) 01:47:53
スカートは長すぎず短すぎない膝丈で清楚なのが
時代に左右されず、長いこと萌えられるよな
というのがPythonなのに
なぜミニスカートじゃないんだ?
ミニスカートのほうが萌えるに決まってる!
スカートが長いのはGuidoがヘンタイなんじゃないのか?

とか言われてもな。
160デフォルトの名無しさん:2006/07/09(日) 03:03:02
てか、キレてるヤツは何でキレてんだろう。

>135とか意味不明すぎてアホっぽくみえる。
161デフォルトの名無しさん:2006/07/09(日) 06:46:45
Py然--Pythonic コレイイネ
162デフォルトの名無しさん:2006/07/09(日) 10:13:48
いいだろ.然は禅にかけたんだよ
163デフォルトの名無しさん:2006/07/09(日) 11:28:52
>>159
オタウゼエ
164デフォルトの名無しさん:2006/07/09(日) 11:43:54
>>154
は?どんなセキュリティ上の問題が出るっての?

言ってみろよ。
165デフォルトの名無しさん:2006/07/09(日) 12:06:00
>>159
オタ臭がぷんぷんする例えだな。
それはそうと、だったらスカートが膝丈である理由を説明してあげればいいだけのこと。
lambdaが文をとらない理由を聞かれてるんだから、それを説明すればいいのに、
「それはそういうもん」とか「lispなりrubyなりjavascriptなり使えば?」とか、
ぜんぜん役にたたないカキコしてもなんにもならん。

>>140
4〜5年も同じことを繰り返して成長がない>>140乙。

>>150
おいおい、PythonのlambdaはSchemeとは関係ないだろ。名前以外。
Schemeのlambdaはif文埋め込めるし。
166デフォルトの名無しさん:2006/07/09(日) 12:07:34
カルシウムが足りない人が多いな
167154:2006/07/09(日) 12:09:17
>>164

別れた女に刺される。
168デフォルトの名無しさん:2006/07/09(日) 12:17:12
いらいらすんなよ。
169デフォルトの名無しさん:2006/07/09(日) 12:21:12
言語オタにもDQNっているんだな(wwww
170デフォルトの名無しさん:2006/07/09(日) 13:08:42
ていうかそもそも「lambdaに文を入れたい」っていう気持ちがあんまりわからないなあ。
ただの手癖?
171デフォルトの名無しさん:2006/07/09(日) 13:21:11
>>170
直交性という意味では理解できるけど、そもそも文=インデントされた行というPythonには
スタイル的に似合わないと思う。仮に実装したとしてもスコープが2階層しか存在しない
(クロージャが無い)からLispにおけるlambdaほどの実用性はないのではないか。
単純な式程度のものを渡したいという用途を考えればPythonのlambdaのような割り切りは
それなりに納得できる。
172デフォルトの名無しさん:2006/07/09(日) 13:22:48
じゃあ読みやすいコードを書かせるために制約をもうけるPythonからすると、
「lambdaに文を入れるのは手癖がわるい」ということになるのかな。
173デフォルトの名無しさん:2006/07/09(日) 13:40:40
そもそもlambdaって、無名式じゃん。
174デフォルトの名無しさん:2006/07/09(日) 14:33:28
やっぱり敗北者を付けないとまずいな
175デフォルトの名無しさん:2006/07/09(日) 14:52:55
>>172
その手癖じゃないだろ
176デフォルトの名無しさん:2006/07/09(日) 15:36:18
>>170
はげしく同意
177デフォルトの名無しさん:2006/07/09(日) 17:04:05
じゃあ、Pythonにif式が無いのはなぜ?
178デフォルトの名無しさん:2006/07/09(日) 17:10:39
読みにくくなるから。
179前スレ797:2006/07/09(日) 17:17:43
lambdaに関しては思うところがあるので、私も返答させていただく。不快に思わ
れる方は透明あぼーん推奨だ。

まず第一に、Python界で、関数型言語的な機能は、鬼っ子扱いされているという
ことだ。Guido van Rossum自身、「lambdaもmapもreduceも分かりづらくて嫌い
だ」と明言している。こういう分かりづらい機能はなるべく制限したい、という
声がPythonユーザの大勢を占めている。

第二に、関数型的なユーザの中でも、機能を制限したい、という声があることだ。
近代的な関数型言語では、関数に何でも許可してしまうLISPのような言語は原始
的だ、と考えるんである。
http://www.sampou.org/haskell/article/whyfp.html
詳しくはHaskellなどを学べばいいと思う。

この二つの意見が一致したため、Pythonのlambdaには、ステートメントを実行で
きないという制約がついているのだろう。

しかし、こういう質問が出るのも当然ではある。Pythonは一見するとすごく関数
型的に見えるから、LISP経由でPythonに来た人間は、どうしてもその流儀で書き
たくなる。しかし、PythonはCユーザに一番書きやすいように出来ているのだ。
関数がファーストクラス・オブジェクトなのは、単に関数ポインタを自然に実現
するためだったんだと思う。

PythonにはPythonの流儀がある。実行の単位が関数ではなくステートメントなの
も、時代と逆行するかのようだが、Python的なこだわりのひとつなのだろう。

そのこだわりには、わずかにHaskellに通じるものがあって、私はその辺が気に
入っている。LISPの流儀で書きたい人は、Rubyのほうが幸せになれると思う。

あと、念のために書いておくが、Pythonにクロージャは存在する。
180デフォルトの名無しさん:2006/07/09(日) 17:25:01
>>177
if式ってa = b ? c: d;のことか?
それなら2.5で導入されるぞ。

Noneであれば別のもの、なら今でもできるけど。
181デフォルトの名無しさん:2006/07/09(日) 17:31:25
>>179
>
>第二に、関数型的なユーザの中でも、機能を制限したい、という声があることだ。
>近代的な関数型言語では、関数に何でも許可してしまうLISPのような言語は原始
>的だ、と考えるんである。
>http://www.sampou.org/haskell/article/whyfp.html
>詳しくはHaskellなどを学べばいいと思う。

上のページは読んだことあるけど、「機能を制限したい」とはどこに書かれてる?見つけられなかった。
Haskell学ぶほどの余裕はないので、教えてほしい。
182前スレ797:2006/07/09(日) 17:45:16
>>181
「参照透明」性がその答えだ。すなわち、関数に副作用がないこと。具体的には、
変数への再代入がないこと、制御フローがないことなどを指す。

これは手続き型に慣れたユーザには、理不尽な制約としか見えないだろう。しか
し、この参照透明性のおかげで、近代的な関数型言語では、自由な関数合成(高
階関数)と遅延評価が実現できるのだ。いずれも計算量とプログラマの負荷を激
減させる可能性のある、きわめて重要な機能だ。

遅延評価は、Pythonではジェネレータという形で実現されている。
183前スレ797:2006/07/09(日) 17:55:21
訂正。

×ジェネレータ → ○イテレータ
ジェネレータしか使っとらんのでつい間違えた。

参照透明性の説明もずいぶんアレだが、まあリンク先を見れば分かるから
良かろう。
184デフォルトの名無しさん:2006/07/09(日) 21:00:18
要するに「OOP的にはlambdaは要らない子」
185デフォルトの名無しさん:2006/07/09(日) 21:23:51
変な言語厨ばかり寄ってくるからlambdaいらない。
186デフォルトの名無しさん:2006/07/09(日) 21:35:13
>>184
OOP的には(笑)
187デフォルトの名無しさん:2006/07/09(日) 21:38:41
>>185
>言語厨ばかり寄ってくるからlambdaいらない。

ワンライナー書く時に便利だから残しといて
188デフォルトの名無しさん:2006/07/09(日) 21:44:56
一応Lisp屋だけど、Pythonのlambdaは使わないな
普通にローカルでdefって渡すほうがPythonっぽいと思う
189デフォルトの名無しさん:2006/07/09(日) 21:53:44
正直179みたいなこと延々と語られると萎える
159みたいなののほうが3000倍マシ
190デフォルトの名無しさん:2006/07/09(日) 22:32:07
>>188に同意
ローカルでdefれるから、lambdaを使うのはすごく簡単な内容だけ。
191デフォルトの名無しさん:2006/07/09(日) 22:57:27
>>182
参照透明性(副作用がないこと)と、>>179の「機能を制限したい」との関係がよくわからん。
>近代的な関数型言語では、関数に何でも許可してしまうLISPのような言語は原始
>的だ、と考えるんである。
参照透過性を実現するには代入のような副作用を禁止することであって、
関数に何でもかけてしまうこととは直接の関係はないんじゃね?
Haskellの関数には何でもかけるけど、参照透過性は確保されている。
(そもそも、関数型言語では関数に何でも書けるようになってないと困るだろ。)

またPythonのlambdaは式しか書けないから参照透過性が実現されているかというとそうではない。
なぜなら式は関数呼び出しを含めることができ、かつPythonの関数は副作用を含めることができるから。

それから、Pythonのlambdaでは式しか書けないのは参照透過性を実現するためだというのは、
意見としてはおもしろいけど、>>129みるかぎりはそこまで深いことは考えてなさそう。
192デフォルトの名無しさん:2006/07/09(日) 22:59:41
正直159みたいなこと延々と語られると萎える
179みたいなののほうが3000倍マシ
193デフォルトの名無しさん:2006/07/09(日) 23:21:01
print None や print str(None) とすると "None" が表示されるんだけど、
何も表示されない(または空文字列が出力される)ようにするよさげな方法ある?
今は
def to_string(val):
 if val == None:
  return ''
 else:
  str(val)
としてるんだけど、自分で関数を定義しなくても、このくらいなら標準でなんかライブラリがありそう。
194前スレ797:2006/07/09(日) 23:22:25
>>191
やっと意図したようなレスが返ってきた。あなたの意見にはほぼ全面的に賛成だ。

>>179をもう少し正確に言い直すなら、Pythonのlambdaの制約をなくしたいとい
う主張に対して、関数型言語的ユーザの足並みが揃わないことの理由であって、
これだけで参照透過性が保証されるわけでは全然ない。また、van Rossumがそれを
却下した理由が、参照透過性でないことは、おっしゃるとおりだ。

ただ、こういう話には、このスレでは非常に風当たりが強いから、思い切り
端折るしかなかった。

>>180によると、2.5で三項演算子が導入されるようだ。これでPythonでも
Y Combinatorが書けるようになるということか。
195デフォルトの名無しさん:2006/07/09(日) 23:28:33
>>194
参考演算子っていっちゃいけないんだよ
196デフォルトの名無しさん:2006/07/09(日) 23:46:02
あなたのうしろの山田さん。
197デフォルトの名無しさん:2006/07/10(月) 01:53:45
rubyの作者並にオブジェクト指向を理解できていない人が多いようだね。
198デフォルトの名無しさん:2006/07/10(月) 02:07:40
理解できてなくても理論的に劣ってても思った通りに動きゃいい
199デフォルトの名無しさん:2006/07/10(月) 02:13:18
つまり理解できてなくて劣っていて動きゃいい人のための言語。
200デフォルトの名無しさん:2006/07/10(月) 02:27:06
なんでここはキチガイが多いの?
201デフォルトの名無しさん:2006/07/10(月) 02:28:06
rubyはスレッド実装が終わってるので近い将来には過去の遺物になるよ。
pythonは良くも悪くもgoogleと一蓮托生なので少なくともgoogleの寿命分は生き残る保証がある。
202デフォルトの名無しさん:2006/07/10(月) 03:08:12
google(笑)
203デフォルトの名無しさん:2006/07/10(月) 03:16:15
>>201
>pythonは良くも悪くもgoogleと一蓮托生なので

良くも悪くもFUDですよ。
204デフォルトの名無しさん:2006/07/10(月) 03:34:16
>>201
Rubyのスッドレは2.0ではマシになるのかな?
新しいスレッド実装が安定するまで
どのくらいの時間がかかるのかは分からないけどね

いずれにしろ
matzが自ら言語コアの実装するのを諦めて
開発体制を一新しないと先は短いだろうね

Guidoが何年も前になしえたことを
Rubyは何年かけてやるんだろうね
205デフォルトの名無しさん:2006/07/10(月) 06:03:11
matzは危なっかしくてついてくの怖い
206デフォルトの名無しさん:2006/07/10(月) 10:06:13
モルモン焼き
207デフォルトの名無しさん:2006/07/10(月) 11:54:30
おいそがしいところすみません。
rpmとかyumみたいに進行具合をプリントするのってどうやるのですか?
208デフォルトの名無しさん:2006/07/10(月) 12:03:20
カーソル戻して既に書かれているのと同じ場所に書くっていう意味?
209デフォルトの名無しさん:2006/07/10(月) 18:04:35
210デフォルトの名無しさん:2006/07/10(月) 19:55:36
******・・・・  / 60%
↑       ↑
|     なんかクルクルまわるやつ
こーゆーやつじゃね?
211デフォルトの名無しさん:2006/07/10(月) 20:02:55
>>210
俺もそっちじゃないかと思う。
スクリプトの途中にpirnt文を書いたときに、
その時点で次々printされるときと、スクリプトの最後にまとめてprintされる時がある。
詳しく調べてないんでどういう時に違いがおこるのかは分からん。
212デフォルトの名無しさん:2006/07/10(月) 20:54:56
最近はバッファリングとかフラッシュも知らない奴が来てるのか
213デフォルトの名無しさん:2006/07/10(月) 22:10:16
>>212
はいはい、あんたが物知りなのはわかったから、わかりやすく教えてやれ
214デフォルトの名無しさん:2006/07/10(月) 22:21:12
pythonは、デフォでSTDIOもバッファリングするの?
215デフォルトの名無しさん:2006/07/10(月) 22:21:21
バカはぐぐれ
216デフォルトの名無しさん:2006/07/10(月) 22:22:52
調べればすぐにわかることを聞く奴ってうざいよね
217デフォルトの名無しさん:2006/07/10(月) 22:23:34
あるオブジェクトの属性を追加するときに、属生名を文字列で指定する方法はありますか。
つまり
obj.name = val

attr = 'name'
obj.set_property(name, val)
みたいなかんじでできないでしょうか。
218デフォルトの名無しさん:2006/07/10(月) 22:24:35
本当に知りたいのなら問題の起きるソースくらい晒してくれないと聞く側にくらべて
答える側の負荷が高すぎて著しく不公平だと思う
答えるのは超能力者ではない
219デフォルトの名無しさん:2006/07/10(月) 22:25:15
>>217
ある
220デフォルトの名無しさん:2006/07/10(月) 22:27:06
>>219
どうすればいいんでしょうか
221デフォルトの名無しさん:2006/07/10(月) 22:29:15
>>207
こうやる。

import sys, time
for i in range(11):
sys.stdout.write("%10s %d%%\r" % (("#" * i) + ("." * (10-i)), i * 10))
sys.stdout.flush()
time.sleep(1)
sys.stdout.write("\n")

ポイント:
1. \n(行送り)の代わりに \r(行頭に復帰)を使う。
2. 行送りをしないと画面に表示されないシステムがあるので .flush() を呼ぶ。

kterm とDOS窓では動いた。IDLE ではダメぽ。
222デフォルトの名無しさん:2006/07/10(月) 22:29:40
>>220
obj.__dict__[name] = val
223デフォルトの名無しさん:2006/07/10(月) 22:31:05
>>217
>>> setattr(a, "foo", 1)
>>> a.foo
1
>>>
224デフォルトの名無しさん:2006/07/10(月) 22:39:29
>>222
__dict__という属性がないようですが。
obj = object()
obj.__dict__['foo'] = 123
を実行すると
AttributeError: 'object' object has no attribute '__dict__'
というエラーがでます。
225デフォルトの名無しさん:2006/07/10(月) 22:45:14
>>224
自分でクラスを定義して、そのインスタンスオブジェクトならできました。
class Foo:
 pass

obj = Foo()
obj.__dict__ #=> {}
setattr(obj, 'foo', 123)
obj.foo #=> 123

>>222,223 どうもありがとうございました。おかげさまで解決しました。
しかし、Pythonのマニュアルは充実してるのはいいんですが、どこに何が書かれてあるのかを
見極めるのが難しいですね。
今回も、リファレンスマニュアルで探そうとしたんですが、さっぱり見つかりませんでした。
難しい。
226デフォルトの名無しさん:2006/07/10(月) 22:45:33
>>>224

>>>class klass: pass;
...

>>> k = klass()
>>> k.__dict__["foo"] = 1
>>> k.foo
1

Old Style Classだとできる。
227デフォルトの名無しさん:2006/07/10(月) 22:46:49
>>> class new_klass(object): pass;
...
>>> nk = new_klass()
>>> nk.__dict__["foo"] = 1
>>> nk.foo
1

あ,New Style Classでもできた(www
228デフォルトの名無しさん:2006/07/11(火) 00:24:04
__slots__ 宣言があるクラスのインスタンスに対しては __dict__ が生成されないのでござるよ
229デフォルトの名無しさん:2006/07/11(火) 00:29:14
ニンニン
230デフォルトの名無しさん:2006/07/11(火) 00:52:32
そうなんです。
210みたいなのがやりたいんですが、
プリントされたのを一回一回消して上書きしてるんですか?
キーワードを教えてください。あとは検索しますので。
答えてくださったかたありがとうございます。
231デフォルトの名無しさん:2006/07/11(火) 00:58:16
232124:2006/07/11(火) 01:42:44
(´・ω・`)
233126:2006/07/11(火) 01:45:53
今日の発見:
pythonのdefやimportって、宣言文じゃなくて実行文なんですね。知りませんでした。
def f1(arg):
 print arg
というのは、JavaScriptチックに書くと
f1 = function(arg) {
 print(arg);
}
ということなんですね。実行時に関数オブジェクトを作成し、変数に代入してるだけ。
たしかに、これなら関数を「文がかけるlambda」として使うことに納得がいきました。
defは宣言文だと思ってたので、lambdaのかわりにdefを使うというのはすごく違和感があったんです。
ようやくわかったよー。確かにこれならlambdaを無理に拡張する必要ないですね。

>>170
>ていうかそもそも「lambdaに文を入れたい」っていう気持ちがあんまりわからないなあ。
ぜひとも文を入れたい、というわけじゃなくて、単になんで文が指定できないのかなと思ったのがそもそもの発端です。
でもPython2.4では3項演算子がないので、lambdaにif文を指定したいときはあります。
「cond and val1 or val2」でもいいんですけど、これは偽となる値をval1に入れられないので。
(入れるとcondに関わらずいつもval2が返されてしまう。)
234デフォルトの名無しさん:2006/07/11(火) 03:02:37
一見ちぐはぐに見える仕様も
よく見ると理にかなった理由がある
それがPythonという言語であり
仕様が導き出されるに至理由を知ることこそが
Pythonという言語を学ぶ楽しさであると思う
235デフォルトの名無しさん:2006/07/11(火) 03:53:20
ご清聴ありがとうございました







====================終了======================
236デフォルトの名無しさん:2006/07/11(火) 07:09:14
pythonを起動して
>>> from test import test_support
はうまくいくのに、スクリプトに
from test import test_support
と書いて実行すると
ImportError: cannot import name test_support
というエラーがでて困ってます。
test/test_support.py は sys.path に含まれるディレクトリのひとつにちゃんとあるので、
パッケージがないというわけではないと思います。
どなたか、考えられる原因をあげていただけますか。
環境:python2.4.3 on MacOS X
237デフォルトの名無しさん:2006/07/11(火) 08:01:07
UNIXのコマンドを実行して、その出力を文字列としてうけとるにはどうしたらいいですか。
import os
result = os.system("date")
だとコマンドの終了ステータスが返るだけで、実行結果が文字列で返されるわけではないようです。
238デフォルトの名無しさん:2006/07/11(火) 08:12:49
os.popen
239デフォルトの名無しさん:2006/07/11(火) 09:36:26
>>238
import os
f = os.popen("date", 'r')
result = f.read()
f.close()
でできました。どうもありがとう。
でももうちょっと簡単にできてほしいな。
240デフォルトの名無しさん:2006/07/11(火) 10:20:58
scipy使いたいのに事例が見受けられません
241デフォルトの名無しさん:2006/07/11(火) 10:33:01
http://www.scipy.org/SciPy2006
逝っておいで
242デフォルトの名無しさん:2006/07/11(火) 10:38:05
>>236
複数バージョンのpythonが入ってるとか?
sys.versionみてみるとか。
243デフォルトの名無しさん:2006/07/11(火) 10:45:04
>239
行数けちりたいだけなら
result = os.popen('command').readlines()
とかでいいんじゃね?
244デフォルトの名無しさん:2006/07/11(火) 11:42:53
>>236
2.4.3なら、OSXに最初から入ってるのと別だから、>>242さんの原因だと思う。
スクリプトを実行するのはどうやってるの?
「pythonを起動して」と同じように「python スクリプトファイル名」にしてる?
スクリプトの方に
print sys.path
って書いて実行しても、そのパッケージのディレクトリは表示されてる?
245デフォルトの名無しさん:2006/07/11(火) 13:41:41
>>240
最近 SciPy の CG 法で連立一次方程式を解いて PyOpenGL で
シミュレーション結果を描画するコードを書いた俺がきましたよ.
自然科学のバックグラウンドがあれば数値シミュレーションが
必要になることもあるんだろうけど,俺にはそーゆーのが全然ない.
でも仕事で数値計算そのものを扱っていて,例題がたくさん必要.
つーわけで数値解析とか MATLAB とかその手の教科書を眺めて
例題を探してる.>>240さんの要求に合うか分からんけど参考までに.
246245:2006/07/11(火) 13:44:54
ん、待てよ。誤読した鴨。
>>240さんが欲しいのは例題じゃなく導入事例か。
失礼しますた。
247デフォルトの名無しさん:2006/07/11(火) 14:14:19
>>245
naistの人乙
248デフォルトの名無しさん:2006/07/11(火) 14:37:01
>>243
os.popen()が返すファイルオブジェクトをクローズしてないけど、それはいいんでしょうか。
249デフォルトの名無しさん:2006/07/11(火) 14:43:10
>>234
>一見ちぐはぐに見える仕様も
>よく見ると理にかなった理由がある
>それがPythonという言語であり
>仕様が導き出されるに至理由を知ることこそが
>Pythonという言語を学ぶ楽しさであると思う

その「理にかなった理由」とやらを聞いもだれも答えられないどころか
逆切れするやつがいることについて
250デフォルトの名無しさん:2006/07/11(火) 14:47:55
>>249
このスレを見てると、たいていはちゃんと答えてるよ
英文のURL貼り付けるだけ、というようなことも多いけど

>逆切れするやつがいることについて

逆切れしてるのは誰だろな(wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
251デフォルトの名無しさん:2006/07/11(火) 16:06:26
>>249
いねーよw
252デフォルトの名無しさん:2006/07/11(火) 16:30:53
スレタイ失敗じゃない?
「敗北者」をはずしてから
ギャグの質が落ちてる。
253デフォルトの名無しさん:2006/07/11(火) 16:34:53
>>248
それいいはじめたら、あらゆるオブジェクトに対して
デストラクタ呼んでないんですけどいいんですか?って話になるような
254デフォルトの名無しさん:2006/07/11(火) 16:39:38
>>248
.readlines() を実行し終わった時点でファイルオブジェクトを参照している
オブジェクトが無くなり、オブジェクトが破棄される。そのときに自動的に
ファイルが閉じられる。よって明示的に閉じなくても無問題。
255デフォルトの名無しさん:2006/07/11(火) 16:40:54
既存のクラスに対して、サブクラスをつくることなしに、あとからメソッドとかを追加するようなことはできますか。
Rubyでは組み込みクラスだろうがなんだろうが、既存のクラスにメソッドを追加したり上書きしたりができて、
Ruby on Railsはそれを思いっきり使って、Webプログラミング関連の便利なメソッドを追加しまくってるんですけど、
もしPythonでもメソッドの追加ができるならその方法を教えてください。

なおこれはPythonとRubyとを比較したり優劣をつけるのが目的じゃなくて、
純粋にそういうことができるかどうかを聞いてるだけなんで、切れないでください。
256デフォルトの名無しさん:2006/07/11(火) 16:49:49
>>253
デストラクタとclose()とは違うんじゃない?close()したからってオブジェクトがなくなるわけじゃないよね。
import os
f = os.popen("date")
s = f.read()
f.close()
print f # オブジェクトが表示される
ファイルを閉じることと、オブジェクトが破棄されることとは別だよ。

>>254
>.readlines() を実行し終わった時点でファイルオブジェクトを参照している
>オブジェクトが無くなり、
これほんと?ファイルオブジェクトを参照している変数がないだけで、
オブジェクト自体はGC走るまで存在しつづけてるんじゃないの?
257デフォルトの名無しさん:2006/07/11(火) 17:00:55
>>255
class A:
    def foo(self, x):
        self.bar(x, x+1)

def bar(self, x, y):
    print x, "+", y, "=", x+y

a = A()
a.__class__.bar = bar
a.foo(1)

>>256
254だけど、「これほんと?」はどこにかかっているの?
258デフォルトの名無しさん:2006/07/11(火) 17:25:05
>>256
リファレンスカウンタだから、参照する変数がなくなった時点でGCされるんじゃないの?
259256:2006/07/11(火) 18:07:07
>>257
「これほんと?」は>>256で引用した箇所全体にかかる。

>>258
そうなんだ。
Javaだとどこからも参照されないオブジェクトはGCされないと破棄されないけど、
Pythonだとどこからも参照されなくなった時点で必ず破棄されるのね。
これは仕様なんだよね?

じゃあファイルを読み出すのは
content = open('file.txt').read()
ファイルに書き出すのは
open('file.txt', 'w').write(content)
というふうに簡潔に書けるね。
260デフォルトの名無しさん:2006/07/11(火) 18:18:26
↓実験
>>> for i in range(10): print open("file.txt")
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>
<open file 'file.txt', mode 'r' at 0x00A9A338>

仕様のどこ見ればいい?
261デフォルトの名無しさん:2006/07/11(火) 18:23:22
>246
まあ使いたいなら事例がなくても使えばいいじゃん
ってことで >245 的なことでいいんじゃね?

書籍だとこの辺かな:
Python Scripting for Computational Science,
by H. P. Langtangen.
http://www.springer.com/sgw/cda/frontpage/0,11855,1-40109-22-83511316-0,00.html
ちょっと高いけどね

書籍に限らず良い資料があれば興味あるんでよろしく > エロい人
262デフォルトの名無しさん:2006/07/11(火) 18:24:34
ヒント : 最近はそういうことを気にしない

大規模なアクセス受けるサーバとかならべつだけど。
263デフォルトの名無しさん:2006/07/11(火) 18:36:54
>>259
> 「これほんと?」は>>256で引用した箇所全体にかかる。

もちろん本当。>>243

result = os.popen('command').readlines()

という文の実行が終わった時点でファイルオブジェクトを参照している
オブジェクトは存在しない。よってファイルオブジェクトは破棄される。

class A:
    def foo(self):
        return "foo"
    def __del__(self):
        print "deleted"

bar = A().foo()
print bar

このコードを実行するとまず "deleted" と表示され、次に "foo" と表示される。
つまり bar = A().foo() の実行が終わった時点で A のインスタンスが破棄されている。
264256:2006/07/11(火) 18:45:03
>>262
いや、気にするべきだろ。
ちゃんとわかってて、あえて気にしないなら別にいいけど、
わかってないから気にしないというのは技術者としてクソ。

>>263
さんくす。あとは、この動作が仕様として決まっているかどうかを知りたいんだけど、識者の人おねがい。
しかしリファレンスカウントGCにプログラムを簡潔にする利点があるとは知らなかった。
すごいぞPython。
265デフォルトの名無しさん:2006/07/11(火) 18:51:32
>>259, >>264
ファイルオブジェクトがGCの対象になるとcloseは自動的に行われるが、
自動でcloseするという機能は仕様で定められているわけではないので
将来なくなる可能性もゼロではない。よってclose()は書いておいたほうがいいと
「初めてのPython 第2版」p135-136に書いてあります。
266デフォルトの名無しさん:2006/07/11(火) 18:52:53
267256:2006/07/11(火) 18:55:07
自分で確かめてみた。

Python(hoge.py):
-----
import time
open('foo.txt', 'w').write('hoge')
time.sleep(15)
-----

これを実行すると、プログラムが終了するまえにファイルに書き出されている。
つまり参照がきれるときにファイルオブジェクトが破棄され、そのときにファイルに書き出されていると思われる。

Ruby (hoge.rb):
-----
File.open('foo.txt', 'w').write('hoge')
sleep(15)
-----

これを実行すると、プログラムが終了するまでファイルに書き出されない。
つまり参照がきれてもファイルオブジェクトは生き続けており、
プログラムが終了するときにオブジェクトが破棄され、そのときに書き出されていると思われる。

改めて>>254>>263に多謝。
268デフォルトの名無しさん:2006/07/11(火) 19:03:49
>>260
何を知りたいのかわからないがリファレンスの2.1節と2.3.9節辺りを
読めば(・∀・)イイ!!んじゃないかと思う
269デフォルトの名無しさん:2006/07/11(火) 19:10:56
>>257
ありがとうございました。やりたいことができました。
class Foo:
 def f1(self): print "foo"

def f2(self): print "bar"

Foo.f2 = f2

obj = Foo()
obj.f1()  #=> "foo" 既存のメソッド
obj.f2()  #=> "bar" 追加したメソッド

これをみると、JavaScriptのようなプロトタイプベースに見えて仕方ないんですけど、
「Pythonはプロトタイプベースである」と言い切って問題ないでしょうか。
270デフォルトの名無しさん:2006/07/11(火) 19:25:38
>>269
「プロトタイプベース」という単語の定義次第だろう
271デフォルトの名無しさん:2006/07/11(火) 19:29:53
言語厨はそうやって、すぐプロトタイプなんとかとか
一見高尚そうな言葉を振り回したがるんだよな。
Python的には単にオブジェクトへの属性追加だ。
272デフォルトの名無しさん:2006/07/11(火) 19:34:29
分類厨なんじゃないかな
273デフォルトの名無しさん:2006/07/11(火) 19:58:54
何でこのスレの人間の多くは、自分より物を知っている人間を、すべて
「無意味な知識を集めるマニア」と決め付けたがるのだろう。
自分が物を知らないという可能性を検討しないのだろうか。
274デフォルトの名無しさん:2006/07/11(火) 20:07:11
実際に使える役に立つテクニックとかだったら偉いと思うけど
「Pythonはプロトタイプベースである、で問題ない?」とか言われても
だから何?好きにすれば?としか言いようがないだろ。
275デフォルトの名無しさん:2006/07/11(火) 20:20:55
AjaxとかでJavaScriptを使い込んだ人間なら、「プロトタイプベースだよ」と
言われれば「じゃああのテクニックもこのテクニックも使える」と考えるんだ
よ。君には利益はないかもしれないが、質問者には利益があるのだ。

また一見してすぐに役立つものだけが、価値があるとは限らない。オブジェク
ト指向だって「なんの役に立つのか」と言う人が、まだいなくなったわけでは
ないよ。
276デフォルトの名無しさん:2006/07/11(火) 20:23:17
まあどっちもおちけつ。
277269:2006/07/11(火) 20:30:15
>>271
べつに高尚な言葉とは思いませんが、気に障ったのならすみません。スルーしてください。
>Python的には単にオブジェクトへの属性追加だ。
このへんがJavaScriptとそっくりなんで、これならPythonはプロトタイプベースなんだろうかと
いう疑問がでるのは自然なことでは?

Pythonにはclassというキーワードがありますが、もしかしたら中の仕組みはプロトタイプベースで、
classというキーワードはそれをクラスベースっぽくみせるためのものなのかなと思いました。
JavaScript2.0でもclassが導入されるそうなんですが、これもプロトタイプベースをクラスベースに
みせけかるためのシンタックスシュガーらしいので、Pythonも同じようなのかなと思って聞いてみました。

>>274
たかが2chなんで、興味ない人はスルーしてください。お願いします。
278デフォルトの名無しさん:2006/07/11(火) 20:43:32
自分でやってみれば確認できることをなんでいちいち人に聞くかね?
279デフォルトの名無しさん:2006/07/11(火) 20:52:12
>>278
答えたくない奴の方こそ答えたい奴にまかせてだまっとけばいいんジャマイカ?
280デフォルトの名無しさん:2006/07/11(火) 20:56:34
黙ってると誰も答えず、教えて君が教えて教えてと連レスしてスレが死ぬ。
281デフォルトの名無しさん:2006/07/11(火) 21:04:39
JavaScript やってる人は
Python はクラスベースに見える?
プロトタイプベースに見える?
どっち?
282デフォルトの名無しさん:2006/07/11(火) 21:09:41
参照されてないオブジェクトが削除されるタイミングは(GCの)実装依存
283デフォルトの名無しさん:2006/07/11(火) 21:13:24
この質問者は、試せば分かることなんて聞いてないよ。これは定義の問題だか
ら。

まあ>>270のとおり、「プロトタイプベース」の定義次第だろう。実際のとこ
ろ、プロトタイプベースとクラスベースの間に、はっきりした境界線はないと
思う。

私見で言うなら、Pythonはプロトタイプベースではない。プロトタイプベース
の私の定義は、「クラスオブジェクトとインスタンスオブジェクトの区別がな
いこと」だ。私の知る限り、Pythonはそうではない。

具体的な話をすると、JavaScriptは、new Object() で作ったインスタンスに
適当にプロパティをセットして、それを別のコンストラクタのプロトタイプと
することができる。だけどPythonのクラスオブジェクトは、他のクラスの継承
はできても、インスタンスから継承はできない。
284269:2006/07/11(火) 21:17:38
>>281
最初はクラスベースかと思ってましたが、勉強していくうちに
プロトタイプベースに見えて仕方ありません。
>>257なんかJavaScriptとほんと同じようにみえます。
285デフォルトの名無しさん:2006/07/11(火) 21:19:41
自分の思った定義通りに動くのか、それを試せばいいだろ
286269:2006/07/11(火) 21:24:27
>>283
なるほど!すごくわかりやすい説明です。
たしかに、この説明ならPythonはプロトタイプベースではないですね。
たいへんよくわかりました。聞いてみてよかったです。ありがとうございました。


話はかわりますが、リファレンスマニュアルの索引
http://www.python.jp/doc/release/ref/genindex.html
をSafariで読むと、文字化けします。
このページの86行目と2029行目に化けた文字が入っているようで、
これを削除したら正常に表示されるようになりました。
(たぶん日本語の最初の1バイトが入っているんだと思います。)
同様に、ライブラリリファレンスの索引
http://www.python.jp/doc/release/lib/genindex.html
も86行目と6395行目にある化けた文字のせいで文字化けします。
チュートリアルの索引も同様でした。

ここでお願いすることじゃないとは思いますが、もしwww.python.jpの
中の人がいましたら、修正していただくようお願いします。

なおFirefoxだと化けた文字を勝手に「?」に変換してるみたいで、
文字化けはしませんでした。えらいぞFirefox。
287デフォルトの名無しさん:2006/07/11(火) 22:02:14
最近自演が目立つな
288デフォルトの名無しさん:2006/07/11(火) 22:58:28
メインで C と Ruby と C++ で、最近事情があってPython始めてみたけど、
JavaScriptと一緒でプロトタイプベースだなって思う。
Python自体にあまりなれているワケじゃないけど、あちこちにあるサンプルコードの
書き方を見る限り、そんな感じがする。

JavaScriptとかは好きじゃなかったんだけど、Pythonでプロトタイプベースな
OOのいいところ学べればなって思ってる。
289デフォルトの名無しさん:2006/07/11(火) 23:07:35
で ぷろとたいぷべーす ってナニ?

木馬?
290デフォルトの名無しさん:2006/07/11(火) 23:14:34
木馬ならニュータイプベースだな
291デフォルトの名無しさん:2006/07/11(火) 23:30:51
python はプロトタイプベースじゃないっしょ
クラスを定義するのが普通だし
292デフォルトの名無しさん:2006/07/11(火) 23:38:57
prothon w
293デフォルトの名無しさん:2006/07/12(水) 00:12:25
東南アジアで7のパチ作ってた自動車メーカーみたいだなw
294デフォルトの名無しさん:2006/07/12(水) 00:29:51
Pythonの場合
プロトタイプ「風」にも使える
オブジェクト指向機能実装ということじゃね?
295デフォルトの名無しさん:2006/07/12(水) 00:42:46
お題目なんてどうでもいいよ
296283:2006/07/12(水) 01:48:47
だからPythonはクラスベースだと言うのに。クラスやインスタンスに後付けでメ
ソッドをくっつけられたって、それだけじゃプロトタイプベースじゃないんだよ。
もう一度>>283を読んでくれよ。Pythonとは根本的には関係ないんだよ。

まあ読んでもこの文じゃ分からんか。プロトタイプベースは結構理解しづらい。
分かってしまえば、あっけに取られるほどシンプルなのだが。

JavaScriptを使う機会があったら、Pythonとどこが同じでどこが違うか、きっち
り学んでみても損はないと思う。

あと、お題目は大事だ。例えばPythonが「オブジェクト指向言語」だと意識して
こそ、その機能を生かした良いコードが書ける。デザインパターンなぞ、お題目
以外の何物でもないが、その重要性を否定するのは今やDQNしかいない。
297デフォルトの名無しさん:2006/07/12(水) 01:52:58
空気の読めない言語オタが来ましたよ。
298デフォルトの名無しさん:2006/07/12(水) 01:55:27
ほんとだ、空気の読めないただのオタが↑にいるよ。
299デフォルトの名無しさん:2006/07/12(水) 02:00:59
時刻の1/100杪が偶数ならプロトタイプベース、奇数ならクラスベース
さあ、どうだ?
300デフォルトの名無しさん:2006/07/12(水) 02:02:01
・・・あら・・・ここの板は杪までしか出なかったのか・・・
301283:2006/07/12(水) 02:15:55
煽り合いは不毛だからやめようぜ。

あとな、日本で今Pythonに興味を持っているのは、はっきり言って言語オタばか
りだと思うぞ。
((Java or C# or PHP) and SQL) → ((Perl or VB) and JavaScript) →
(C++ or Ruby) → (LISP or Scheme or Python) → (ML or Haskell)

職業プログラマが学ぶ優先順位として、正味 Pythonの位置はこの辺なんだから。
Haskellはちょっとブームだから、今はもうひとつ上ぐらいか。

だからな、今後も君らからすると言語オタばかりが来ることになるわけで、煽っ
て追い返してもきりがないぞ。つうかこんな狭い世界で煽り合いをしても、
Pythonの先細りが進むだけだぞ。

Python自体はいい言語なんだから、もったいない話だと思うが。
302デフォルトの名無しさん:2006/07/12(水) 02:28:25
また荒れそうな分類だな(w
303デフォルトの名無しさん:2006/07/12(水) 02:47:28
>>301
普通の職業プログラマは指示された言語しか学ばねーよ(w
だから糞コードを大量生産して、趣味でプログラムをやってた新人に笑われるんだよ。
304デフォルトの名無しさん:2006/07/12(水) 02:51:42
言語オタの分類は荒れる
なぜなら空気が読めないから
305デフォルトの名無しさん:2006/07/12(水) 02:53:21
306デフォルトの名無しさん:2006/07/12(水) 03:07:22
>>301
'Python'を'Ruby'で置換するなら同意。
307269:2006/07/12(水) 04:21:42
>>292
>prothon

http://www.prothon.org/
死んでるみたい
308デフォルトの名無しさん:2006/07/12(水) 05:21:19
ローカル変数の名前と値をdictとしてとりだすvars()という関数があるけど、
逆にdictをローカル変数の名前と値として設定してくれる関数はある?
309デフォルトの名無しさん:2006/07/12(水) 06:02:47
俺はCとC++の代わりにPythonだな。
この二つの言語だけで必要十分だと思うよ。
310デフォルトの名無しさん:2006/07/12(水) 09:14:13
で,Pythonさんのうち,どちらがパイさんでどちらがソンさん?
311デフォルトの名無しさん:2006/07/12(水) 09:40:11
Pythonのインデントブロック、すばらしい。
ほかの言語だとブロックの終わりが連なって美しくない。
class Foo {
 def f() {
  for item in items {
   if item {
    print item
   }
  }
 }
}

Pythonだとカッコの対応を取らなくていいし、行数も短くなる。
class Foo:
 def f():
  for item in items:
   if item:
    print item

美しいなあ。
でもIDEの自動整形とは相性が悪そう。
312240:2006/07/12(水) 09:49:36
>>245
お、共役勾配法!
私は大規模最適化の手法を色々試してみたいんですよ。
ちなみに学生です。いい本が無いんですよね…
313デフォルトの名無しさん:2006/07/12(水) 09:52:30
Pythonのクールなところをおしえてください(><)
314デフォルトの名無しさん:2006/07/12(水) 10:11:17
exec文で、ファイル名を渡すことはできますか。
例えば「exec "1+'a'"」を実行すると、ファイル名として「<string>」が
表示されますが、かわりに例えば「example.py」と出したいのです。
>>> exec "1+'a'"
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<string>", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'

またファイル名だけでなく行番号も指定できる方法があれば教えてください。
よろしくお願いします。
315デフォルトの名無しさん:2006/07/12(水) 11:31:56
help(compile)
316デフォルトの名無しさん:2006/07/12(水) 12:17:51
>>315
codeobj = compile(source, filename, kind)
exec codeobj
でできました。
>>> code = compile("1+'a'", 'example.py', 'exec')
>>> exec code
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "example.py", line 1, in ?
TypeError: unsupported operand type(s) for +: 'int' and 'str'

どうもありがとうございました。
あと、行番号の指定もできないでしょうか。
317デフォルトの名無しさん:2006/07/12(水) 12:56:01
'\n' * number_of_lines + code_string
318デフォルトの名無しさん:2006/07/12(水) 13:28:04
>>317
そんな方法があったか。どうもありがとうございます。
319デフォルトの名無しさん:2006/07/12(水) 15:11:53
デザパタ厨、かもん!
320デフォルトの名無しさん:2006/07/12(水) 15:31:38
>>313
> Pythonのクールなところをおしえてください(><)

pythonは、僕が知ってる○○○タイプの言語だなって気がつきだすと、その通りに見えてくるんだ。
そうして、pythonを使ってる他の人たちも僕と同じように○○○タイプ言語と思ってるし
○○○タイプに合ったプログラミングをしてると信じられるようになるんだ。
中には○○○タイプと思ってない人もいるけど、そういう人たちはちゃんと教えてあげる必要があるね。
教えてもわかんない人もいるけど、それは最初から僕らの仲間じゃないから無視しようよ。
321デフォルトの名無しさん:2006/07/12(水) 15:57:31
つまり
全員Guido様の手のひらで踊らされていると
そういうことですね
322デフォルトの名無しさん:2006/07/12(水) 16:24:58
Python使い始めてから、仕事でJava使うときも
いちいちthis書かないと気が済まなくなってしまいました。
まわりの顰蹙かってますが、負けないつもりです。
323デフォルトの名無しさん:2006/07/12(水) 16:27:38
>322
わかるわかる〜
324デフォルトの名無しさん:2006/07/12(水) 21:38:44
>>322
郷にいれば郷に従えという言葉もあるぞw
selfと書かないだけマシかww
325デフォルトの名無しさん:2006/07/12(水) 23:27:46
326デフォルトの名無しさん:2006/07/12(水) 23:51:19
>>322

がんがれ
327デフォルトの名無しさん:2006/07/13(木) 00:24:18
漏れはselfじゃなくてmeだ
タイプ数が半分だぞw
328デフォルトの名無しさん:2006/07/13(木) 01:32:20
meよりはmyのほうがいいかなあ。
my.position = (10, 20)
my.color = 'red'
v = my.value()
329デフォルトの名無しさん:2006/07/13(木) 01:36:57
myが自然な例だけ出してるだけじゃん。
330デフォルトの名無しさん:2006/07/13(木) 02:04:11
iが一番短くてよいと思うます
331デフォルトの名無しさん:2006/07/13(木) 02:07:37
this にすれば Java とか JavaScript と同じでよくね?
332デフォルトの名無しさん:2006/07/13(木) 03:54:32
俺は ore にしよう
333デフォルトの名無しさん:2006/07/13(木) 04:36:33
アンダースコアだよ
男ならな
334デフォルトの名無しさん:2006/07/13(木) 07:24:15
女はどうするんだよw
335デフォルトの名無しさん:2006/07/13(木) 07:29:07
アンダースコート?
336デフォルトの名無しさん:2006/07/13(木) 09:35:03
山田君,座布団全部持ってって。
337デフォルトの名無しさん:2006/07/13(木) 09:47:14
>>334-336
おまいら、俺の中で久々にヒットしたぜ。愛してる。
338デフォルトの名無しさん:2006/07/13(木) 17:53:34
変数が定義されているかどうか調べる関数って無いですか?
339デフォルトの名無しさん:2006/07/13(木) 18:06:12
name_of_variable in vars()
340デフォルトの名無しさん:2006/07/13(木) 18:36:37
近所でモンティ・パイソンを借りられるレンタルビデオ屋がないんですが、
どうやったらお勉強できますか?
341デフォルトの名無しさん:2006/07/13(木) 19:05:37
342デフォルトの名無しさん:2006/07/13(木) 19:32:50
それは「ぐぐれ」なのか?・・
343デフォルトの名無しさん:2006/07/13(木) 19:48:09
つべれ!
344デフォルトの名無しさん:2006/07/13(木) 21:48:47
Pythonのパッケージシステム、使ってみたけどすごいな。
自分でパッケージを作ってみたら、すごく簡単にできた。
PHPのパッケージは作るの大変なんだ。XMLファイルをちまちま書かなきゃいけない。
それに比べると、Pythonはsetup.pyが簡単にかけて、しかもパッケージングもインストールも
同じスクリプトでできる。すごいぞ。

あと、アンインストールの方法がわからないんだけど、一度インストールしたパッケージを
削除する方法ってある?
345デフォルトの名無しさん:2006/07/13(木) 23:02:05
rm -rf /path/to/package
346デフォルトの名無しさん:2006/07/13(木) 23:35:11
debとかrpmにしておくとか。
347デフォルトの名無しさん:2006/07/13(木) 23:36:39
# xeyes起動させまくりスクリプト
import os
w = 125 ; h = 100
for y in range(0, 1024, h):
    for x in range(0, 1280, w):
        os.system('xeyes -geometry %sx%s+%s+%s &' % (w, h, x, y))
348デフォルトの名無しさん:2006/07/13(木) 23:38:04
http://mail.python.org/pipermail/python-list/2004-December/253472.html

uninstallなんかなくても、問題ないから良くねえ??だって。
349デフォルトの名無しさん:2006/07/14(金) 01:53:23
この意見に賛同される方は、「ゴリバー万歳!」と2回書き込んでから、前歯を黒マジックで塗りPCを壁に叩き付けて、「ライトは4つだ!!」と叫んで下さい。
350デフォルトの名無しさん:2006/07/14(金) 02:06:20
つまんねーんだよ。ワラ
351デフォルトの名無しさん:2006/07/14(金) 22:46:35
>>348
ガーン
古いパッケージと新しいパッケージとでファイル構成が違う場合、
新しいパッケージをインストールしても古いパッケージのファイルが一部残ることになります。
またuninstallができないと、お試しinstallができなくなります。
これはいくないと思うんですけど。残念です。
352デフォルトの名無しさん:2006/07/14(金) 23:21:53
古いファイルの一部は残っても、新しいモジュールから
ロードされないから、動作に影響ないでしょう。という感じかね…。

ごみファイルが気になるんだったら
自分でパッケージにすれば>debとかrpmとか。。

353デフォルトの名無しさん:2006/07/15(土) 00:17:41
ゴリバー万歳!
ゴリバー万歳!

てゆーか、
>>351
他の人も言ってるけど、setup.py で Windows 用のインストーラとか
Linux 用の deb とか rpm とか作れるのは知ってる?
パッケージ単位のインストール・アンインストールが必要なら、
パッケージ管理機能のある OS を使うのが筋だよね。
例えば Windows とか Debian 系 Linux とか赤帽系 Linux を使う。
少なくともこれらの OS では setup.py があれば
パッケージ管理機構で入出力可能なパッケージが自動生成できる。
ソースと一緒にバイナリが配布されていなくても
コンパイラを持っていれば自分でバイナリパッケージを作れるんだよ。
354デフォルトの名無しさん:2006/07/15(土) 11:07:17
アホかお前
355デフォルトの名無しさん:2006/07/15(土) 12:02:45
どっかに PlanetPythonJapan の代用になるサイトはないもんかねー。
あそこでウォッチしてたrssのリストを控えてないので、自力で巡回すらできん。
356デフォルトの名無しさん:2006/07/15(土) 12:20:34
>355
もともと見てなかったらよく知らんけど、これ?
http://www.google.com/search?q=cache:tokuhirom.dnsalias.org/~tokuhirom/planetpythonjapan/

便利だったなら代用サイト作ってよ
357デフォルトの名無しさん:2006/07/15(土) 20:39:50
IronPythonの入門に使えるページって何かないですかね。
358デフォルトの名無しさん:2006/07/16(日) 07:00:28
Pythonでネイティブのバイナリ実行形式を出力する方法はありますか?
359デフォルトの名無しさん:2006/07/16(日) 10:26:18
py2exe
360デフォルトの名無しさん:2006/07/16(日) 12:47:24
PyInstallerがいい感じだった
361デフォルトの名無しさん:2006/07/16(日) 12:48:23
でもどっちも「ネイティブなバイナリ」って言われると微妙か。
362デフォルトの名無しさん:2006/07/16(日) 13:29:58
むしろスタンドアローン
363デフォルトの名無しさん:2006/07/17(月) 10:14:06
>>355,356 それPlaggerで(ry
364デフォルトの名無しさん:2006/07/17(月) 16:39:32
SCons使ってる人いる?
365デフォルトの名無しさん:2006/07/18(火) 03:11:49
djangoのマニュアルがめちゃくちゃで困ってます。
version0.95のマニュアルに、0.91をインストールさせる方法載せたままにしてたり、
auto admin立ち上げたはいいけど、usernameとパスワードは何を入れればいいのか
どこにも書かないまま、話が進んじゃったり…
366デフォルトの名無しさん:2006/07/18(火) 03:14:03
↑こういう人はフリーソフト使わないでほしい
367デフォルトの名無しさん:2006/07/18(火) 03:47:00
あ、パスワードはsyncdbのときにつくれるんですね。
eclipseのコンソール上で実行するとスルーされちゃうから気づきませんでした。
でも、インストールのマニュアルはおかしすぎですよ。
0.95と0.91分けてる意味が無いです。
なんで、>>366みたいなこと言われる筋合いは全く無いです。
368デフォルトの名無しさん:2006/07/18(火) 05:52:53
それは本家?それとも翻訳?
369デフォルトの名無しさん:2006/07/18(火) 06:28:33
どうやら翻訳への文句のようなので,補足しときます.
Djangoの公式リリースは0.91で,0.95は出ていません(現在Subversionのtrunkにあるコードが0.95
相当と考えられているだけです)従って,「公式リリースのインストール」は0.91のインストールになります.
一方,現状で0.95相当のDjangoをインストールするには,Subversionから取り出すのが普通です.
翻訳はできるだけ本家の内容に合わせてあります.本家の内容も翻訳も,0.91と0.95をごっちゃ
にしているわけではありません.0.91が古いリリースで,新たに使ってみたい人はSubversionから取り出す
べき,というのはnoteにも書いてあるので,よく読んでね.

とはいえ,いささかミスリーディングな部分もあるんで,訳者注をつけておきました.
370デフォルトの名無しさん:2006/07/18(火) 07:17:11
>>369
そもそも0.91と0.95で、ドキュメント分けてるのに、
0.91のインストールが一番上に出てる時点でおかしいよね?
本家も翻訳も、0.91のインストール法が先頭に出てる。

ノートなんて書かなくても、0.91のインストールを消せばいいだけのはず。
>最近, Django には後方互換性のない変更が加えられました.
ともあるけど、それがpart1のsyncdbでいきなり出てくるくらいなんだから、
冒頭の0.91のインストール残しておく意味なんて全く無いじゃん。

実際エラーメッセージで検索すると、同じように0.91インストールしちゃって
syncdbでコケて、無駄なトラブルくらってるひとが世界各国で見受けられるし。

よく読んでねなんていう前に、まともに読めるマニュアル書いてほしいよ。
>>366みたいな態度を貫くのなら、普及なんて考えてないだろうから
かまわないんだろうけど。
371デフォルトの名無しさん:2006/07/18(火) 08:02:27
>>370
たしかにな。
それを本家に提案してみたらどうだろう?
翻訳している人は、注釈はつけられるけど基本的に本家のドキュメントを翻訳するだけなので、
本家の方をまず直してもらうべき。

こんなとき、どんな英文を書けばいいのかな。
372デフォルトの名無しさん:2006/07/18(火) 08:05:51
はぁ.「よく読んでね」が気に障ったのなら謝ります.

ただ,*あなた*には悪いけど,私自身は公式リリースの入れ方の次に開発版の入れ方を説明する,
という順番に納得しているので,私の手元の翻訳については,本家のレイアウトが変わらない限り
変更するつもりはありません.お怒りはごもっともですが.0.95か1.0の公式リリースが出るまで我慢してね.

あと, >>366 への怒りをこっちにぶつけるのは勘弁.
373デフォルトの名無しさん:2006/07/18(火) 08:29:27
なんかキモいな。
374デフォルトの名無しさん:2006/07/18(火) 08:35:04
自演かな
375デフォルトの名無しさん:2006/07/18(火) 08:38:52
キモイって自覚してるのかな
376デフォルトの名無しさん:2006/07/18(火) 10:15:07
いや俺が一番キモイよ。
377デフォルトの名無しさん:2006/07/18(火) 10:28:24
いや、俺の方がキモい
378デフォルトの名無しさん:2006/07/18(火) 10:34:36
不満だけをぶちまけて何もしない奴は徹底的に叩かれて然るべきだと思うよ。
そもそもそんな奴に発言権なんてありませんからねぇ。

いったい何様のつもりなんだ?
379デフォルトの名無しさん:2006/07/18(火) 10:44:14
俺様
380デフォルトの名無しさん:2006/07/18(火) 10:59:12
つ 10円
381デフォルトの名無しさん:2006/07/18(火) 11:17:25
>369

厨の相手乙。めげずに翻訳がんがってくれ。


382デフォルトの名無しさん:2006/07/18(火) 14:37:07
フリーで提供されているものに対して「めちゃくちゃで困ってます」みたいな暴言を
吐く人は相手にしないほうがいいよ。はっきり言ってキチガイだと思う。
383デフォルトの名無しさん:2006/07/18(火) 16:17:58
フリーソフトつかってみたー>ダメ過ぎてつかえねー>むかつくのでパッチつくったー>GJ
384デフォルトの名無しさん:2006/07/18(火) 16:32:49
フリーソフトつくってみた > 誰からも相手にされない
(´・ω・`)
385デフォルトの名無しさん:2006/07/18(火) 17:34:58
IronPythonを使いまわしたいがためにVS2005standard(アカデミック版)を
買ってしまった。一応、IDEとして機能する。
・カラーリング、補完、リファクタリング、クラスブラウザー等OK
・そのためには C# & C++ をインストールする必要がある。2G 程占有。
・コンパイルできる。(.NET 中間コード)
巨大なゴミと言えなくもない。
このうえでSQLObjectやTurboGearsはインストールできるのだろうか?
できたとしたらどういう動作をするのだろうか?
386デフォルトの名無しさん:2006/07/18(火) 17:41:00
>>385
Express版にすりゃよかったのに。タダだし。
387デフォルトの名無しさん:2006/07/18(火) 17:47:40
>>386
express版は extensibility (addins & packages) をサポートしてないので
pythonintegration を使えないんですよ。
388デフォルトの名無しさん:2006/07/18(火) 21:00:59
csvモジュールはUnicodeが使えないのな。
Python3.0が出るまでここままなのかな?
389デフォルトの名無しさん:2006/07/19(水) 04:04:01
TurboGearsやDjangoってcgiでどうやって動かすの?
390デフォルトの名無しさん:2006/07/19(水) 06:09:06
#! /usr/bin/env python
391デフォルトの名無しさん:2006/07/19(水) 06:37:21
railsとは違いcgiでは動かない。
392デフォルトの名無しさん:2006/07/19(水) 06:46:55
>>391
Djangoはcgiで動かすことは可能とか書いてあったけど…
可能なだけで手段は提供してないのね。残念
393デフォルトの名無しさん:2006/07/19(水) 13:04:35
>>392
CherryPyは何度かやってみたがだめたった。
Djangoはドキュメントを読んでやめてしまった。

どこに書いてあったか教えてほしい。
394デフォルトの名無しさん:2006/07/19(水) 14:51:37
>>393
Running Django as a traditional CGI is possible and would work the same as running any other sort of Python CGI script,
but is generally not recommended.

http://code.djangoproject.com/wiki/ServerArrangements

他にも、チャットログで

09:08 Maniac stupid question: can you run django as a plain old cgi ?
09:08 Crast Maniac: yep, using flup. flup will fallback to traditional CGI
09:09 Maniac ok cool

http://simon.bofh.ms/logger/django/2006/05/03/08/45/

これみて、flupとfastcgiのソースおっかけて、cgiで動かないかいろいろ試行錯誤してたんだけど、
python素人なんできつくて無理でした。
だれかいないかなぁ
395デフォルトの名無しさん:2006/07/19(水) 14:58:22
なぜそこまでしてCGIに拘るw
396デフォルトの名無しさん:2006/07/19(水) 21:57:29
>>394
thanx
確かにDjangoはcgiで動かすことはできるようだ。
最初にDjangoで試せばよかったな。

>>395
SFとかだとcgiしか許可されていないので。
397デフォルトの名無しさん:2006/07/19(水) 23:21:42
Welcome to the Django!!

shananananananananananananana
398デフォルトの名無しさん:2006/07/20(木) 01:28:36
(・∀・)ねーねー、あのね。
このなかPython vs Ruby vs PHP vs Perl
ではPythonが一番いいの? by女子高生
399デフォルトの名無しさん:2006/07/20(木) 01:34:05
>>398
>ではPythonが一番いいの? by女子高生
っぽい無職の17才と、SEXして捕まった山本さんですか?
400デフォルトの名無しさん:2006/07/20(木) 01:51:47
>398
悪いことは言わないからWhitespaceにしときなさい。

と言われたら素直にWhitespace使うのかねチミは。
401デフォルトの名無しさん:2006/07/20(木) 02:04:11
つbrainfuck
402デフォルトの名無しさん:2006/07/20(木) 02:06:22
っ正しい日本語
403デフォルトの名無しさん:2006/07/20(木) 11:02:38
つBoo
404デフォルトの名無しさん:2006/07/20(木) 13:52:59
Booなんて言語があったのか。
今度批評したるかな
405デフォルトの名無しさん:2006/07/20(木) 14:23:07
あなた誰ですか
406デフォルトの名無しさん:2006/07/20(木) 21:00:14
マイケル保井です
407デフォルトの名無しさん:2006/07/21(金) 00:05:25
女の子にはやさしくしろー
408デフォルトの名無しさん:2006/07/21(金) 00:39:09
たまぁに、Python狂信者の他言語(できればPHPとかRuby)叩きが見たくなる。
そういう古典的燃料、どこ行けば見られるかね。このスレは理知的過ぎてダメだ。
409デフォルトの名無しさん:2006/07/21(金) 00:52:14
ググレカレー
410デフォルトの名無しさん:2006/07/21(金) 01:06:35
>>408
Pythonの狂信者って思いつかないのだが、過去に誰がいた?
411デフォルトの名無しさん:2006/07/21(金) 01:41:13
よく読んでいませんが、いいと思います
412デフォルトの名無しさん:2006/07/21(金) 01:49:10
pythonのfrom importが素敵。
413デフォルトの名無しさん:2006/07/21(金) 06:39:25
機械化星で暴れてみたら?
414デフォルトの名無しさん:2006/07/21(金) 07:36:48
何の話?
415デフォルトの名無しさん:2006/07/21(金) 08:53:12
VIPいけ
416デフォルトの名無しさん:2006/07/22(土) 01:42:51
チュートリアルが難しい。しかも、これを12章まで理解できたとして(できないが)、
8章からなる同じような目次、リファレンスマニュアルが控えてる。
このスレでレス付けてる奴らは、こんな内容を当然の如くこなせるんだよな。
化け物どもめ。みんな頭いいんだな。
417デフォルトの名無しさん:2006/07/22(土) 02:02:56
とりあえず使える機能から使ってって、分かんなくなったら
当たりをつけてから読むのが正しい読み方なんじゃない?

チュートリアルの難しさの起源は、もともと日本語じゃないものを
日本語に訳したせいでニュアンスが分からなくなってる点に
あると思うんだけど。
418デフォルトの名無しさん:2006/07/22(土) 08:16:25
>416
リファレンスマニュアルなんて読んだことないぜ
419デフォルトの名無しさん:2006/07/22(土) 08:48:32
>>416
バカだな。必要な機能しか読まないにきまってんじゃん。
420デフォルトの名無しさん:2006/07/22(土) 09:19:13
lib/python/ あたりを読んでテキトーにあたりをつけましたハイ。
コードはペンよりも強し。

421デフォルトの名無しさん:2006/07/22(土) 10:57:53
>>416
チュートリアルは斜め読みで、ライブラリリファレンスのほうが読みやすい。
422デフォルトの名無しさん:2006/07/22(土) 12:27:21
端から端まで読んで憶えようなんて思考してるうちは駄目
423デフォルトの名無しさん:2006/07/22(土) 12:31:18
ネット上のチュートリアルでは、個人的にはこれが一番良かった。他の言語と
の違いをはっきりと書いていて分かりやすい。

1時間で覚える?Python
http://kanaya.naist.jp/Zope/member/nishio/japanese/memo/LearnPythonInAnHour/

あと、この本はpython.jpのチュートリアルより分かりやすいと思う。決して
読みやすい本ではないが。

初めてのPython 第2版
http://www.amazon.co.jp/exec/obidos/ASIN/4873112109

高価なので、学生さんは大学か公共図書館に買わせるのが吉。
あと、けっこう間違いがあると思う。先に進むほどほど多い。大学の教科書だっ
てそんなもんだから、そこはあきらめるのが吉。

あと、Pythonって実は、誰もがとっつきやすい言語ではないと思う。何も見ず
にすぐ使い始められる人も多いが、なんか良く分からんと感じる人も。私は後
者の一人で、「はじPy」を通読するまでモヤモヤが続いた。英語が得意で海外
のコミュニティにいつも触れていたら、だいぶ違うんだろうなと思う。
424デフォルトの名無しさん:2006/07/22(土) 14:32:40
チュートリアル、他の言語に比べれば断然いいと思うけどなぁ。
下手なサイトで勉強すすめるよりよっぽどいい気がする。
425デフォルトの名無しさん:2006/07/22(土) 14:49:49
付属チュートリアルはずぶの初心者にはキツイ気がする。
インスタントハッキングとインスタントパイソン読んだほうがマシ。

その後で、改めてチュートリアルに目を通すと良し。
426デフォルトの名無しさん:2006/07/22(土) 15:34:42
それじゃ大学の夏休みにpython始めますね。
今は試験期間中なんで。
427デフォルトの名無しさん:2006/07/22(土) 15:58:28
なぜ始めていないのに、このスレ読んでたんだw
428デフォルトの名無しさん:2006/07/22(土) 17:28:06
勉強しなきゃならない期間なんて、
全力で他のことに逃避するに決まってんじゃん。掃除とか2chとか。
でもほんとうに労力のかかることはしないんだよ。これ大学生の常識。
429デフォルトの名無しさん:2006/07/22(土) 17:45:03
例示が掃除なのが切ない。ガベージコレクトよろし
430デフォルトの名無しさん:2006/07/22(土) 18:02:09
>>416
あんなの翻訳が酷いから理解できる方がおかしい
431デフォルトの名無しさん:2006/07/22(土) 18:03:37
仕事してほしいときに全力でGCに逃避するVMがあったら嫌だな
432デフォルトの名無しさん:2006/07/22(土) 18:04:42
>>423
「初めてのPerl + 続・初めてのPerl」よりは安い。
ページ単価も。
433デフォルトの名無しさん:2006/07/22(土) 18:17:03
>>432
糞言語と比べられても・・・
434デフォルトの名無しさん:2006/07/22(土) 18:51:03
まあまあ
でもわけたほうよくないか
435初心者:2006/07/22(土) 19:24:28
>>423の1時間で覚えるPython見てやってみた。
環境:Windows + Python 2.4.3 + IDLE 1.1.3 + Python shell

print "abcdefg"[0]
print "abcdefg"[3:4]
print "abcdefg"[-3]

を実行すると

a
d
e

こうなったんだけどなんで?

a
de
efg

が返ってくると思ったのに・・・
436デフォルトの名無しさん:2006/07/22(土) 19:26:43
なんで下の値が返ってくると思うのかが逆にわからん。
437デフォルトの名無しさん:2006/07/22(土) 19:30:39
>>435
そういう時は「なんで?」じゃなくて「またひとつpythonのことが分かったぞ」と思いなさい。
438初心者:2006/07/22(土) 19:32:37
>>436
いや >>423の1時間で覚えるPython に書いてあったのよw
で、1番目と3番目は良いとして、2番目はdeが返ってきて欲しくない?
なんとなく。

439デフォルトの名無しさん:2006/07/22(土) 19:34:45
print "abcdefg"[0] # => a
print "abcdefg"[-1] # => g
print "abcdefg"[-2] # => f
print "abcdefg"[-3] # => e
440デフォルトの名無しさん:2006/07/22(土) 19:37:01
s[a:b] は始点が位置 a で
長さが b-a になるようになってるんよ
441デフォルトの名無しさん:2006/07/22(土) 19:38:11
始点は含む、終点は含まないという仕様はインデキシングが0オリジンの言語
(つまりほとんどの言語)と相性が良いのだよ
長さnの列全体(つまり0からn-1まで)は[0:n]と表記できることから想像できんかね?
442デフォルトの名無しさん:2006/07/22(土) 19:42:00
matlabとか使ってると最初は驚く。
443初心者:2006/07/22(土) 19:51:04
>>440、441
なるほど。

print "abcdefg"[0:7]
print "abcdefg"[3:5]
print "abcdefg"[-3:-1]

とかやってみて納得しました。

それ以前に>>423氏紹介の文章を読み違えてました。
print "abcdefg"[-3:]
で、最後のコロンが見えていなかった・・・。
これですっきりしました。
失礼しました。
444デフォルトの名無しさん:2006/07/22(土) 20:28:00
スライスは、インデックスが文字と文字の間に振られている(最初の文字の前が0番)と考えて、
moji[a:b]のとき、インデックスaとインデックスbの間に挟まれた文字が得られる、と考えるとわかりやすいと思う。
445デフォルトの名無しさん:2006/07/22(土) 20:30:27
0 1 2 3 4 5
 あ い う え お
446デフォルトの名無しさん:2006/07/22(土) 20:33:44
>>444
はいはい、請け売り乙

見聞きしたことを、さも自分が考えたように言ってるとそのうち恥書くよ。
447デフォルトの名無しさん:2006/07/22(土) 20:47:00
誰でも知ってるだろ普通
448デフォルトの名無しさん:2006/07/22(土) 20:55:55
誰でも知ってることを、さも自分が考えたように話すのはバカ丸出し。
449デフォルトの名無しさん:2006/07/22(土) 21:03:41
誰でも知ってることを、さも自分が考えたように話したと勘違いするのはバカ丸出し。
450デフォルトの名無しさん:2006/07/22(土) 21:11:11
一般的に、とか、と言われている、とか付け加えないとダメってこと?
451デフォルトの名無しさん:2006/07/22(土) 21:36:51
>423
他言語の経験があれば標準 tutorial はとてもよいと思う。
(他言語の経験なしの立場で読んだことないからそっちの評価は分からない)
初めての python 第1版はむしろ分かりにくかったけど。
本当の初心者なら 「python で学ぶプログラミング作法」の方が良いのではないかと。

>442
普通 matlab の仕様に驚くもんだろ... とはかぎらんか...
452デフォルトの名無しさん:2006/07/22(土) 22:17:15
Pythonの宿題スレはありますか?
453デフォルトの名無しさん:2006/07/22(土) 22:28:41
>>451
matlabしか知らなかったので…
ごめんなさい、一応だいがくせいです
454デフォルトの名無しさん:2006/07/22(土) 22:29:16
>>450
引用元を示さないのはバカ。
455デフォルトの名無しさん:2006/07/22(土) 22:35:43
>>451
世の中には、
「機械翻訳の(またはそれを下訳にした)日本語が、どうしても頭に
入らない」という病を抱えた人がいるのだ。まあ俺だが。
「はじPy・2版」はこなれた日本語だから、それだけでもありがたいよ。

MATLABの記法はPythonに慣れているとは本当に混乱するけど、概して
プログラミング以外の専門家には、MATLABの記法のほうが評判がいいようだ。

>>452
ない。丸投げはあきらめて、ちゃんとした質問にまで練り上げるのが吉。
456デフォルトの名無しさん:2006/07/22(土) 22:43:09
宿題スレがあったら参加したいけど、Pythonで宿題が出ることなんてないからな・・・。
457デフォルトの名無しさん:2006/07/22(土) 23:04:32
あるといえばある
458デフォルトの名無しさん:2006/07/22(土) 23:17:13
進んでいるか偏屈な講師がいるか、どちらにしてもいい学校だな…。
459デフォルトの名無しさん:2006/07/23(日) 00:32:05
>455
そういやこないだ面白いもの見つけた。
(新しいものじゃないので皆しってるのかもしれないけど)

特にデータ処理的用途でプログラム書く人向けの
python/matlab/R の違いの比較表
http://www.37mm.no/matlab-python-xref.html
http://www.37mm.no/mpy/matlab-python-xref.pdf
460デフォルトの名無しさん:2006/07/23(日) 00:35:08
matlabと同じ書き方でpythonが使えたらなぁ…
461デフォルトの名無しさん:2006/07/23(日) 01:07:57
python と同じ書き方で matlab 使えればなぁ…
462デフォルトの名無しさん:2006/07/23(日) 02:02:01
>>457
ド田舎だろどうせ
463デフォルトの名無しさん:2006/07/23(日) 07:14:33
一次元の配列[1,2,3,4,5,6,7,8,9]を二次元の配列
[[1,2,3],[4,5,6],[7,8,9]]みたいに一発で出来る便利関数みたいなものはないですか?
自分でやっているのは、
count=0
k=[][]
for item in seq:
x=count%div
y=count/div
k[x][y]=item
count+=1
みたいに、countをインクリメントしつつ、商と余りを使って、x,yの位置を決めてます。
seq.split(3)みたいに入れたら、[1,2,3,4,5,6,7,8,9]を
[[1,2,3],[4,5,6],[7,8,9]]みたいにしてくれたら楽なんですが。

464デフォルトの名無しさん:2006/07/23(日) 07:20:25
ありますよ
465デフォルトの名無しさん:2006/07/23(日) 07:28:43
>>463
>>> seq = [1,2,3,4,5,6,7,8,9]
>>> k = [seq[0:3],seq[3:6],seq[6:9]]
>>> print k
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> def split_array(unit_size, src):
      dest = []
      for i in range(len(src)/unit_size):
           dest.append( src[i*unit_size : (i+1)*unit_size] )
      return dest

>>> split_array( 3, seq )
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
466デフォルトの名無しさん:2006/07/23(日) 07:36:39
>>463
>>> import Numeric
>>> a = Numeric.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> b = Numeric.reshape(a, (3, 3))
>>> b
array([[1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]])
>>>
467デフォルトの名無しさん:2006/07/23(日) 07:42:18
>>> a = range(3*4)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
>>> [a[i:i+4] for i in a[::4]]
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
>>>
468デフォルトの名無しさん:2006/07/23(日) 07:42:26
>>463
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = [a[i:i+3] for i in range(0, len(a), 3)]
>>> b
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>>
469463:2006/07/23(日) 08:11:32
うおー、いっぱい例を出してくれてありがとう。
470デフォルトの名無しさん:2006/07/23(日) 10:12:13
numeric だけ意味合い(作業対象)が違うけど
>463 はむしろ numeric を使うべき作業をしているっぽいね
471デフォルトの名無しさん:2006/07/23(日) 11:45:37
Numeric便利そうだな。傍観者だがこのスレは勉強になる。
472デフォルトの名無しさん:2006/07/23(日) 11:47:26
pythonを使ってないけど勉強になるな
473デフォルトの名無しさん:2006/07/23(日) 11:57:39
imagemagickをpythonから使ってる方おりますか?
474473:2006/07/23(日) 12:30:51
pythonmagickがコンパイルできなくて夏
475デフォルトの名無しさん:2006/07/23(日) 16:13:54
PIL使えよ。
476デフォルトの名無しさん:2006/07/23(日) 17:40:38
Numericって標準モジュールじゃないのね。
追加の仕方がわからんのでいろいろぐぐったらこんなページを発見
ttp://code.enthought.com/enthon/

2D plotting libraryとかData Visualization Toolとか
Fortran to Python interface generatorとかScientific Libraryとか
数値計算→プロットてな使い方をする人向けのパッケージかな?
(自分は元Fortranプログラマ)

SQLiteとかテスト用フレームワークなんかも入っているので
ありがたく使わせていただくことにしました。(−人−)
477デフォルトの名無しさん:2006/07/23(日) 18:00:20
ちょっと urllib2 の使い方で困っているので分かる方いたら返事ください
import urllib2
url = 'http://...'
for line in urllib2.urlopen( url ):
    print line
と入力したらうまくいくのですが

a = [ 'http://...', 'http://...', 'http://...' ]
for line in urllib2.urlopen( a[0] ):
    print line
と入力したらエラーが返ってきます。

原因は何でしょうか?
478477:2006/07/23(日) 18:04:08
エラーは以下のとおりです
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
 Flie "C:\Python24\lib\urllib2.py", line 130, in urlopen
   return _opener.open(url, data)
 File "C:\Python24\lib\urllib2.py", line 350, in open
   protocol = req.get_type()
 File "C:\Python24\lib\urllib2.py", line 233, in get_type
   raise ValueError, "unknown url type: %s % self.__original
ValueError: unknown url type: http://...
479デフォルトの名無しさん:2006/07/23(日) 18:10:36
print a[0]
やってみて
480デフォルトの名無しさん:2006/07/23(日) 18:25:02
>>477
再現できないなぁ。うちではうごくし。
---そーす
import urllib2

a = ['http://google.co.jp','http://yahoo.co.jp','http://infoseek.co.jp']
for line in urllib2.urlopen( a[0] ):
print unicode(line,'sjis')

--結果--
<html><head><meta http-equiv="content-type" content="text/html; charset=Shift_JIS"><title>Google</title><style><!--
body,td,a,p,.h{font-family:;}
省略
---
481デフォルトの名無しさん:2006/07/23(日) 18:27:32
>476
part 9 からコピペ:

Numeric...老舗.開発資金が切れて解散を宣言.ボランティア開発に移行して
まだ積極的に使われている.NumPyといったら普通これのことで,numpyと
は別物.
numarray...Numericの開発停止後主役になると思われたが,乗り換えが進ま
ず分裂.開発資金は近々切れる,ボランティア開発に移行する.まだ積極的に
使われている.画像処理とかオブジェクトアレイが売り.
SciPy...コア部分でNumericとnumarrayを使っている.コアの一本化のために
独自にscipy_coreを開発していた(numpyに名前を変えた).最終的には
numpyを使う予定.多分Enthoughtの寄付とかnumpyの有償マニュアルを資金
源にしてる.それなりに使われている.
numpy...Numeric/numarrayの置き換えを狙ったscipy_coreが名前を変えた
もの.ライブラリをまとめたい向きには好評だが,numpyのマニュアルが有
償なことにユーザが反発.資金あつまってんの?苦しみながらも開発進行中.
Numericの7-8割くらいの機能サポート.numarray独自のライブラリはあまり
取り入れられてない.
ScientificPython...このプロジェクト生きてんの?中ではNumericを使ってるはず.
482デフォルトの名無しさん:2006/07/23(日) 18:29:59
Numeric 他の日本語な情報源ってあまりないよね?

numarray だけはでかい日本語マニュアルが増田さんところで
提供されているけど。
ってか翻訳だけとってもスゴいですよね、アレ...
483476:2006/07/23(日) 18:56:50
>>481
なるほど。
情報感謝です。
まだPython自体を勉強中なので、これらの機能に手をつけるのは
まだ先になりそうですが保存させていただきました。
484デフォルトの名無しさん:2006/07/23(日) 19:11:19
すみません、SciPyを、Fedora Core 5にインストールできません。
アドバイスをいただけないでしょうか?
http://www.scipy.org/Installing_SciPy/Linux

#yum install numpy
#yum install lapack-devel blas-devel
の後 scipy-0.4.9.tar.gz を /usr/local/src/ に置いて展開し、
#cd /usr/local/src/scipy-0.4.9
#python setup.py install >& install.log

とやったのですが、Pythonの対話画面で、以下のようになってしまいます。
>>> from scipy import *
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: No module named scipy

なお、install.logの内容は以下のとおりです。
# cat /usr/local/src/scipy-0.4.9/install.log
/usr/lib/python2.4/distutils/dist.py:236: UserWarning: Unknown distribution option: 'configuration'
warnings.warn(msg)
running install
running build
running config_fc
485484:2006/07/23(日) 20:36:02
自己解決しました。
SciPyのバージョンを0.4.9→0.4.8にすることで、インストールができました。

http://www.scipy.org/Installing_SciPy/Linux
↑には、確かに0.4.8と書いてあるのですが、最新版でも動くだろうと
たかをくくっていました。気をつけなければいけませんね。
486477:2006/07/23(日) 22:42:21
>>479
すいません、上記で示したソースは簡略のため a に入れる値をはしょって書きました。

正確にaの初期化を書くと
import from string import Template
s = Teamplate( 'http;//www.google.co.jp/$d/index.htm' )
a = []
for i in range(10): // ここで連続した URL を代入する
    a.append( s.substitute( d=i ) )

これで a の値を初期化後

for line in urllib2.urlopen( a[0] ):
    print line

を行うとエラーが発生します。
>>477 で示した方法で a の値を初期化するとエラーは発生しませんでした。
487デフォルトの名無しさん:2006/07/23(日) 22:58:21
http; → http:
488477:2006/07/23(日) 23:30:59
http; → http: に直しましたがだめでした

Template クラスを使ってできた オブジェクトは
引数に使えないのでしょうか?

しかしながら
>>>isinstance( a[0], StringType )
True
とでるので文字列の型のリストであると認識しているのです

普通に
url = 'http://...'
>>>isinstance( url, StringType )
Ture
とでるから 型が違うからエラーがでているとは思えないのです
489デフォルトの名無しさん:2006/07/23(日) 23:43:16
490デフォルトの名無しさん:2006/07/23(日) 23:43:46
心配なら str(a[0]) とかやれば?
491デフォルトの名無しさん:2006/07/23(日) 23:50:23
>>486

import from string import Template

from string import Template


s = Teamplate( 'http;//www.google.co.jp/$d/index.htm' )

s = Template( 'http;//www.google.co.jp/$d/index.htm' )


for i in range(10): // ここで連続した URL を代入する

for i in range(10): # ここで連続した URL を代入する


先頭にimport urllib2
を追加。


for line in urllib2.urlopen( a[0] ):
    print line

try:
  for line in urllib2.urlopen( a[0] ): print line
except urllib2.HTTPError:
  print 'そんなurlはない'
492デフォルトの名無しさん:2006/07/24(月) 00:02:29
>>486
ちゃんと正直に使ってるソース張ってますか?
エラーは再現しませんよ。
実在しないURLだと問題の切り分けの邪魔になるので、実在するURLにしました。

--ソース--
from string import Template
import urllib2

s = Template( 'http://www.tenki.jp/area/a3$d.html' )
a = []
for i in range(10):
  a.append( s.substitute( d=i+1 ) )
print a

print type(a[0])
for line in urllib2.urlopen( a[0] ):
  print line


493デフォルトの名無しさん:2006/07/24(月) 00:03:22
494デフォルトの名無しさん:2006/07/24(月) 00:07:38

糞スレの再利用方法を思いついたぞ!!

       |
   \  __  /
   _ (m) _ピコーン
      |ミ|
    /  `´  \
     ('A`)
     ノヽノヽ
       くく

こういう質問こそ↓でするべきだ!!

Python の宿題ここで答えます Part 1
http://pc8.2ch.net/test/read.cgi/tech/1153585095/
495477:2006/07/24(月) 00:09:45
色々返答ありがとうございます
細かいタイプミスなど修正し、>>477 では unknow type とでてたのですが、
今度のエラーは HTTPError 404 だったので、
タイプミスしていたようです

しかし、>>477とではエラーの内容が違うので なんともえないし、再現も
できないのでタイプミスだったようです

どうもありがとうございました

print a[0] は
'http://...' と期待どおりに入ってました。

※404 でも読み込んで欲しいんだけど エラーで止まるのね
496デフォルトの名無しさん:2006/07/24(月) 00:13:33
>>495
ライブラリを疑う前に、自分を疑おうね。
497477:2006/07/24(月) 00:22:54
>>496
疑ってねぇよ
使い方を聞いただけだアホ
498477:2006/07/24(月) 00:24:13
ついでに言うと types とか言ってる時点で分からんかって
相手のレベルの推測もできないんだろうね
どこらへんで悩んでいるかをな
499デフォルトの名無しさん:2006/07/24(月) 00:28:17
素直になれよ。
500デフォルトの名無しさん:2006/07/24(月) 00:34:01
やれやれ夏だな。
501デフォルトの名無しさん:2006/07/24(月) 00:34:27
夏ですねぇ
502477:2006/07/24(月) 00:37:22
無能が上司ってほんとヤだな
503デフォルトの名無しさん:2006/07/24(月) 00:37:34
あんまりいびると粘着するぜよ。
504デフォルトの名無しさん:2006/07/24(月) 00:39:52
もう粘着されてます>>>>454あたりから
505477:2006/07/24(月) 00:41:05
暇なん?
暇なのね
506477:2006/07/24(月) 00:41:23
タイプミスで悩んでいました。
507デフォルトの名無しさん:2006/07/24(月) 00:45:25
自演も可能ですからねぇ〜
508デフォルトの名無しさん:2006/07/24(月) 00:46:28
ごるぅぁぁぁ!われぇ、まだうろちょろしくさっとんかぃ!!
人がちょっと黙っとったら調子のりくさりやがって!
509477:2006/07/24(月) 00:47:24
夏休みの間にPythonをマスターしたいです。
510突然失礼いたします。:2006/07/24(月) 00:48:05
エスケイコンサルタント(有)の泉と申します。
イベント関係と中国貿易を行っています。
イベント関係では、音響、照明、会場設営、人材派遣を
行っています。
リーズナブルな金額で行っておりますので商店街さまのイベントに、ぜひご利用ください。
中国貿易では、チラシ、パンフレット、名刺等の印刷
イベント景品、アロマテラピーのお香、石鹸、ハンドクリーム等、工場直接オーダーで格安にて提供可能です。
ぜひ、各商店様へご紹介ください。
会社のプロフィールを添付いたしますので、どうぞよろしくお願いいたします。

エスケイコンサルタント(有)
シニアマネージャー 泉 誠一
TEL/FAX 044−722−6809
511秋の宴会旅行・忘年会のご案内 :2006/07/24(月) 00:48:45
担当者 様

突然のメールで申し訳ありません。
秋の宴会・忘年会はいかがですか?

いつもの飲み会でなく、スーパーコンパニオンパックなどで
楽しむなんてどうですか?

たまには、心の洗濯を・・・

料金・詳細はこちらのHPをご覧下さい。

潟Gーワイトラベル
Tel:03−5952−1540
http://www.aytravel.co.jp/syukuhakuyuutaiken%20konpa.
http://www.aytravel.co.jp/syukuhakuyuutaiken%20konpa.htm
512教えてください!:2006/07/24(月) 00:49:25
大原に美味しい釜飯屋さんがあると聞いたのですが、いったいどこなのかさっぱり分からなくて><
 是非教えてくださいませm(__)m
513デフォルトの名無しさん:2006/07/24(月) 00:50:49
最近はタクシー強盗が多発しているので、大阪でこんなんは全然珍しくなくなった。 「こらぁ、おのれぇ、誰にその口聞いとんねん!われぇ、強盗かぁ?われぇ、反対に 刺したろかぁ!こらぁ!」 と世の中に恐いものなしの大阪の海千山千タクシー運転手さん。
514デフォルトの名無しさん:2006/07/24(月) 00:52:00
国民的RPGである『ドラゴンクエスト』シリーズの最新作が、4年ぶりに登場です! 出荷本数は2004年12月中旬現在で300万本超と ... 覚える特技は、戦闘に役立つ便利な ものから、思わず吹き出してしまうようなおもしろいものまで、多種多様となっています。
515デフォルトの名無しさん:2006/07/24(月) 00:52:39
夏休み進行
516デフォルトの名無しさん:2006/07/24(月) 00:53:08
能界を目指すアタシ・真鍋かおり(偽名)のあそこだけの話!ちょっぴりHなウラ情報 をヌルリンと発信します!ヌルリンって言っても、排水溝のヌルヌルさとかではなく、 粘膜のヌルヌル感(=地域密着型)ですよ〜つ!うばば!
517477:2006/07/24(月) 00:58:23
おんなのこといっぱいいっぱいいろんなことしたいです
518477:2006/07/24(月) 01:00:07
つっくりましょ〜♪
つっくりましょ〜♪
さてさてなにが
でっきるかな?
519477:2006/07/24(月) 01:00:40
もうねむいです。
520477:2006/07/24(月) 01:00:55
使えない上司は質問を正確に行っても使えない
521477:2006/07/24(月) 01:02:05
使えない部下は誤字脱字が多い。
522デフォルトの名無しさん:2006/07/24(月) 01:02:49
Pythonスレの住人は幼稚な荒らしに耐性があるのがえらいよなー
523デフォルトの名無しさん:2006/07/24(月) 01:09:17
ミスを注意すると逆ギレする
人がらも悪い
能力に問題がある上努力もしないため
プロジェクトから外して窓際に追いやったら翌日に来なくなりました
連絡もなく数日経つので、内規により退職扱いになっています
皆様におかれましてはご迷惑をおかけして申し訳ありません
477が犯罪に走りこれ以上他人に迷惑をかけることがないよう
温かい目で見守ってやってください
524477:2006/07/24(月) 01:25:47
だから
だれも
隙をつ
くらな
くなる
当たり前ですけどね
525デフォルトの名無しさん:2006/07/24(月) 05:59:14
ごめん...3日前くらいから便秘で...
526デフォルトの名無しさん:2006/07/24(月) 06:09:59
何だよ
527デフォルトの名無しさん:2006/07/24(月) 06:58:57
ということは5日くらいうんち出てないのか?
528デフォルトの名無しさん:2006/07/24(月) 13:02:23
>>522
幼稚な荒らしばかりが目立ち、Python自体の話題が少ないのもあるけどね。
529デフォルトの名無しさん:2006/07/24(月) 14:00:16
>>528
以前は確かに荒らしが目立ったけど
最近はそんなことないでしょう

ここ数ヶ月のPythonスレの流れは好きだな
528見たいな幼稚な書き込みは嫌いだけど(www
530デフォルトの名無しさん:2006/07/24(月) 14:06:04
ここ数ヵ月はともかくここ2,3日は嫌
531デフォルトの名無しさん:2006/07/24(月) 18:18:54
Pythonは好きなんだけどコンパイルが苦手だなぁ。
MeCabをPythonから使いたいんだけどコンパイル通らなくて。
Pythonの前にCの勉強からやらないとダメなのね。愚痴ですた。
532デフォルトの名無しさん:2006/07/24(月) 18:28:06
MeCabのコンパイルに失敗してるだけじゃねぇの。
533デフォルトの名無しさん:2006/07/24(月) 18:30:04
Cの知識なんか必要ないんじゃ
534デフォルトの名無しさん:2006/07/24(月) 20:04:19
「おれは難しいことをやってる」感に酔いしれる厨房ですた。
535デフォルトの名無しさん:2006/07/24(月) 20:14:54
「おれは厨房よりえらい神様なんだ」感に酔いしれる暇人でした
536デフォルトの名無しさん:2006/07/24(月) 20:15:47
また嫌な展開になってきましたょ
537デフォルトの名無しさん:2006/07/24(月) 20:21:52
なぜこのスレにガキが張り付くのか。
538デフォルトの名無しさん:2006/07/24(月) 21:29:29
夏が来たのさ。
539デフォルトの名無しさん:2006/07/24(月) 21:47:29
夏来た厨
540デフォルトの名無しさん:2006/07/24(月) 22:01:15
夏が来たにしても、Python好き以外には、そんなに面白いスレじゃないだろうに。
煽りにものらないしさ。
541デフォルトの名無しさん:2006/07/24(月) 22:14:58
煽り房
542デフォルトの名無しさん:2006/07/24(月) 22:28:56
結論 : やっぱりPythonの話が一番楽しい
543デフォルトの名無しさん:2006/07/24(月) 22:39:47
FedoraCore5(KDE)でIdle(ver1.1.3)を動かすと、
キー入力をまったく受け付けなくなる事があるんですけど。
他のアプリはちゃんと触れて、Idleを再起動すると問題なし。
こんなもんなんですか、こいつは?
544デフォルトの名無しさん:2006/07/24(月) 22:57:28
フリーソフトを何だと思っているんだ(笑)
545デフォルトの名無しさん:2006/07/25(火) 00:03:38
Pythonの話しようぜ。
546デフォルトの名無しさん:2006/07/25(火) 00:23:27
Python2.5のリリース予定。

ver. 年月日 状態
alpha 1 2006年4月5日 済
alpha 2 2006年4月27日 済
beta 1 2006年6月20日 済
beta 2 2006年7月11日 ←今ここ
rc 1 2006年8月1日 予定
final 2006年8月8日 予定
release 2006年8月19日 予定
547デフォルトの名無しさん:2006/07/25(火) 00:27:02
PEP: 308
Title: Conditional Expressions

On 9/29/2005, Guido decided to add conditional expressions in the
form of "X if C else Y". [1]

こんなの入れんの?
548デフォルトの名無しさん:2006/07/25(火) 01:41:32
mood = "ツン" if 547 in shame else "デレ"
549デフォルトの名無しさん:2006/07/25(火) 08:25:07
perlの$addr = ($tmp == 10) ? "age" : "sage";
なんかよりは覚えやすそうだけど、結局使わなそう
550デフォルトの名無しさん:2006/07/25(火) 08:42:06
comment = "ガッ" if "ぬるぽ" in log else "ぬるぽ"
551デフォルトの名無しさん:2006/07/25(火) 08:42:20
Cと同じだべした。すぐに覚えられる。
552デフォルトの名無しさん:2006/07/25(火) 08:43:05
>550
バグじゃないか?
553552:2006/07/25(火) 08:43:43
>550
ごめんバグじゃないや。
554デフォルトの名無しさん:2006/07/25(火) 11:09:24
DebianのUnstableにPython2.5はいった。
555デフォルトの名無しさん:2006/07/25(火) 11:48:30
Programming Python 3rd版 8月発売
ttp://www.amazon.co.jp/gp/product/0596009259/
556デフォルトの名無しさん:2006/07/25(火) 20:08:21
>>550
こういう書き方ができるようになるって事は
A = B if cond
とか
sum += i for i in range(10)
とか書けるようになるって事?
じゃなかったら、ちょっと気持ち悪いかな・・・
557デフォルトの名無しさん:2006/07/25(火) 20:40:36
A = B if cond else None
下は
sum += [i for i in range(10)]
こうくくりたいのか
(sum += i) for i in range(10)
こうくくりたいのか明確じゃねー
はっきりしたコードを書け
558デフォルトの名無しさん:2006/07/25(火) 21:28:19
>>557
上は if cond: A = B と同じ意味のつもり。cond が False なら A は変更しない。None を代入しない。
下はもちろん後者の合計(sum)を意図してる。てか前者の意味なら sum += range(10) で済むよね。
角カッコつけてないから、包括的表現との曖昧さはないと思うんだけど…。

てかごめん。これはあくまで文修飾があったらの仮定だから、マジレスされても……。
つまり、2.5でも文修飾はできないって事でFAだよね? 別にアンチとかではなく、興味。Python は面白い。
559デフォルトの名無しさん:2006/07/25(火) 21:32:24
> 上は if cond: A = B と同じ意味のつもり。cond が False なら A は変更しない。
 None を代入しない。

明示されなかったら、飛ばされるで良かったっけ?None代入は怖いなぁ。
560デフォルトの名無しさん:2006/07/25(火) 21:32:53
新しい機能が増えたからといって
今まで使えているんだったら、今までと同じように使えば良い。
新しい文法でかいたからといって、分かり易くなるとも一概に言えない。
561デフォルトの名無しさん:2006/07/25(火) 21:33:31
同じことを2種類の書き方でできるというのはPython風味じゃないんだよな。
同じ流儀でしかプログラムが書けないというのは人の書いたプログラムを読むときは
大きな利点になる。
562デフォルトの名無しさん:2006/07/25(火) 21:40:43

何種類もの言語をやってきましたが
トリッキーで短い行数より
すこし冗長でも集中力がとぎれれ眠いときにでも
頭には言って気やすい視覚的なソースの景色のほうがやりやすいと
私は思います。
563デフォルトの名無しさん:2006/07/25(火) 21:41:34
>>562
一杯のんでて、誤字だらけですみません。(;;
564デフォルトの名無しさん:2006/07/25(火) 21:43:18
>>562
おれも
565デフォルトの名無しさん:2006/07/25(火) 21:51:10
X if C else Y って需要があったから、渋々新機能として入れたんでしょ?
Python の思想とは、毛並みが違っている気がする
566デフォルトの名無しさん:2006/07/25(火) 21:52:14
勉強をかねて掲示板CGI作ってます。
567デフォルトの名無しさん:2006/07/25(火) 22:16:52
>sum += i for i in range(10)
も十分キモいコードだと思うんだけど
568デフォルトの名無しさん:2006/07/25(火) 22:17:32
>>567
げっそりだ。
569デフォルトの名無しさん:2006/07/25(火) 22:25:34
普通に
for i in range(10): sum += i
にすりゃいいのにね。タイプ量ほとんど変わらん。

二項演算子は便利っぽい気もするけど、読みにくいからなぁ。

A = B or C はよく使うけど。
570デフォルトの名無しさん:2006/07/25(火) 23:37:58
なんだかPythonもだんだんきもくなって来るね。
571デフォルトの名無しさん:2006/07/25(火) 23:38:08
VHDLみたいにa= b when c==0;とか
572デフォルトの名無しさん:2006/07/25(火) 23:55:39
clk'event
573デフォルトの名無しさん:2006/07/26(水) 00:16:09
>>570
俺もここ最近、苦い思いで見てる。
ライブラリは大きくなってほしいけど仕様は大きくなってほしくない。
574デフォルトの名無しさん:2006/07/26(水) 00:20:09
利用者が増えるのはいい事なのか悪いことなのか・・・・
オタが「俺様のメインの言語みたい書き方は出来ねーのかよ!」
なんて言い出して、しかも偉いオタだったりすると採用せざるを得なくなる、みたいな。。
あんまりきもくなると早急に1抜けちゃうぞヽ(`Д´)ノ
575デフォルトの名無しさん:2006/07/26(水) 00:22:04
Guidoです。
Python 3.0はもっとキモいから楽しみにしてて!
576デフォルトの名無しさん:2006/07/26(水) 00:22:43
あ、そうそう、もしきもくするなら冗長に書いたときに最も速くなるような実装をしてください。
577デフォルトの名無しさん:2006/07/26(水) 00:23:54
>>575
Guidoイラネ
578デフォルトの名無しさん:2006/07/26(水) 00:25:38
乗り換えやすさって意味では、良いのでは。
乗り換え初期は、前の言語の癖が抜けないし。
しばらくPythonやって他のソースみてれば
なれてくるよ。
579デフォルトの名無しさん:2006/07/26(水) 00:31:45
構文は単純な方が乗り換えやすいもんだ
キモ複雑にしてどーする

充実したモジュールと整備されたドキュメントこそ大事
580デフォルトの名無しさん:2006/07/26(水) 00:33:38
普通に三項演算子 ? : いれた方がよかったんだと思うけど、そうできない理由があったのか?
581デフォルトの名無しさん:2006/07/26(水) 00:37:57
>>580
ああすごい同意。
なんで三項演算子入れないで、あんなきもい
構文入れるんだよ。
582デフォルトの名無しさん:2006/07/26(水) 00:41:15
? : のがいいよなあ

Many C-derived languages use this syntax:

<condition> ? <expression1> : <expression2>

Eric Raymond even implemented this. The BDFL rejected this for
several reasons: the colon already has many uses in Python (even
though it would actually not be ambiguous, because the question
mark requires a matching colon); for people not used to C-derived
language, it is hard to understand.
583デフォルトの名無しさん:2006/07/26(水) 00:44:31
つか、一種の3項演算子じゃん。
[x for y in z] とかとも類似する構文だし、俺はあれでいいと思うけどなぁ。。。
584デフォルトの名無しさん:2006/07/26(水) 00:45:26
>581
入れたくないものを仕方なしに入れるから
とか? (本音を言うと誰にも使って欲しくない)
585デフォルトの名無しさん:2006/07/26(水) 00:46:03
? : が既に使われててダメだったなら
C then X else Y
みたいにできなかったのか疑問
条件が真ん中に来るとか見づらいよ……
586デフォルトの名無しさん:2006/07/26(水) 00:46:09
別にCに合わせる必要はないと思うよ。演算子関係ではCと違う部分がいっぱいあるから
半端に似せて「Cと同じだ」とか誤解を招くのはよろしくないと思う。
587デフォルトの名無しさん:2006/07/26(水) 00:48:42
"x for y in z"
  ←  ←
データの流れが見える

"X if C else Y"
↑      ↑
分かれていて嫌
588デフォルトの名無しさん:2006/07/26(水) 00:57:28
>>587
気持ちはわかる。対称性が悪い感じだね。
でももう決まったことだし、個人的にはあまり気にしないで使うことになるだろうな。
意見を述べるならもっと前に言うべきだったってことでしょう。
589デフォルトの名無しさん:2006/07/26(水) 01:00:07
あんまり使いにくかったら、そのうち改良されるよ。。
590デフォルトの名無しさん:2006/07/26(水) 01:04:52
日本人だから見づらいのかな
向こうの連中だと自然で見やすいとか?
591デフォルトの名無しさん:2006/07/26(水) 01:07:32
初めてリスト内包を見たときは「何じゃこりゃ、ワケわかめ」という印象だったけど
もう慣れてしまった。今ではリスト内包は直観的で分かりやすいと感じる。

ずっと Guido のセンスで取捨選択してきたわけだし、ぶっちゃけ今のところこれといって
ダメ杉な仕様とゆーのは思い付かない。

今度の新しい三項演算子も慣れたら普通だと感じるようになるんジャマイカ。
592デフォルトの名無しさん:2006/07/26(水) 01:13:04
X if C else Y

「Xなんだよ! まあCだったらの話だけどな そうじゃなければYでよろしく」
593デフォルトの名無しさん:2006/07/26(水) 01:15:11
このスレ読んでるうちにだんだん慣れてきたw
594デフォルトの名無しさん:2006/07/26(水) 01:16:06
リストの内包表記は書いちゃうけど読みにくいな

[x for y in z]

ここにたどり着く前に脳内スタックが忘却を始めるw

[x for x in original_list if x>2 and x<5]
こっちは自分で書いてもコメントが必要だww
595591:2006/07/26(水) 01:37:07
文が書ける文脈では普通の if 文を使えばいいわけで、
X if C else Y を使うのはきっと式の中がメインになるんだろうな。
lambda の中とかリスト内包の中とか。

functor = lambda x: x+1 if y > 0 else lambda x: x-1 if y < 0 else lambda x: x

とか、

delta = Numeric.array([[1 if i == j else 0 for i in range(M)] for j in range(N)], Numeric.Float32)

みたいな。>>593の言う通り、用例を考えていたらもう慣れてきた希ガスw
596591:2006/07/26(水) 01:54:02
q, r = divmod(n, 10)
print "%d%s" % (n, "th" if q == 1 else "st" if r == 1 else "nd" if r == 2 else "rd" if r == 3 else "th")

たくさん if ... else が続く場合はなかなか読みやすい希ガス。
597デフォルトの名無しさん:2006/07/26(水) 02:06:15
Guidoです。
Python 3.0のライセンスはオレオレGPLにするから。
598デフォルトの名無しさん:2006/07/26(水) 02:09:04
ツマンネ
599デフォルトの名無しさん:2006/07/26(水) 02:27:03
PythonでXML処理って胸キュン?
600デフォルトの名無しさん:2006/07/26(水) 02:30:30
2.5からはElementTreeが標準モジュール入りするよ
601デフォルトの名無しさん:2006/07/26(水) 11:08:59
>>596
その書き方が許されるとすると、かなり応用力がありそうですね。
実質任意個バージョンでOKてことだから・・・
でも、あんまりやるとさすがに見づらい気もする・・・
596がすでにぱっと見ではよく分からない
602デフォルトの名無しさん:2006/07/26(水) 13:39:10
やっぱり、判定式が真ん中に来ると読みにくいな。

A = if C then B else D

みたいな形の方が文章として読みやすいと思うんだが。
603デフォルトの名無しさん:2006/07/26(水) 14:03:57
>>596
三項演算子いれて、
print "%d%s" % (i, r == 1 ? "st" : r == 2 ? "nd" : r == 3 ? "rd" : "th")
にしたほうが見やすくない?
604デフォルトの名無しさん:2006/07/26(水) 14:11:25
print "%d%s" %(i, {1:"st", 2:"nd", 3:"rd"}.get(r, "th")) でいいんじゃね?
605デフォルトの名無しさん:2006/07/26(水) 14:52:20
1だけがageるような糞スレに集まる情報なんか集めても無駄。
606デフォルトの名無しさん:2006/07/26(水) 14:53:43
ゴバクった・・・
607デフォルトの名無しさん:2006/07/26(水) 15:15:14
>>602
A = B if C else D だと
CならばDと目が流れちゃうかもかも。
まあ、慣れれってことか。
608デフォルトの名無しさん:2006/07/26(水) 15:28:49
まあ、ハズレのときはNoneが返る形ならば、
A = B or D で済むんだけどねぇ。
BがNoneならDって使い方。これは結構便利でよく使ってるんだけども。

いまだに
A = B and D は使ったことがないけども。
609デフォルトの名無しさん:2006/07/26(水) 15:49:33
>>596
> たくさん if ... else が続く場合はなかなか読みやすい希ガス。

おお!まさにそう思うよ!急にこの演算子が大好きになった。
610591:2006/07/26(水) 16:56:18
>>603
慣れているから見やすいと感じるんだと思われ。
ぶっちゃけどっちでもよくなってきた。

余談だけど>>603-604のコードは 11st, 12nd, 13rd という
おかしな出力が得られるのでNG。
611デフォルトの名無しさん:2006/07/26(水) 18:59:11
話はそれるけど、
Python 3000 ではxrange()は廃止になるみたいだけど、
http://ymasuda.jp/python/news_2004_10.html
現在のバージョンで、range()ではメモリを食いすぎる場合、代わりにどう書
けば良いの?

あと、Python 3000では、range()はxrange()を兼ねるみたいだけれど、どうい
う仕組を想定しているの?

・__iter__経由でアクセスした場合はxrange()と同様
・__getitem__経由でアクセスした場合には現行のrange()と同様

ということなのかなとも思ったが、どうなんでしょう?
612デフォルトの名無しさん:2006/07/26(水) 20:01:43
range()をジェネレータにするって言ってなかったっけ?
613デフォルトの名無しさん:2006/07/26(水) 20:15:26
http://makimo.to/2ch/pc8_tech/1141/1141964987.html#283
- dict.keys()/range()/zip() はイテレータを返す
(略)
- dict.has_key(), file.xreadlines(), xrange(), itertools.izip(), apply(),
input(), buffer(), coerce() 除去

おお、range()はイテレータになるのか!
じゃあrange(10)[0]とか、スライスの取得とかもできなくなるの?
614デフォルトの名無しさん:2006/07/26(水) 20:19:56
IronPython 1.0のリリース候補公開 - いまCodePlexが熱い
http://journal.mycom.co.jp/news/2006/07/26/340.html
615デフォルトの名無しさん:2006/07/26(水) 23:20:09
ところで、python3000 ってコマンド名何になるんだろ。
(いやそりゃinstallの仕方次第ってのはわかってるけどね)

こうあれこれ廃止されると (has_keyとかも)

#!/usr/bin/env python

って書いてあるコードが軒並動かんからなぁ。

標準で python3 とか py3hon とかにしてほしい。

616デフォルトの名無しさん:2006/07/26(水) 23:26:04
シンボリックリンク使え
python -> python2
python2 -> python2.6
python2.3
python2.4
python2.5
python2.6
python3 -> python3.0
python3.0
617デフォルトの名無しさん:2006/07/26(水) 23:46:07
windowsにはハードリンクしかない
618デフォルトの名無しさん:2006/07/27(木) 00:14:36
>>592で覚えた。
619デフォルトの名無しさん:2006/07/27(木) 00:20:08
>>595
>functor = lambda x: x+1 if y > 0 else lambda x: x-1 if y < 0 else lambda x: x

functor = lambda x: (x+1 if y > 0 else lambda x: (x-1 if y < 0 else lambda x: x))

こう解釈して、わけわかんなくなりました。
620デフォルトの名無しさん:2006/07/27(木) 04:34:44
621デフォルトの名無しさん:2006/07/27(木) 04:38:24
wikipediaにバベル無いよ…。いや、日本ではそんなもんだろうけど。
622デフォルトの名無しさん:2006/07/27(木) 09:40:03
行ってみたいが都内住んでないしレベル高そうだし・・・
623デフォルトの名無しさん:2006/07/27(木) 09:44:53
ただの飲み会にレベルなんてあるの?
624デフォルトの名無しさん:2006/07/27(木) 10:27:13
>619
マジわかってないんだけど正解はどうするの?

そもそも1行にうじゃうじゃ並べるのって
読みにくくなって python的じゃなくね?
625デフォルトの名無しさん:2006/07/27(木) 13:43:50
>>619
functor = (lambda x: x+1) if (y > 0) else (lambda x: x-1) if (y < 0) else (lambda x: x)
こういうことでしょ?(pythonコンパイルできないけど・・・
まあ、一生つかわなそうだけど、・・・
626デフォルトの名無しさん:2006/07/27(木) 15:54:27
>>613
list(range(5)) みたいに、明示的にリストに変換するようになるみたい。
627デフォルトの名無しさん:2006/07/27(木) 17:51:27
>>621
自分で編集するんだ!
628デフォルトの名無しさん:2006/07/27(木) 19:25:55
>>426
ありがとう。けっきょく、Python3000への準備としては、
今のうちにこう書くようにすれば良いのかな。

・xrange()はあきらめてrange()を使う。100万回のループでも高々4MB。
・range()をリストとして使う場合、list()で囲っておく。
・xreadlines()は使わず、ファイルオブジェクトをイテレータとして使う。

なんにせよ、データ構造のデフォルトがlazyになるのは嬉しい。Python3000が
楽しみだ。

print -> write()はどうしようか。
自分でwrite()を用意するのは、ちょっと難しそうだ。
629628:2006/07/27(木) 19:27:03
間違い。>>426 じゃなくて、>>626
630デフォルトの名無しさん:2006/07/27(木) 22:43:18
pythonで

$a = ($b > $c) ? $b : $c; // ←php

的な構文ってなんかある?
631デフォルトの名無しさん:2006/07/27(木) 22:49:02
a = max(b,c)
632デフォルトの名無しさん:2006/07/27(木) 23:22:49
>>625
でも、その解釈だと、
>文が書ける文脈では普通の if 文を使えばいいわけで、
>X if C else Y を使うのはきっと式の中がメインになるんだろうな。
に合わないよね。

if y>0:
  functor = lambda x: x+1
else if y<0:
  functor = lambda x: x-1
else:
  functor = lambda x: x

文で書ける文脈だし。
633デフォルトの名無しさん:2006/07/27(木) 23:40:32
条件式が長く連なる場合って、どうインデントするのがいいと思う?
内包式の中とかで自由にレイアウトできるとして、

# 1. 値を行頭にそろえる
[1 if cond else
 2 if cond else
 3 for i in xxx]

# 2. 値を行頭にそろえるが、最後だけは行末
[1 if cond else
 2 if cond else 3
   for i in xxx]

# 3. 最初だけ行頭で、残りは行末にそろえる
[1 if cond else 2
   if cond else 3
   for i in xxx]

# 4. どんなに長くても改行しない
[1 if cond else 2 if cond else 3
   for i in xxx]

# 5. 値を中程でそろえる
[   1 if cond
 else 2 if cond
 else 3 for i in xxx]

# 6. その他

俺は今のところ3がいいかと思ってる。
634デフォルトの名無しさん:2006/07/27(木) 23:53:28
else、else ifを頭に揃える
635デフォルトの名無しさん:2006/07/28(金) 00:10:11
普通にループ回してリスト生成するほうがいいと思う。
636デフォルトの名無しさん:2006/07/28(金) 02:02:07
else、else ifを頭に揃える
637デフォルトの名無しさん:2006/07/28(金) 02:22:16
>>633
そんな長いのは複数の文にする
638デフォルトの名無しさん:2006/07/28(金) 04:30:53
emacsにお任せ。
639デフォルトの名無しさん:2006/07/28(金) 12:32:35
>>630
今は無い。and を使った苦しい記法が一部で用いられている。
http://www.shido.info/py/python2.html#operator

X if C else Y という構文が将来入る予定。
http://www.python.org/dev/peps/pep-0308/

あとは>>547-610 あたりを読んどけ。
つうか、直前のレスぐらい読んでから質問したほうがいい。
640デフォルトの名無しさん:2006/07/28(金) 20:20:26
Nintendo DS / Stackless Python 2.4.3
http://www.disinterest.org/NDS/Python24.html

Python-PSP
http://python-psp.net/trac/
641デフォルトの名無しさん:2006/07/28(金) 20:53:55
ZaurusでPythonやってる人いる?
642デフォルトの名無しさん:2006/07/28(金) 22:06:33
>>640
そういうのって何で違法じゃないの?
643デフォルトの名無しさん:2006/07/28(金) 22:11:30
>>642
そりゃ何の法律にも触れないからでしょ
644デフォルトの名無しさん:2006/07/28(金) 22:42:57
>>642
具体的に何の法律違反なんだ?
645デフォルトの名無しさん:2006/07/28(金) 23:28:22
みだらな行為
646デフォルトの名無しさん:2006/07/28(金) 23:31:13
囲い込みを破った
647デフォルトの名無しさん:2006/07/29(土) 01:19:36
そんなのもない
648デフォルトの名無しさん:2006/07/29(土) 01:59:48
別ファイルに作ったクラスのインスタンスを作るにはどうしたらいいの?
649デフォルトの名無しさん:2006/07/29(土) 02:01:50
>>648
別ファイルに作った関数を呼び出したりするときと同じ
650デフォルトの名無しさん:2006/07/29(土) 02:13:41
>別ファイルに、作ったクラスのインスタンスを作るにはどうしたらいいの?
こう読んでいた俺がいる
651デフォルトの名無しさん:2006/07/29(土) 02:28:23
>>649-650
夜分遅くに即レスありがとう。
652デフォルトの名無しさん:2006/07/29(土) 03:08:29
653デフォルトの名無しさん:2006/07/29(土) 03:40:32
>>652
これなんのポエム?
654デフォルトの名無しさん:2006/07/29(土) 03:53:22
>>652
「Program全般の話題」だけでお腹一杯です。勘弁してください。
655デフォルトの名無しさん:2006/07/29(土) 04:13:14
起業ワロス
656デフォルトの名無しさん:2006/07/29(土) 04:55:29
釣り果
657デフォルトの名無しさん:2006/07/29(土) 08:54:48
>こーぞーたい!!ってrubyにないのかしら?見た感じないので、きっと配列とかで拡張できるんだろう。
ちょっと面白かった
658デフォルトの名無しさん:2006/07/29(土) 10:57:30
釣り果!
659デフォルトの名無しさん:2006/07/29(土) 11:16:50
ざつだんはほかでやれって、おかあさんがゆってた。
660デフォルトの名無しさん:2006/07/29(土) 11:17:18
ごめん
661デフォルトの名無しさん:2006/07/29(土) 11:31:54
tinkerのguiビルダーありませんか?教えてください。
662デフォルトの名無しさん:2006/07/29(土) 11:47:22
TkinterにはGUI定義ファイルのような概念があるのかな?
663662:2006/07/29(土) 11:50:08
SpecTIXというのがあった.
ttp://www.python.net/crew/mike/src/Spectix/Spectix.html
664デフォルトの名無しさん:2006/07/29(土) 21:07:15
どうでもいいけど、Tkinterってどうやって読むんだ?
665デフォルトの名無しさん:2006/07/29(土) 21:10:01
>>664
っきんてぁる
666デフォルトの名無しさん:2006/07/29(土) 22:03:02
T K inter?
667デフォルトの名無しさん:2006/07/29(土) 22:36:30
てぃーけー いんたー
668デフォルトの名無しさん:2006/07/29(土) 22:37:30
てぃくる☆てぃーけー
669デフォルトの名無しさん:2006/07/29(土) 22:37:55
>>664
ディーケーインターって読んでたけど、>>665も良いなw
670デフォルトの名無しさん:2006/07/29(土) 22:48:26
でぃー!?
671デフォルトの名無しさん:2006/07/30(日) 00:18:09
5秒ごとにテキストファイルのタイムスタンプを見て、
更新されていたらその中身をカキコするっていうのを
作ってみたけど、短時間で組めて使いやすいね、python。
672デフォルトの名無しさん:2006/07/30(日) 00:33:00
新参ですが、Tkinterて使ってますか?
なんかwxPythonの方が見栄えが良いなぁと思って。
673デフォルトの名無しさん:2006/07/30(日) 00:50:48
>>671
よかったらソースを見せてください
674デフォルトの名無しさん:2006/07/30(日) 00:53:07
おっぱい見せて
675673:2006/07/30(日) 02:33:01
import os,string
from stat import *
from time import*
from mechanize import Browser
# http://wwwsearch.sourceforge.net/mechanize/

fileName = '/path/to/your/files/postmessage.txt'

def postIt():
 f = open(filename,'r')
 dest = 'http://hogehoge.com/hoge/hoge.cgi'
 br = Browser()
 contents=br.open(dest)
 br.select_form(nr=0)
 br["name"]="nanashisan"
 br["MESSAGE"]=f.read()
 contents2 =br.submit()
 f.close

def main():
 lastUp = os.stat(fileName)[ST_MTIME]
 while 1:
  sleep(5)
  if lastUp <> os.stat(fileName)[ST_MTIME] :
   postIt()
   lastUp = os.stat(fileName)[ST_MTIME]

if __name__ == '__main__':
 main()
676デフォルトの名無しさん:2006/07/30(日) 04:18:34
>>672
使ってるよ。よく使う Tkinter アプリは IDLE と自作の簡易 MUA。

見栄えはあんまり気にしたことないなあ。
そういう性格なのかもね、俺の場合。
スキンが変えられるソフトでもデフォルトのままで使うことが多いし。
一時停止ボタンどこぉ?みたいなスキンもあったりして面倒というのもある。
677デフォルトの名無しさん:2006/07/30(日) 09:29:45
pygtk使いは少ないのかな
678デフォルトの名無しさん:2006/07/30(日) 09:45:07
乱立してるうちに、結局GUIに関しても.NetFramowork(Mono)がデフォになったりして...。
679デフォルトの名無しさん:2006/07/30(日) 12:32:29
Django 0.95 来てるじゃないか。
いろいろ遊べそうだ。
680デフォルトの名無しさん:2006/07/30(日) 12:59:54
MLで「Python特集」なんて煽ってたから日経ソフトウェア9月号を見てみたんだけど、
なんか肩透かしだった。

Djangoは紹介だけ。あまり内容が無い。

連載のほうは、rssfeedの紹介がしたいのかPythonの入門をさせたいのかどっちつかずで
ものたりなかった。2ページで2つ盛り込むのは大変だったのかな。

rssfeedをとりあげたら、次はPythonでplaggerする newspipe でなんかやってほしいっす。
とか日経ソフトウェアの感想ハガキに書いて送ればいいんでしょうか。
681デフォルトの名無しさん:2006/07/30(日) 13:00:30
そーですね
682デフォルトの名無しさん:2006/07/30(日) 15:57:52
連載なんだから1回1テーマに絞ってくれればいいのにな。
しかし2ページしかないのか。記事書くのも結構難しいな。
683デフォルトの名無しさん:2006/07/31(月) 09:24:54
Pythonのコミュニティは暖かいですね!!
684デフォルトの名無しさん:2006/07/31(月) 11:52:03
ほとんどの人が何かしら他の言語の悪い所(言語そのものでもコミュニティでも)を経験して
Pythonを選んだからだろうと思われる。
685デフォルトの名無しさん:2006/07/31(月) 11:57:51
べ、別に暖かくなんかしてないんだからッ
686デフォルトの名無しさん:2006/07/31(月) 11:59:33
>>684
>ほとんどの人が何かしら他の言語の悪い所(言語そのものでもコミュニティでも)を経験して

プロ市民のごとくマイナスイメージを作ることでしか自己主張できない敗北者には用はありません。
687デフォルトの名無しさん:2006/07/31(月) 12:02:53
ツンが来た!
688デフォルトの名無しさん:2006/07/31(月) 12:15:13
689デフォルトの名無しさん:2006/07/31(月) 12:20:08
Pythonのメーリングリスト(日本語の方じゃないよ)を読んでいると
2chではマニュアル嫁とかボロクソいうレベルの質問でも
ユーモアを交えつつ答えてるし。。(スルーされてるのもあるが)

質問した方も、多少恥をかいても礼儀正しいし。
そっち読んでたら、2chですこし丸くなったよ。
690デフォルトの名無しさん:2006/07/31(月) 12:33:47
2ch上にあるプログラミング言語関連スレの中では、Pythonスレは安定して良スレだと思うぞ。
少なくともpython-ml-jpよりもRTFMレベルの質問に対しても優しいと感じる。
691デフォルトの名無しさん:2006/07/31(月) 12:35:06
ぶははは。ここまで読んで、口に含んでいたウーロン茶を噴き出してしまいました。

(まあこれはこじれにこじれた時の話ですがね)
692デフォルトの名無しさん:2006/07/31(月) 13:02:08
680は万年初心者向けの雑誌に何を期待したんだ。
693デフォルトの名無しさん:2006/07/31(月) 13:42:31
日経ソフトウェア次号の記事は
インサイダー取引のためのハッキング口座
です
694デフォルトの名無しさん:2006/07/31(月) 15:06:14
はっきり言って初心者は苦労したほうがいい。
あまり優しいのは考えものだ。
と、暴言を吐いてみるテスト。w
695デフォルトの名無しさん:2006/07/31(月) 15:07:33
本当の初心者はともかく、万年初心者みたいな人は確かにうざいよね
696デフォルトの名無しさん:2006/07/31(月) 15:14:55
>>690
言語制作者自らがRTFMレベルの質問に答える例w
本当はやさしいのかもしれないね。
http://pc8.2ch.net/test/read.cgi/tech/1147770788/954
697デフォルトの名無しさん:2006/07/31(月) 16:49:59
> ま、全体的にはよりRubyに近づくような感じなのだが
> ttp://www.rubyist.net/~matz/20060726.html
最近、また電波障害がひどくね?
698デフォルトの名無しさん:2006/07/31(月) 17:07:55
>>697
カルトですからしょうがないですよ
699デフォルトの名無しさん:2006/07/31(月) 17:14:58
>>697
どっちかと言えば、その上段の方が...。
http://itpro.nikkeibp.co.jp/article/NEWS/20060726/244303/
700デフォルトの名無しさん:2006/07/31(月) 18:26:50
スクリプト言語で村おこし?
ええじゃないか。ええじゃないか。
701デフォルトの名無しさん:2006/07/31(月) 19:11:38
とにかく、だ。
教祖様の思いつきレベルで仕様が変わる言語は使えねえな。
702guidoのスライド@Python3000:2006/07/31(月) 21:15:42
New keywords allowed
dict.keys(),range(),zip() won't return lists
-killing dict.iterkeys() ,xrange(), itertools.izip()
All strings Unicode ; mutable 'bytes' data type
Binary file I/O redesign
Drop <> as alias for !=
But not (for example):
- dict.keys instead of dict.keys()
- change meaning of else-clause on for/while
- change operator priorities
703guidoのスライド@Python3000:2006/07/31(月) 21:22:13
Can't do perfect mechanizal translation
-Many proposed chan ges are semantic ,not syntactic
- For example ,in "f(x.keys())"
--is x a dict?
--does f() expect its argument to be a list ?
-Answers may be guesssed by e.g. pychecker
--but can't always be diceded with certainity
Most likely approach:
-use pychecker-like tool to do an 80+% job
-create an instrumented version of Python 2.x that
warns about doomed code (e.g. d.keys().sort())
704guidoのスライド@Python3000:2006/07/31(月) 21:36:18
"Five Is Right Out"
From PEP 3099 (and from The Holy Grail :-)
Python 3000 will not:
-have programmable syntax / macros /etc.
-add syntax for parallel iteration (use zip())
-change hash, keys etc. to attributes
-change iterating over a dict to yield key-vaule pairs
In general we shouldn't
-change the look and feel of the language too much
-make gratuitous or confusing changes
-add radical new features(can always do that later)
705guidoのスライド@Python3000:2006/07/31(月) 21:56:47
"Basic Cleanup"
Kill classic classes
Exceptions must redive from BaseException
int/int will return a float
Remove last differences between int and long
Absolute import by default
Kill sys.exc_type and friends (exc_info() stays)
Kill dict.has_key(), file xreadlines()
Kill apply(),input(),buffer(),coerce(),...
Kill ancient library modules
706guidoのスライド@Python3000:2006/07/31(月) 21:57:23
"Minor Syntactic Changes"
exec becomes a function again
kill 'x' in favor of repr(x)
change except clause syntax to 'except E1,E2,E3 as err:'
-this avoids the bug in 'except E1,E2:# meant except (E1,E2)
[f(x) for c in S] becomes syntactic sugar for list(f(x) for x in S) # a generator expression
-subtle changes in need for parentheses
-x no longer leaks into surrounding scope
kill raise E ,arg in favorof raise E(arg)
707デフォルトの名無しさん:2006/07/31(月) 22:28:46
てか、なんでRubyを敵視してるヤツがいるんだ?
その「オレが使ってる言語最高!オレが使わない言語は悪だ!」という
非論理的思考はなんとかならないのか?
708デフォルトの名無しさん:2006/07/31(月) 22:41:05
>>707
>なんでRubyを敵視してるヤツがいるんだ?

そんな人いるの?
709デフォルトの名無しさん:2006/07/31(月) 22:42:58
>>707
そうじゃなくて「オレさまが作った言語最高!」ってのに辟易してるんじゃないのか
710デフォルトの名無しさん:2006/07/31(月) 22:44:04
Rubyを敵視するかどうかなんてこのスレの話題ではない
敵視するかどうかは各個人の自由であろう
711デフォルトの名無しさん:2006/07/31(月) 22:55:52
Pythonの偉い人は,Rubyに限らず色んな言語のよいところを知っていて
可能であればPythonに取り入れようとしてきた

そして

ttp://www.rubyist.net/~matz/20060726.html
712デフォルトの名無しさん:2006/07/31(月) 23:16:37
明らかに >697,698,711は敵視してるじゃん

>711, 709
Rubyに近づいているといってるだけで、Rubyが一番スゲー、とか言ってないのに何その過剰反応は。

>Pythonの偉い人は,Rubyに限らず色んな言語のよいところを知っていて
>可能であればPythonに取り入れようとしてきた

これはPythonだけに限らなくて、ほぼあらゆる言語がそう。Rubyもね。
713デフォルトの名無しさん:2006/07/31(月) 23:23:17
なんつーか、こんどLL Ringっていうプログラミング言語天下一武道会が
あるらしいんで、そこである程度決着つくんじゃね?
714デフォルトの名無しさん:2006/07/31(月) 23:23:32
敵視って(www
新手の荒らしか(wwwww

さて
Pythonの話題をどうぞ
715デフォルトの名無しさん:2006/07/31(月) 23:26:43
>>713
じゃんけんプロトコルに乗っ取って各言語で書かれたクライアント同士が
数万回のじゃんけんを繰り返して決める、ってあれかい?
716デフォルトの名無しさん:2006/07/31(月) 23:27:21
>>712
そりゃ2chなんだからいろんな人がいるよ。そゆのをスルーできない君のほうがうざいよ。
717デフォルトの名無しさん:2006/07/31(月) 23:37:27
その論理だと、2chなんだからスルーできない人もいていいことになるが?
718デフォルトの名無しさん:2006/07/31(月) 23:48:55
板違いですよ。

慣れ合いー>夢・独り言
でどうぞ。
719デフォルトの名無しさん:2006/07/31(月) 23:50:59
反論できないとコレか。
720デフォルトの名無しさん:2006/07/31(月) 23:54:24
ttp://ll.jus.or.jp/2006/event/session

その場でどう書く,かなり楽しみ
721デフォルトの名無しさん:2006/08/01(火) 00:03:07
美容師「被害妄想っすか?w」
722デフォルトの名無しさん:2006/08/01(火) 00:46:46
>>707
やはり同じように感じている人がいたのね。言っていることにはつくづく同意。
このスレの雰囲気については、正直何とかしてほしいと思っている。些細な質問を
するにも、いちいち「荒らすつもりじゃなくて」とか弁解しなきゃいけない。
>>255とか見てると、胸が痛む。
自分たちがどれだけ入門希望者を萎縮させているか、少しは考えてほしいもんだ。
こう書いても、また荒らし扱いして叩くだけなんだろうけど。
723デフォルトの名無しさん:2006/08/01(火) 00:49:57
> 些細な質問をするにも、いちいち「荒らすつもりじゃなくて」とか弁解しなきゃいけない

些細な質問で荒らし扱いされたことってあったのか?
724デフォルトの名無しさん:2006/08/01(火) 01:03:32
たぶんあれだ、言語機能がそう定義された理由とか。
rubyでは...lispでは...とか付け足すと効果的。
725デフォルトの名無しさん:2006/08/01(火) 01:07:15
>>722
被害妄想も甚だしいな。
726デフォルトの名無しさん:2006/08/01(火) 01:35:02
>>722
やっぱり書き方だよ。>>255はムカつかれる書き方をしてるってこと。
それは感覚の問題だからかわいそうと言えばかわいそうだけど。
727デフォルトの名無しさん:2006/08/01(火) 01:38:39
ムカついてるのはアンタ以外にいるの?

で、255の何にムカついてるの?何故ムカつかないといけないの?
728デフォルトの名無しさん:2006/08/01(火) 01:40:29
>>726
そうかな
別に>>255もムカつかれる書き方とは思わないし、>>255 >>257 >>269 とか結構
有意義な話に流れている。(その後のプロトタイプベース云々はともかくw)
729726:2006/08/01(火) 01:49:30
ごめん。話の流れから、叩かれてる人かと思って>>255読まずに適当に書いた。
730デフォルトの名無しさん:2006/08/01(火) 02:15:34
なんつーか、ある程度肥大化した閉鎖集団は、外部に仮想敵を作らないとやっていけないのだろうな。
何処とは言わないが。
731デフォルトの名無しさん:2006/08/01(火) 02:30:19
>>730
あまり真面目に生きないほうがいい
732デフォルトの名無しさん:2006/08/01(火) 03:12:34
最近ウンコAAを見ないと思ったら(ry
733デフォルトの名無しさん:2006/08/01(火) 05:23:54
仲直りスレで遊んでれば良いのになぁ。
734デフォルトの名無しさん:2006/08/01(火) 06:42:44
>>720
なにげにPloneなのね、そのサイト。
735デフォルトの名無しさん:2006/08/01(火) 08:02:30
>>727がツンに見えて仕方がない。
736デフォルトの名無しさん:2006/08/01(火) 11:47:36
2chで、むかつくいい方されたからって腹たててたら
どのスレにも書き込みできない。。
737デフォルトの名無しさん:2006/08/01(火) 12:03:32
さあ,Pythonの話をしようぜ
738デフォルトの名無しさん:2006/08/01(火) 12:18:25
u"ほげほげ”は、たまに期待どうりの動作をしないので
unicode("ほげほげ")のほうがいい。
739デフォルトの名無しさん:2006/08/01(火) 12:21:31
ソースの最初の行でcodingを宣言する癖を付けましょう
740デフォルトの名無しさん:2006/08/01(火) 13:11:46
便利すぎて盛り上がらないな。
741デフォルトの名無しさん:2006/08/01(火) 14:16:33
>>738
u"ほげほげ"に何を期待しているの?
742デフォルトの名無しさん:2006/08/01(火) 14:19:04
utf8で書けよボケ。
743デフォルトの名無しさん:2006/08/01(火) 14:35:24
>>> u = lambda x : unicode(x,'utf-8')
>>> print u("ほげほげ")
ほげほげ

これでちょっとは短くなるべ
744デフォルトの名無しさん:2006/08/01(火) 14:47:36
気まぐれにPythonのshellであそんでたら
u("ほげほげ")のときにスライスがバイト単位で切れちゃったんで
シェルのときは、環境で動作ちがうからめんどっちいなーと
思っただけです。

プログラムの時は、>739サンのようにしておりますので
意識してなかったんで、何でシェルのときスライスでunicharでてこないんだ
とおもって、しまっただけでした。

環境変数のLANGの値で、codingをいい感じにしてくれんのかなー
とおもってたら、ただの8ビット文字列にされてたようでした。
745デフォルトの名無しさん:2006/08/01(火) 14:49:14
>>743
ありがとう。
746デフォルトの名無しさん:2006/08/01(火) 16:21:55
site.pyのencodingがasciiになってるんじゃねえの?

>>> s = u'んなばかな'
>>> s[:2]
u'\u3093\u306a'
>>> print s[:2]
んな
>>> print s[2:]
ばかな
747デフォルトの名無しさん:2006/08/01(火) 17:19:24
>>746
site.pyは触っていません。
そうすれば、固定できるとは知っているのですが
システム全体に影響してしまうんで。。
PYTHONSTARTUPでなんとかできればいいんですけどね。
748デフォルトの名無しさん:2006/08/01(火) 17:22:43
749デフォルトの名無しさん:2006/08/01(火) 18:11:04
こんな結果でした。
バージョンによる違いだったみたいです。
== python2.5 ==

>>> s=u"ほげほげ"
>>> s[0]
u'\u307b'

== python2.4 ==
>>> s=u"ほげほげ"
>>> s[0]
u'\u307b'

== python2.3 ==
>>> s="ほげほげ"
>>> s[0]
'\xa4'
750デフォルトの名無しさん:2006/08/01(火) 18:15:12
>>749 修正。
== python2.3 ==
>>> s=u"ほげほげ"
>>> s[0]
u'\xa4'
751デフォルトの名無しさん:2006/08/01(火) 19:58:32
デフォルトエンコーディングがロケールから自動設定されるのは
2.4からじゃなかったか?
site.pyは直接書き換えないでsitecustmize.pyを使うのがお作法。
752デフォルトの名無しさん:2006/08/01(火) 21:10:39
tr/いろは/以呂波/

こういうのをやりたいんだけど
どうやって書けばいいのだろ?
753デフォルトの名無しさん:2006/08/01(火) 22:15:08
>>747
export PYTHONPATH=$HOME/.python/

$HOME/.python/sitecustomize.py
import sys
sys.setdefaultencoding('ENCODING')
754デフォルトの名無しさん:2006/08/01(火) 22:43:53
>>752
s=u"いろはにほへとちりぬるを"
table={ ord(u'い'):u'衣' , ord(u'ろ'):u'呂' ,ord(u'は'):u'波' }
print s.translate(table)
755デフォルトの名無しさん:2006/08/01(火) 23:04:00
>>754
thx
translateの使い方がようやく理解できたよ
756デフォルトの名無しさん:2006/08/02(水) 00:25:47
なんかMLでBCD-HEXのコンバートで違う方向で盛り上がっているけど
スマートな方法は思い付くかな。
757デフォルトの名無しさん:2006/08/02(水) 01:33:09
余はオフ会に逝くぞよ。
758デフォルトの名無しさん:2006/08/02(水) 01:57:49
Pytonのオフミって何やるの?
759デフォルトの名無しさん:2006/08/02(水) 03:07:12
そんなことここには書けませんよ
760デフォルトの名無しさん:2006/08/02(水) 04:47:14
書けないことやってるの?
761デフォルトの名無しさん:2006/08/02(水) 06:16:42
>>758
余は初参加であるので裏事情は知らぬが表向きは単なる飲み会であるものと存じておるぞよ。
762デフォルトの名無しさん:2006/08/02(水) 07:55:05
時間さえ都合つけば行くつもりだったが、
木曜の夕刻なんぞに開かれたら絶対行けない……
763デフォルトの名無しさん:2006/08/02(水) 08:55:32
Pythonオンリーイベント?
764デフォルトの名無しさん:2006/08/02(水) 09:36:22
誰のPythonがいちばん立派か自慢し合うんですよ
765デフォルトの名無しさん:2006/08/02(水) 09:41:37
そう思ってると
突然>>764は僕の見ている目の前で
ツナギのホックを
はずしはじめたのだ・・・!
766デフォルトの名無しさん:2006/08/02(水) 09:53:47
ttp://www.python.org/dev/peps/pep-0356/

リリースのスケジュールが早まったはずだから,本日RCリリース予定日?
wktk(・∀・)
767デフォルトの名無しさん:2006/08/02(水) 11:13:33
>>765
ウホッ
768デフォルトの名無しさん:2006/08/02(水) 12:54:33
魚曼 魚花
769デフォルトの名無しさん:2006/08/02(水) 13:44:50
セクシーコマンドー使いが居るのか!?
770デフォルトの名無しさん:2006/08/02(水) 17:56:54
あの。。。。
Pythonのはなしを。。。。。。。
771デフォルトの名無しさん:2006/08/02(水) 19:22:33
Pythonのthreadingについて、一言
772デフォルトの名無しさん:2006/08/02(水) 19:45:46
Pythonで作ったforthコンパイラw
tp://ftp.yum_python.org/pub/Phorth/
773デフォルトの名無しさん:2006/08/02(水) 19:48:24
他の文字コードからUTF-8に変換したいときは、何を使えばいいんでしょうか
774デフォルトの名無しさん:2006/08/02(水) 20:01:34
>>773
Python
775デフォルトの名無しさん:2006/08/02(水) 21:22:15
>>772
開けないです
サーバーが無いそうです
776デフォルトの名無しさん:2006/08/02(水) 22:49:17
>>773
decode
777デフォルトの名無しさん:2006/08/03(木) 01:21:58
URLのファイル名部分が「index」か「default」になっているかどうかをチェックしたいと考えています。
以下のようなコードを書いてみました。

import re

r = re.compile(".*/(index)|(default)\.[^/]+$")
if r.search("http://hoge/index.html").group() != None:


しかし、これではgroups()で取得できるものが、部分一致したindexか、defaultになってしまって全体が一致しているかどうかがわかりません。
具体的には、

"indexahtm"

こういうものはヒットしてほしくありません。
全体が一致しているかどうかを判断するには、どうしたら良いでしょうか。
よろしくお願いします。
778デフォルトの名無しさん:2006/08/03(木) 02:13:06
import os.path, urlparse
filepath = urlparse.urlparse("http://hoge/index.html")[2]
filename = os.path.split(filepath)[1]
print os.path.splitext(filename)[0]
779デフォルトの名無しさん:2006/08/03(木) 13:27:16
プログラミング経験0で、はじパイをほとんど読んだ人が、urlretrieveでローカに落としたルファイルを弄るようなコードを書くと、
なんだか動きが変だと思って、どうやらスレッドがいいらしいと思いついたときに見れば、その辺がよくわかるURLを下さい。
780デフォルトの名無しさん:2006/08/03(木) 13:39:09
781デフォルトの名無しさん:2006/08/03(木) 13:40:07
782デフォルトの名無しさん:2006/08/03(木) 18:32:30
動的にクラスを選択する方法ありませんか?

条件1の場合:
c = Class1()
条件2の場合:
c = Class2()
:
条件Nの場合:
c = ClassN()

分岐が多く汎用的でない。
783デフォルトの名無しさん:2006/08/03(木) 18:36:56
>>782
クラスもオブジェクトだから変数に突っ込める
あらかじめ判断したときに
C = Class1
とかやっておいて、インスタンスを作るときに
c = C()
とやればよろし
784デフォルトの名無しさん:2006/08/03(木) 18:41:52
>>782
うちはポリモーフィズムもどきでやってるよ。
785デフォルトの名無しさん:2006/08/03(木) 18:43:19
>>782
条件に規則性があるなら、条件からクラスを返す関数を作ってみるとか。
それか、条件のパラメータの一部をクラスの初期値に入れて分岐とクラスの種類を減らしてみるとか。
786デフォルトの名無しさん:2006/08/03(木) 18:47:22
作られるクラスがどれだけ異なるか/似ているかによって、ソリューションはかわってくるな。
787デフォルトの名無しさん:2006/08/03(木) 18:53:29
>>783
あ、どうもです。

イメージしていた方法はモジュールの動的な読み込みのような感じです。
対象がモジュールならば
m = imp.load_module(...)
の後、
m.hoge()
のように使えますが、クラスの場合は当然 AttributeError: なります。

インスタンス生成しなければならないと思うのですが、
ググってもそれらしいサンプルに出会えませんでした(。´Д⊂) ウワァァァン!!
788デフォルトの名無しさん:2006/08/03(木) 19:43:48
クラスがインタフェースを共有しているだけで、実装方法がまったく違うならクラスローダ。
実装方法はほとんど同じで、DRYにしたい場合はメタクラス。
789デフォルトの名無しさん:2006/08/03(木) 20:17:53
>>787
サンプルに頼っていては,枝葉の部分で躓きまくる。
基本を勉強しれ。
790デフォルトの名無しさん:2006/08/03(木) 23:40:21
ところで、パイソンチャレンジ
みんなどこまで行ったの?
791デフォルトの名無しさん:2006/08/03(木) 23:54:01
やってない、そんなひまない
792デフォルトの名無しさん:2006/08/04(金) 01:02:21
『みんなのPython』
http://www.amazon.co.jp/gp/product/479733665X
http://www.cbook24.com/bm_detail.asp?sku=479733665X

「はじパイより安くて入門用につかえる本」というニーズをこれが埋めてくれるのかも。
793デフォルトの名無しさん:2006/08/04(金) 02:26:27
UNIXとかPerlとかをよく見る、ナツメ社ハンドブックに似た感じの小さくて安い本が、
出版社違いでPythonでもあって驚いた。需要にこたえるところ、あったのね。
794デフォルトの名無しさん:2006/08/04(金) 02:49:00
>>792
値段の割りに結構分量がありますね。
「はじパイ」は値段も高いけど、冗長なのが...。
795デフォルトの名無しさん:2006/08/04(金) 06:43:15
>>792
Googleで名前をぐぐって一番上に出てくるサイトの人だと妄想しつつ期待。
796デフォルトの名無しさん:2006/08/04(金) 09:21:01
>>787
デザパタで言うところの Factory パタンを使うのがいいんジャマイカ?
797デフォルトの名無しさん:2006/08/04(金) 09:55:34
>>796
それを思考停止と呼ぶんだよ。
798デフォルトの名無しさん:2006/08/04(金) 10:28:35
>>797
それでいいじゃないか。
799デフォルトの名無しさん:2006/08/04(金) 10:35:34
まあ
現場を知らない上流は使えねえ。
800デフォルトの名無しさん:2006/08/04(金) 10:36:54
二昔前の現場を知っていても意味ないけどね。
801デフォルトの名無しさん:2006/08/04(金) 10:40:06
>>798
デザパタでいうところの Proxy パタンですね。
802デフォルトの名無しさん:2006/08/04(金) 11:52:24
python 人にも3時間で分かるデザインパターンの解説、
みたいなのはないっすか?
803デフォルトの名無しさん:2006/08/04(金) 12:11:30
3時間というのは無理だけど、
・Factory
・State/Strategy
・TemplateMethod
・Composite
とりあえずこの4つだけ押さえればいい。残りは全部その応用だから。
804デフォルトの名無しさん:2006/08/04(金) 12:14:52
覚えるのと使うのは別次元。
805デフォルトの名無しさん:2006/08/04(金) 12:28:52
ちなみにPythonだと、クラス自体を変数に入れられるから、Factoryとその
応用は、極めて簡潔に書けるか、またはまったく不要になる。
(例えば単純なSingletonなんか要らない)
デザパタを知ると、そのあたりでPythonのありがたみを再認識するのではない
かと。
806デフォルトの名無しさん:2006/08/04(金) 13:28:04
ある程度コードを書いて読めば、主要なパターンは自然と身につく。
それからパターンの解説書読めば充分。
「なんだ、いつも使ってるこれのことか」ってわかる。
807デフォルトの名無しさん:2006/08/04(金) 15:36:47
>>805
そうなんだけど。
ちゃんと書いたほうがわかりやすいので今のところそうやっている。
808デフォルトの名無しさん:2006/08/04(金) 16:46:22
#!/usr/bin/python と #!/usr/bin/env python はなにが違うの?
809デフォルトの名無しさん:2006/08/04(金) 16:48:28
>>808
前者はpythonを/usr/binを置かなきゃいけない
後者は/usr/binにenvが無きゃいけない
810デフォルトの名無しさん:2006/08/04(金) 17:27:30
>>797
何がどう思考停止なのか分からんのだが。マジレスきぼんぬ。
811デフォルトの名無しさん:2006/08/04(金) 17:57:11
ぼんぬ。ぼんぬ。ぼんぬ。ぼんぼんぬ。ぬ。
812デフォルトの名無しさん:2006/08/04(金) 18:13:12
しぼんぬ。
813デフォルトの名無しさん:2006/08/04(金) 20:34:29
かつてこの言語ほど2chと親和性の低い言語があっただろうか。
814デフォルトの名無しさん:2006/08/04(金) 21:10:32
>>812
インデント?
815デフォルトの名無しさん:2006/08/04(金) 21:29:18
Python で XML を利用したサンプルってありますか?
816デフォルトの名無しさん:2006/08/04(金) 21:48:56
最近こんな連中ばっかだな。PHP化してねえか?
817デフォルトの名無しさん:2006/08/04(金) 21:55:39
>>815
IBMのdevelopperworksにいろいろ出てる。
古い記事も多いので、それだけ注意。
818デフォルトの名無しさん:2006/08/04(金) 22:12:47
2.5b3来た
819デフォルトの名無しさん:2006/08/04(金) 23:13:43
じゃあ、全角スペースに変換する
プログラムを考えれ。
820デフォルトの名無しさん:2006/08/04(金) 23:29:51
>>815

ttp://www.amk.ca/talks/2006-02-07/

2.5から標準ライブラリに入るElementTreeのHowTo。
英語だけど図入りで分かりやすいので呼んで見れ。
821デフォルトの名無しさん:2006/08/04(金) 23:30:52
おまいらみんなRubyに帰れ。
822デフォルトの名無しさん:2006/08/04(金) 23:37:09
>>821
帰れといわれても、、
そっち方面から来てないからなぁ…
823デフォルトの名無しさん:2006/08/04(金) 23:37:44
>>> if 1 == 2:
   "yes"
else:
   "no"

'no'
インタプリタでこうなるんだが、これifが値を返してることになるの?
どういう仕組み?
824デフォルトの名無しさん:2006/08/04(金) 23:38:03
>>821
ニヤニヤ(・∀・)
825デフォルトの名無しさん:2006/08/05(土) 00:27:22
俺の予定では9月1日に2.5-final
826デフォルトの名無しさん:2006/08/05(土) 00:35:11
>>823
if は値を返さない。また、ifは文であって、式じゃない。
ところで単独の式は、それだけで文になれる。値も返す。
この場合"no" という式が、文として実行されて、その値を返している。

念のためだけど、このコードで'no'が画面表示されるのは対話画面だけ。
副作用のない式だから、普通のモジュールの中では何も起こらない。

更に念のためだけど、このif以下のコードを、print や return の引数に
することはできない。これらは式しか引数に取れないから。
827デフォルトの名無しさん:2006/08/05(土) 00:50:30
>>825
2.4のリリーススケジュールを見ると,そんなかんじかもね。

ttp://www.python.org/dev/peps/pep-0320/

2.5はBetaが3まで出たので,もっと早くRC - Finalと進む
 
 
 
 
 
 
と期待したい
828デフォルトの名無しさん:2006/08/05(土) 00:52:33
Python.jp のニュースに投稿してみたんだけど、新着記事にでてこないなぁ。
ひょっとして、投稿が掲載されるにはサイト管理者の承認手続きとかが必要なの?
829デフォルトの名無しさん:2006/08/05(土) 01:05:32
Planet Python Japan が復活したっぽい
830デフォルトの名無しさん:2006/08/05(土) 01:07:07
alpha 1  2006年4月5日    済
alpha 2  2006年4月27日   済
beta 1   2006年6月20日   済
beta 2   2006年7月11日   済
beta 3   2006年8月3日    ←今ここ
rc 1    2006年8月18日   予定
final    2006年9月12日   予定
release  2006年?月??日   (゚Д゚≡゚Д゚)?
831デフォルトの名無しさん:2006/08/05(土) 07:00:42
>>828
まともなニュースサイトなら、外部からのタレコミも、裏をとったり、
記事を編集したりするもんじゃない?まったり待ちなされ。

ところで、何を投稿したの?
832デフォルトの名無しさん:2006/08/05(土) 10:54:41
>>826
かなり特殊な現象なんだな
節々がlispっぽいからifが値を返したら面白いなと思ったんだけど
print if xxx:みたいな変態的なことさせる訳無いか
ありがとう
833デフォルトの名無しさん:2006/08/05(土) 12:20:52
>>823

>>> s = "spam"
>>> s
'spam'
>>> repr(s)
"'spam'"
>>> class Foo:pass

>>> foo = Foo()
>>> repr(foo)
'<__main__.Foo instance at 0x00C15DE0>'
>>> foo
<__main__.Foo instance at 0x00C15DE0>
>>> if True: foo

<__main__.Foo instance at 0x00C15DE0>

http://www.python.jp/doc/release/ref/customization.html
834デフォルトの名無しさん:2006/08/05(土) 15:55:04
>>832
そう悲観したものでもない。
Conditional Expression (条件式?)が導入される予定だから。
詳しくは >>639を参照。
835デフォルトの名無しさん:2006/08/05(土) 16:15:36
デザパタの話の続きだが、Pythonで楽になるのはFactoryだけじゃない。
__getattr__などを使えば、State/Strategyもすごく簡単になる。
Compositeも、変数に型がないから、共通のインターフェースを実装する
必要はなくなる。
同じデザパタでも、Javaとかとは何味も違う。
まあTemplateMethod は、Javaと変わらないけど。
836デフォルトの名無しさん:2006/08/06(日) 00:21:21
いまだにデザパタの名前と内容が一致しない。
837デフォルトの名無しさん:2006/08/06(日) 01:00:23
名前なんて飾りですよ
838デフォルトの名無しさん:2006/08/06(日) 02:24:12
ASCIIの文字コードのリストから文字列を生成するのって

''.join(map(chr,[0x30,0x31,0x32,0x33]))

こんな風にするしかない?
839デフォルトの名無しさん:2006/08/06(日) 02:38:25
無駄なことしてると思う
840デフォルトの名無しさん:2006/08/06(日) 02:43:15
まぁ、お前の人生よりは無駄じゃないよ。
841デフォルトの名無しさん:2006/08/06(日) 02:54:46
否定だけして代案を出さないやつのことってどう思う?
842デフォルトの名無しさん:2006/08/06(日) 03:00:10
''.join(chr(x) for x in range(0x30, 0x34))
843デフォルトの名無しさん:2006/08/06(日) 03:00:37
>>841
否定されるということがヒントになる場合もあるし、答えを教えないで質問者に考えさせる
という態度は極めて教育的だと言える
844デフォルトの名無しさん:2006/08/06(日) 03:01:42
ポジティブだなw
845デフォルトの名無しさん:2006/08/06(日) 03:09:47
>>841
実社会では孤立するだろうね。
そういう人には、能力があっても安くて厳しい仕事ばかり回ってくる。
ワーキングプアまっしぐらかな。
846デフォルトの名無しさん:2006/08/06(日) 03:12:12
>>838
それでいいよ
847デフォルトの名無しさん:2006/08/06(日) 03:19:29
>>845
劣等感丸出しだなw
848デフォルトの名無しさん:2006/08/06(日) 03:32:47
>>838
すごい
漏れにはそんな単純な方法思いつけんわ
849デフォルトの名無しさん:2006/08/06(日) 03:44:05
850デフォルトの名無しさん:2006/08/06(日) 04:37:24
↑微笑ましい厨ですね
851デフォルトの名無しさん:2006/08/06(日) 09:50:33
というか日記が日にち単位でなく
時間単位だということが発狂しているとおもふ
852デフォルトの名無しさん:2006/08/06(日) 10:11:16
薬か?
抗うつ剤とか,眠薬飲んでる奴はヤバいよな。
853デフォルトの名無しさん:2006/08/06(日) 10:17:35
日本語の IBM developerWorks にPythonの新しい記事がでてた。

『Python Webフレームワーク、第1回: DjangoとPythonを使ってWeb開発を行う』
http://www-06.ibm.com/jp/developerworks/linux/060802/j_l-django.shtml
854デフォルトの名無しさん:2006/08/06(日) 13:19:13
>> 842
''.join()の引数にイテレータを渡せるとは知らなかった。
855デフォルトの名無しさん:2006/08/06(日) 17:52:23
pygame 簡単だね
ちょっといじってみた
856デフォルトの名無しさん:2006/08/06(日) 19:00:20
>>854
イテレータなのか? 内包式が展開されたtupleじゃね?
857デフォルトの名無しさん:2006/08/06(日) 19:17:45
タプルは"()"じゃなくて","だろ
>>> type((0))
<type 'int'>
>>> type((0,))
<type 'tuple'>

ついでに
>>> (chr(x) for x in range(0x30, 0x34))
<generator object at 0x00C9A698>
>>> type(chr(x) for x in range(0x30, 0x34))
<type 'generator'>
858デフォルトの名無しさん:2006/08/06(日) 19:43:42
>>842
かっこいい(;´Д`)ハァハァ
859デフォルトの名無しさん:2006/08/06(日) 23:36:15
>>856
>>> " ".join(iter(["1","2","3"]))
'1 2 3'

イテレータもオッケーみたいだ
860838:2006/08/07(月) 00:17:46
>>839
俺もそう思うんだけど、代案が思いつかないんだよね。
やりたいのはmd5に渡すために文字列化したいだけなんだけど、
なんかすっきりしない。
861デフォルトの名無しさん:2006/08/07(月) 00:28:47
packとかないの?
862838:2006/08/07(月) 01:15:56
struct.packを使って

a=range(0x30,0x34)

struct.pack("%db"%len(a),*a)

までは書けたけど、あまり見やすくなった気はしないな。
やっぱり1文字ずつ生成して繋げるのが自然なのかな?
863デフォルトの名無しさん:2006/08/07(月) 02:41:32
文字列テーブル作っておいて、好きな範囲で切り出せばいいじゃん。動的に生成する必要性が本当にあるの?
864デフォルトの名無しさん:2006/08/07(月) 02:43:54
array でもいいんじゃない?

>>> import md5
>>> import array
>>> md5.new(array.array("B", range(10))).hexdigest()
'c56bd5480f6e5413cb62a0ad9666613a'
>>> md5.new("".join(chr(i) for i in range(10))).hexdigest()
'c56bd5480f6e5413cb62a0ad9666613a'
865838:2006/08/07(月) 02:52:33
>>864
それだ!!すっきりしました。
なんかあるはずと思っていたんだよね。
866838:2006/08/07(月) 03:06:02
>>863
必要性って言うか、動的に生成するすっきりしたやり方が無いかと探していただけだし。
ちなみに文字列テーブルで好きな範囲で切り出すって具体的にはどうするの?
867デフォルトの名無しさん:2006/08/07(月) 04:18:23
つ[スライス]

やはり動的に生成する必要はないんか・・・
868デフォルトの名無しさん:2006/08/07(月) 05:36:09
(ord(c) for c in list(s[start:end]))
869838:2006/08/07(月) 17:43:19
>>867,868
すまんが、これが何の問題を解決しているのか分からない
そもそも、文字列テーブルって何のテーブル?
870デフォルトの名無しさん:2006/08/07(月) 18:04:48
>>>''.join(map(chr,[0x30,0x31,0x32,0x33]))
'0123'
>>> array.array("B", [0x30,0x31,0x32,0x33]).tostring()
'0123'

今まで上のやつしか知らなかったけど
下の書き方のほうが有利そう
今度機会があるとき使わせていただきます
871デフォルトの名無しさん:2006/08/07(月) 20:58:32
つーか、リストにtostringをつけてほしい。
arrayっていまさら何って感じ・・・
統一感がない・・・
872デフォルトの名無しさん:2006/08/07(月) 22:06:37
出たら奇跡。
873デフォルトの名無しさん:2006/08/07(月) 22:17:57
Guodoです。

>>871
__str__()で勘弁してよ。
874デフォルトの名無しさん:2006/08/07(月) 22:39:22
>Guodo, who are you?
875デフォルトの名無しさん:2006/08/07(月) 22:45:52
はてなダイヤリーのpythonについてのページが詳しくなってる。
876デフォルトの名無しさん:2006/08/07(月) 22:47:10
>>875
ああ、物足りなかったんで付け足しといた
877デフォルトの名無しさん:2006/08/07(月) 22:47:38
>>876
乙です
878デフォルトの名無しさん:2006/08/07(月) 22:55:44
>__str__()で勘弁してよ。
まるで意味が違うし
879デフォルトの名無しさん:2006/08/07(月) 23:12:40
Giodoです。

>>878

ゴメン,OSConが終わったばかりで,疲れてるんだよ。
でも,リストをどのように文字列に変換するかは実装依存だと思うよ。
それくらい各自で実装してよ。
880デフォルトの名無しさん:2006/08/08(火) 10:05:29
Giren です

名前くらい覚えてください
881デフォルトの名無しさん:2006/08/08(火) 10:30:37
現在ActivePythonを、WSH(.pys)として使っています。
「日本Pythonユーザ会」のほうで配っているPythonでも同様にできますか?
882デフォルトの名無しさん:2006/08/08(火) 12:18:21
関西にはミドリ電化のミドリちゃんというのがいてね。
883デフォルトの名無しさん:2006/08/08(火) 13:03:30
>>881
「日本Pythonユーザ会」の配布のは使ってないんで、ENTHOUGHT EDITHIONので
試してみた。
http://code.enthought.com/enthon/

.pys は関連付けされていない。ActiveScriptとしては機能しない。
だけどwin32comというモジュールがあって、COMコンポーネントを扱うことが
できるから、ActiveScriptでやっているたいていの作業は標準のPythonでもで
きると思う。
IEやASPの中でPythonを動かすのは無理だけど。
884デフォルトの名無しさん:2006/08/08(火) 13:16:57
>>881
新たに Python for Windows extensions インストールすれば使える
http://sourceforge.net/projects/pywin32/
885881:2006/08/08(火) 13:49:26
>>883
>>884
どうもありがとう。
公式のインストーラでインストール後、>>884のエクステンションいれて、日本語コーデックいれてみました。
そのままでは、「.pys」が関連付けられてなかったので、以下のサイトを参考にして関連付け。

http://sh1.2-d.jp/b/python/2005-08-06-16-16.html

ばっちり動いてます。
どうもありがとうでした。
886デフォルトの名無しさん:2006/08/08(火) 15:41:41
・・・ダメだ、もうウンコ我慢できねぇ・・・
もらしてよかですか?
887デフォルトの名無しさん:2006/08/08(火) 15:42:45
誤爆 orz orz orz
888デフォルトの名無しさん:2006/08/08(火) 18:06:05
いいよ、誰も気にしてないよ。
我慢するとからだに悪いよ。
889デフォルトの名無しさん:2006/08/08(火) 19:22:09

どこへの誤爆かきになるな。。
拡張系ですか
890デフォルトの名無しさん:2006/08/08(火) 19:46:18
ずいぶんマニアックなスレになってきたな。
891デフォルトの名無しさん:2006/08/08(火) 20:55:13
eXtremeペアプログラミングって、
エッチな事だと勘違いしていました。
892デフォルトの名無しさん:2006/08/09(水) 05:45:53
>>891 はまだ勘違いしているようだ。
893え、そういう話じゃない?:2006/08/09(水) 10:27:55
ペアプログラミングのお相手募集中
894デフォルトの名無しさん:2006/08/09(水) 10:35:24
染色体の交換はプログラミングに入るんですか。
895デフォルトの名無しさん:2006/08/09(水) 13:33:32
それはコンパイルです
896デフォルトの名無しさん:2006/08/09(水) 14:43:14
実行するとどうなりますか?
897デフォルトの名無しさん:2006/08/09(水) 14:46:00
あなたの場合、ソースが足りなくてコンパイルエラーが起きます。
Pythonはインタープリタ言語なのでこれ以上はスレ違いです。
898デフォルトの名無しさん:2006/08/09(水) 15:12:05
前処理としてバイトコンパイルします
本番はバーチャルマシンを使います
いきなりは嫌われますよ
899デフォルトの名無しさん:2006/08/09(水) 16:15:31
>>898
なんか悲しい
900デフォルトの名無しさん:2006/08/09(水) 16:34:47
┌──────────────────┐
|                              |
│            _  ∩             |
│          ( ゚∀゚)彡 おっPy!     |
│          (  ⊂彡   おっPy!    .|
│           |   |            |
│           し ⌒J              |
│                              |
│         Now Oppaing. ....          .|
│                              |
│   そのままぱいthonでお待ちください。  |
|                              |
└──────────────────┘
901デフォルトの名無しさん:2006/08/09(水) 20:32:57
Planet Python Japan, また落ちているよ。
http://tokuhirom.dnsalias.org/~tokuhirom/planetpythonjapan/
902デフォルトの名無しさん:2006/08/09(水) 21:05:38
質問です。

ActivePython + MySQL でスタンドアロンDB操作したいのですが、
ActivePythonではモジュール(MySQLdb)追加インストールはどうやって行うんですか?
ActivePerlならばppmをつかって行えるのですが・・・
903デフォルトの名無しさん:2006/08/09(水) 21:13:21
ActivePythonは使ってないので分からないけど、
http://sourceforge.net/project/showfiles.php?group_id=22307
ここの
MySQL-python.exe-1.2.1_p2.win32-py2.4.exe
はダメ?
904デフォルトの名無しさん:2006/08/09(水) 21:18:29
>>903
ありがとうございます。インストールできました。
対話モードでimportできたので、これでいけそうです。
905デフォルトの名無しさん:2006/08/09(水) 22:12:41
>901
PythonMatrixのひとがPlanet〜のかわりになるようなのを用意してくれてたけど、
GoogleReaderはいまいちだなぁ。

PlanetPythonJapanみたいにずらっと並べて見れるRSS閲覧サービスってないすか。
906デフォルトの名無しさん:2006/08/09(水) 23:38:18
Pythonで自分でつくりゃいいじゃん。
907デフォルトの名無しさん:2006/08/09(水) 23:48:32
PythonにはEasy Install というインストーラが標準のようだけど、
MySQLdbは違うのかな。
http://nagosui.org/Nagosui/Misc/Turbogears/turbogears-install-on-windows
http://peak.telecommunity.com/DevCenter/EasyInstall
908デフォルトの名無しさん:2006/08/10(木) 00:05:35
windowsでPython使ってるけど、easy Install とか egg とかはあまりお世話になったことが無いな。
909デフォルトの名無しさん:2006/08/10(木) 00:28:26
TurboGearsでお世話になった
910デフォルトの名無しさん:2006/08/10(木) 01:00:53
厨房な質問だけど,気になるんで教えてください.
はじPyのP105
>>> 'SPAM'.join(['eggs', 'sausage', 'ham', 'toast'])
'eggsSPAMsausageSPAMhamSPAMtoast'
となるんだけど,なんでなのかわかりません.
「joinはドット. の前に指定された文字列と連結する機能がある.」
と書かれているのですが,なんで最後のtoastの後にはSPAMが連結されてないの?

911デフォルトの名無しさん:2006/08/10(木) 01:06:12
>>910
そういう仕様だから
912デフォルトの名無しさん:2006/08/10(木) 01:08:03
>>910
説明文がよくないかも。
正しくは「joinはドット. の前に指定された文字列*で各要素を*連結する機能がある.」
つまりシーケンスの各要素をつなげるんだけど、そのときに間に文字列を挟むことができますよ、
そしてその文字列はドットの前に指定された文字列ですよ、ということ。
913デフォルトの名無しさん:2006/08/10(木) 01:08:18
>>910
文章による説明が自然言語の限界で不完全なだけだから気にするな
914デフォルトの名無しさん:2006/08/10(木) 01:11:21
そのほうが使い勝手がいいからな。

Cを学んだ人なら、配列の要素を表示する処理を作ったら、

1, 2, 3, 4, 5, 6,

と最後にいらない 「,」 が入って萎えるけど、これに対処するためだけに
処理をいじるのめんどくせー。 と思ったことが一度はあるはずだ。
915デフォルトの名無しさん:2006/08/10(木) 01:14:42
なんでlist.join(string)じゃないんだろう・・・?
916デフォルトの名無しさん:2006/08/10(木) 01:17:17
>>915
リストの機能ではなく文字列の機能だから
917デフォルトの名無しさん:2006/08/10(木) 08:03:50
join って自動詞でもあるんだから、別にリスト側にあってもおかしくなくね?
むしろ、他の言語では、どれもリスト側のメソッドとして実装されてるよね。
918デフォルトの名無しさん:2006/08/10(木) 08:47:05
splitとjoinを近いとこに配置したかったんじゃない?

PythonとPerlのsplit、joinその他を比較してるページを見つけたんで貼っとく。
ttp://www.harukaze.net/~haruka/map.html
919デフォルトの名無しさん:2006/08/10(木) 08:59:57
>>917
自分もそれ思った。str と list に両方実装しといてもらうのが一番便利な気がする。
あ、でも、pythonだから2通りできちゃまずいのかなぁ・・・
920デフォルトの名無しさん:2006/08/10(木) 10:47:00
使い方を覚えればいいだけの話だろ。

愚かな一貫性は小人物に憑いたゴブリンである。
921デフォルトの名無しさん:2006/08/10(木) 11:27:29
>>917
明らかに「文字列専用」の機能がリストの中に存在するのは気持ち悪いよ
922デフォルトの名無しさん:2006/08/10(木) 11:43:40
>>921
joinが文字列専用だってこと?
どう考えてもjoinはリストやシーケンス専用の機能としか思えないのだが。
923デフォルトの名無しさん:2006/08/10(木) 11:45:22
>>922
明らかに文字列操作のカテゴリに属する機能だと思うけど
聞く耳持たないなら議論しないけどさw
924デフォルトの名無しさん:2006/08/10(木) 11:54:23
joinはリストの機能だよ派の意見:
・joinはリストを連結するんだからリストの機能だろ!
・他の言語と違くて気持ちわりー!
・あの子とjoinしたいです><

joinは文字列の機能だよ派の意見:
・joinは文字列で連結して文字列を作るんだから、どうみても文字列の機能です。
・他の言語との一貫性を求めるなら他の言語使えやヴォケ!
・あいつとjoinしたい アッー!!
925デフォルトの名無しさん:2006/08/10(木) 12:34:32
他の言語って具体的に何?
926デフォルトの名無しさん:2006/08/10(木) 12:37:42
>>924
(´∀`)
927デフォルトの名無しさん:2006/08/10(木) 13:14:03
joinが文字列機能でああいう書式なら、splitの方も
','.split('a,b,c')
にするべきじゃないのか?
928デフォルトの名無しさん:2006/08/10(木) 13:23:07
joinの話だが、
joinが受け取れるのは、リストだけではない。文字列だけを要素とするものだっ
たら、タプル、リスト、イテレータ、ジェネレータ、なんでもOKだ。

>>> def get_hoge():
...   for i in range(10):
...     yield "hoge" + str(i)
...
>>> "-".join(get_hoge())
'hoge0-hoge1-hoge2-hoge3-hoge4-hoge5-hoge6-hoge7-hoge8-hoge9'

そういうものすべてにjoinを実装するのではなく、何でも受け取れる
万能のjoinを文字列のメソッドとして用意するのは、一つの見識だと思う。

まあこういう万能関数が必要になるのは、Pythonのコレクション型が混乱して
いるせいだとも思うが。
929デフォルトの名無しさん:2006/08/10(木) 13:24:37
>>927
どっちにしても文字列のメソッドだから、そちらは正直どっちでも構わん
リストのメソッドに文字列結合機能があるのは気持ち悪いという話だから
930デフォルトの名無しさん:2006/08/10(木) 13:28:01
joinについてはむしろ素の関数にしたほうが良かった気もするね
string.join(['a', 'b', 'c']) → 'abc'
string.join(['a', 'b', 'c'], '+') → 'a+b+c'
みたいな
まぁ単に「決め」の話だから、「これがPythonだ、おまえら慣れろ」で別に構わんけどw
931デフォルトの名無しさん:2006/08/10(木) 13:30:53
ちなみにjoinは万能とは言え、文字列以外を要素に含むコレクションは扱えない。

>>> '-'.join([1, "2", "3"])
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
TypeError: sequence item 0: expected string, int found

>>> '-'.join([x.__str__() for x in [1, "2", "3"]])
'1-2-3'

>>> '-'.join(map(str, [1, "2", "3"]))
'1-2-3'

デフォルトで__str__を呼ぶぐらいしてくれてもいいと思うが、そうなってい
ないのは、やっぱり重くなるからか?
932デフォルトの名無しさん:2006/08/10(木) 13:33:10
>>931
> デフォルトで__str__を呼ぶぐらいしてくれてもいいと思うが、そ

個人的にはエラーになってくれるほうが気持ちいいな
数字から文字列のような型変換は原則として明示するべきだと思う
933デフォルトの名無しさん:2006/08/10(木) 13:53:47
>>921,923
「明らかに」を使うあたり、思考停止しているとしか考えられない。
934デフォルトの名無しさん:2006/08/10(木) 13:55:42
>>933はどう考えているの?
935デフォルトの名無しさん:2006/08/10(木) 14:11:06
>>934
明らかに煽りたいだけに違いない。
936デフォルトの名無しさん:2006/08/10(木) 14:31:04
>>930
その書き方で、動くんだけど。
知らなかったの?
937デフォルトの名無しさん:2006/08/10(木) 15:12:58
ここがあの名高いrubyのスレですね。
938デフォルトの名無しさん:2006/08/10(木) 15:24:45
>921 の気持ちも分かるが 気分的(見た目等)には >915 の
疑問はもっと良く分かる
939デフォルトの名無しさん:2006/08/10(木) 15:28:55
>>936
stringモジュールのjoin関数のこと?

import string
string.join(["1","2","3"])
'1 2 3'

1.6でunicode文字列が導入される前に使われていた関数だね。
unicode文字列を導入するにあたり
stringモジュールにufind()とかujoin()とか作るのもちょっとね
ということで文字列メソッドが導入されたわけだが
940デフォルトの名無しさん:2006/08/10(木) 15:30:54
Python3000になれば少しはすっきりするのかな
941デフォルトの名無しさん:2006/08/10(木) 16:29:09
まあなんだ、Pythonがどうかはしらんが、
PHPではjoin()は配列関数に区分されている。
RubyではArrayクラスのメソッド。
JavaScriptでもArrayのメソッドだな。
join()が文字列の関数という意見は初めて見た。
本気で言ってるのか、ただのPython厨か。
つうか、シーケンスにまとめてメソッドを定義できないの?
942デフォルトの名無しさん:2006/08/10(木) 16:32:14
レシーバの概念を知らないんでしょう
943デフォルトの名無しさん:2006/08/10(木) 16:57:09
夏休み厨まつり!
944デフォルトの名無しさん:2006/08/10(木) 17:10:38
>>941
PHP、Ruby、JavaScript厨乙ww
普通に考れば文字列操作というカテゴリの操作だろ
シーケンス一般に文字列という特殊なシーケンスに特化した操作を含めるのは美しくない
もちろん文字列のメソッドとして(名前も含めて)相応しいかどうかはまた別の話だが
個人的にはstringモジュールの関数を呼ぶほうを選ぶかな
945デフォルトの名無しさん:2006/08/10(木) 17:46:46
>>941
Rubyに詳しいみたいだから聞くけれど、
>>928みたいに、イテレータの戻り値をJOINするのは、Rubyではどうやるの?
946デフォルトの名無しさん:2006/08/10(木) 18:04:54
>>945
Pythonにも詳しくないみたいだから聞くけれど、
"イテレータの戻り値"ってナニ?
callableなイテレータってどんなイテレータだ?
947デフォルトの名無しさん:2006/08/10(木) 18:08:52
>>946
next()の戻り値のことだよ。
どうも通じているのにわざと聞いているような気がするけど。
948デフォルトの名無しさん:2006/08/10(木) 18:14:11
夏休み厨まつり!!
949デフォルトの名無しさん:2006/08/10(木) 18:20:34
Pyhonの流れに乗ればいい。
950デフォルトの名無しさん:2006/08/10(木) 18:33:47
ぱいほんのながれ
951デフォルトの名無しさん:2006/08/10(木) 19:05:52
ぱいほんを信じなさい。
952デフォルトの名無しさん:2006/08/10(木) 19:20:54
>>945
>>941ではないけど、普通にget_hoge().join('-')
953デフォルトの名無しさん:2006/08/10(木) 20:02:46
>>946
Pythonのは外部イテレータでRubyのは内部イテレータ。だからそもそも
joinにイテレータを渡すことはRubyではできない。
http://ja.wikipedia.org/wiki/%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF
954デフォルトの名無しさん:2006/08/10(木) 20:09:08
まぁpythonのばあい、文字列しかjoinできないから、他の言語とは事情が違う、
955953:2006/08/10(木) 20:14:10
Enumerableというシーケンス用モジュールがRubyにはあるけど、
joinメソッドは持ってないみたい。
956945:2006/08/10(木) 20:44:49
>>953
おお、ありがとう!おかげですっきりしたよ。
>>952を見て、Rubyが外部イテレータをjoinする機能を持っているのかと思っ
て、調べまくっちゃったよ。これはArrayの間違いだよなあ。

Rubyだったら、イテレータを諦めて、Arrayを使うしかないよな。
irb(main):081:0> def get_hoge
irb(main):082:1>   a = []
irb(main):083:1>   10.times {|i| a.push("hoge" + i.to_s)}
irb(main):084:1>   a
irb(main):085:1> end
=> nil

irb(main):087:0> get_hoge.join("-")
=> "hoge0-hoge1-hoge2-hoge3-hoge4-hoge5-hoge6-hoge7-hoge8-hoge9"
957デフォルトの名無しさん:2006/08/10(木) 20:51:30
>>952
.join('-') <-- かわいい
958デフォルトの名無しさん:2006/08/10(木) 20:53:36
>>956
.join("-") <-- キモい

959デフォルトの名無しさん:2006/08/10(木) 21:29:31
そもそもrubyなんてどうでもいい。
960デフォルトの名無しさん:2006/08/10(木) 21:36:32
rubyを意識してる奴が多いんだよ
961デフォルトの名無しさん:2006/08/10(木) 21:41:47
rubyのほうが出来がいいからな
962デフォルトの名無しさん:2006/08/10(木) 22:10:24
はいはい
963デフォルトの名無しさん:2006/08/10(木) 22:17:30
rubyかわいいよruby
964デフォルトの名無しさん:2006/08/10(木) 22:21:57
>>944
>普通に考れば文字列操作というカテゴリの操作だろ
だからその根拠はなによ?おまえのいう普通とやらが何の根拠もないんだけど。
なんの説明もなしに「普通に考えれば文字列操作」ってばか?
ここで話題にしているjoin()は、「リストの要素を連結する」という動作だぞ。
そのオプションとして、間に挟む文字列があってもいいというだけ。
list.join()でもlist.join("str")でもlist.join(123)でもいいはず。
それをなぜ"str".join(list)のように文字列だけに限定するのかわからん。
965デフォルトの名無しさん:2006/08/10(木) 22:22:35
rubyなんてしらん
966デフォルトの名無しさん:2006/08/10(木) 22:32:08
>>965
俺もw
Ruby勉強すると何かいいことある?(と煽ってみるw)
967デフォルトの名無しさん:2006/08/10(木) 22:35:52
ヒント

便利 > 合理的
968デフォルトの名無しさん:2006/08/10(木) 22:37:39
>>964
普通に考えればそう、という奴相手に、何を言っても無駄だって。
969デフォルトの名無しさん:2006/08/10(木) 22:41:06
感覚のレベルの話をこんな場所で摺り合わせるなんて無理だよ
個人的にはどちらの意見もそれなりに納得できる
正直なぜと聞かれても困るが
970デフォルトの名無しさん:2006/08/10(木) 22:45:22
>>910の例で言うと
python
'SPAM'.join(['eggs', 'sausage', 'ham', 'toast'])
ruby
['eggs', 'sausage', 'ham', 'toast'].join('SPAM')

と、思いっきり反対を行ってるわけで・・・
そう簡単に、「明らかにどっちがどう」とかいえない気が、・・・
971デフォルトの名無しさん:2006/08/10(木) 22:47:52
つーかなんでいつの間にかRubyとの対比がメインになってるんだよ
他でやれ他で
972デフォルトの名無しさん:2006/08/10(木) 22:48:04
郷に入れば郷に従えということで。
973デフォルトの名無しさん:2006/08/10(木) 22:50:44
オブジェクト指向なんて捨ててしまえ
974デフォルトの名無しさん:2006/08/10(木) 22:52:15
List=["1","2","3","4","5"]
obj = "str".join(List)
とやったばあい、直感的にみて obj は strクラスだろうとおもうわな。

たとえば、Pythonで、Listにjoinがあるとしたら、こんなかんじか?
obj = List.join("str")

とやったばあい、リストのメソッドなのにobjにstrクラスがはいってたら嫌だ。
せめて、入るのは要素にしてほしい。
975デフォルトの名無しさん:2006/08/10(木) 22:53:07
>>974
もういいじゃん。
976デフォルトの名無しさん:2006/08/10(木) 22:54:00
そろそろ誰か次スレを立ててもらえませんか?
977デフォルトの名無しさん:2006/08/10(木) 22:54:29
あと3日くらいもたそうぜ。
978デフォルトの名無しさん:2006/08/10(木) 22:58:30
>974
なるほど、A objのメソッドはA objを返してほしいって感覚があるんですかね。pyhonは
その点rubyはカオスですね。"abcdef"[2] == 99にはチョット引いたw
979デフォルトの名無しさん:2006/08/10(木) 23:02:32
>>978
いや、それ普通でしょ
980デフォルトの名無しさん:2006/08/10(木) 23:05:56
> なるほど、A objのメソッドはA objを返してほしいって感覚があるんですかね。pyhonは
こんなんで納得されても

本当にそうなっているメソッドは
全体の何割あるんだろうね
まあ数えたことは無いが
981デフォルトの名無しさん:2006/08/10(木) 23:08:17
>>979
python
"abcdef"[2] == "c"
ruby
"abcdef"[2] == 99

高級言語なのにASCIIを知ってることを強要されるの何か違和感を感じる
まあ、?cっていう技があるみたいだけど?って何って感じであまり気持ちよくない気が・・・
982デフォルトの名無しさん:2006/08/10(木) 23:08:19
だから、pythonのjoinは文字列しか連結できないんだってば。
983デフォルトの名無しさん:2006/08/10(木) 23:10:54
Help on method_descriptor:

join(...)
S.join(sequence) -> string

Return a string which is the concatenation of the strings in the
sequence. The separator between elements is S.
984デフォルトの名無しさん:2006/08/10(木) 23:12:36
>>981
何言ってるのかわからん
985デフォルトの名無しさん:2006/08/10(木) 23:17:48
次スレ立てるよ
986デフォルトの名無しさん:2006/08/10(木) 23:19:03
立てたらココで教えてください。
987デフォルトの名無しさん:2006/08/10(木) 23:20:18
もうrubyの話はいいでしょ。
ruby叩きたいのなら、rubyスレでどうぞ。
988デフォルトの名無しさん:2006/08/10(木) 23:20:33
989デフォルトの名無しさん:2006/08/10(木) 23:25:23
>>988
990デフォルトの名無しさん:2006/08/10(木) 23:28:46
え?A objのメソッドはA objを返すのがPythonのデフォルトだったのか。
991デフォルトの名無しさん:2006/08/10(木) 23:32:49
この話題に俺は飽きたので次スレに持ち込むのは禁止します
992デフォルトの名無しさん:2006/08/10(木) 23:33:37
たしかに飽きた。
993デフォルトの名無しさん:2006/08/10(木) 23:43:30
>>990
デフォッてほどでもないけど、
たとえば、len(s)や、min(s)、max(s)が、メソッドではなく関数で
実装されてるあたりに多少そういう配慮があるような気が・・・
rubyなら普通にs.length、s.size....

でも、いまstrのメソッド細かく見てきたけど、countとかindex系とか
必ずしもすべてというわけではない・・。

python zenみたいなdocumentになんか書いてなかったかなぁ・・・
994デフォルトの名無しさん:2006/08/10(木) 23:51:18
やっと夏休みが来た院生ですが,
Pythonを最初からやり直そうと,
みんなのPython買おうと思います.
買った人いますか?
995デフォルトの名無しさん:2006/08/10(木) 23:54:43
python.orgにある配布文書じゃダメなのか。

996デフォルトの名無しさん:2006/08/11(金) 00:02:45
みんなのPythonはまだ店頭に並んでないと思います
997デフォルトの名無しさん:2006/08/11(金) 00:04:53
joinに関する結論:
よそはよそ うちはうち!
わがまま言うんじゃありません! by かーちゃん J(`o´)し
998デフォルトの名無しさん:2006/08/11(金) 00:14:43
>>997
まとめ乙
999デフォルトの名無しさん:2006/08/11(金) 00:21:12
今さらだけど、次スレどうすんの?
↓を再利用するのか、もしくは敗北者スレを新しく立てるのか否か。

Python の宿題ここで答えます Part 1
http://pc8.2ch.net/test/read.cgi/tech/1153585095/
1000デフォルトの名無しさん:2006/08/11(金) 00:25:10
1000だったらPython3000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。