Pythonのお勉強 Part2 ..
[2ch|▼Menu]
116:デフォルトの名無しさん
08/01/31 04:51:28
>>110-114 本当にありがとうございます。
> 「ほんとうにやりたいこと」
というのはほんとうに純粋な興味からです。しかし皆さんのお話をうかがうに、
元々こんなことをやることが無理筋なのだと理解しました。
>>113の方が仰っているのを理解する意味で、
foo = Foo()
print id(foo), foo.get_var_name()
bar = Foo()
print id(bar), bar.get_var_name()
bar = foo
print id(foo), foo.get_var_name()
print id(bar), bar.get_var_name()
としてそれぞれ確認を行いました。
いずれにしても、globals()やid, tracebackの存在を知ることができて
ありがたいです。

>>115 ワロタ。。のですが、つまり原理的にこうするしかないということですね。


117:デフォルトの名無しさん
08/01/31 06:57:19
呼び出し元のフレームから.f_code.co_codeと.f_lasti辺りから解析すれば変数名は取得できるんじゃないの?
式になると当然無理だけど
まあ変数名取得してどうすんのという気はする

118:デフォルトの名無しさん
08/01/31 07:01:39
変数名がどうして必要になるのかが毎度気になる

119:デフォルトの名無しさん
08/01/31 07:25:51
>>70
Foxit Reader 使ってみたら PDF サクサク動いて感動した。d

120:デフォルトの名無しさん
08/01/31 09:47:29
cheese shopを未だにpypiと言う人にPythonを語る資格はないと思う。

121:デフォルトの名無しさん
08/01/31 09:48:48
たとえば、obj._name で常に変数名が取れたとする。

しかし、これは、'obj' と常に等しい。したがって変数名を取る仕組みは不要。

122:デフォルトの名無しさん
08/01/31 10:55:42
>>> foo = Bar()
>>> foo._name = 'foo'
>>> foo._name
'foo'
>>> bar = foo
>>> bar._name
'foo'
>>> bar._name = 'bar'
>>> foo._name
'bar'

123:デフォルトの名無しさん
08/01/31 12:59:11
もし変数名が取得できたらデバッグとかテストとか楽になりそうだと思うけどな

124:デフォルトの名無しさん
08/01/31 13:01:02
URLリンク(d.hatena.ne.jp)
書いては見たけど使いどころ思いつかん

125:デフォルトの名無しさん
08/01/31 13:28:17
Pythonの変数はコンテナじゃなくてリファレンスだから、
いろいろ変なことが起こる。

少なくともCPythonでは、
a = 2
b = 3 - 1
とすると、aとbは同じオブジェクトになる(a is bがTrueになる)。

文字列もインターンされたりされなかったりするから、
s = "ab"
t = "a" + "b"
だとs is t。
u = "a/b"
v = "a" + "/" + "b"
だとu is not v。

そーいうのを知ったうえでそれでもやるなら、どうぞどうぞ、という感じ。

126:デフォルトの名無しさん
08/01/31 13:34:12
>>123
>>108みたいな方法が出来ないというのであって、デバッグとかテストのときに
変数名とその値の一覧を取得するのはlocals(), globals()でおk

127:デフォルトの名無しさん
08/01/31 13:35:00
>>> "ab" is "a"+"b"
True
>>> "abc" is "a"+"b"+"c"
True
>>> "a/c" is "a"+"/"+"c"
False

なんだコレ?、バグじゃね?w

128:デフォルトの名無しさん
08/01/31 13:40:59
>>> 200000 is 100000 + 100000
False
>>> 20000 is 10000 + 10000
False
>>> 2000 is 1000 + 1000
False
>>> 200 is 100 + 100
True
>>> 20 is 10 + 10
True
>>> 2 is 1 + 1
True

テラ意味不明w笑いが止まらんw

129:デフォルトの名無しさん
08/01/31 13:41:02
is はポインタ比較。等値比較には == を使え

130:デフォルトの名無しさん
08/01/31 13:42:52
何が?
文字列や整数のようなオブジェクトがimmutableになっていて、VMが勝手に使いまわしてくれるのは大変ありがたいんだが。
再利用基準はVM依存だから、非明示的に作られた同値オブジェクトが同一だったり非同一だったりするのは当たり前。

131:デフォルトの名無しさん
08/01/31 13:54:41
>>125
> Pythonの変数はコンテナじゃなくてリファレンス
が真理だと思う。
クラスの中で self.get_var_name() とかして自分の名前を知りたいのかもしれないけど、
参照元が1つとは限らんし、その名前のコンテキストもわからんし、使いようがないような。


132:デフォルトの名無しさん
08/01/31 14:04:26
>再利用基準はVM依存だから、非明示的に作られた同値オブジェクトが同一だったり非同一だったりするのは当たり前。

immutable なのに再利用されないものがある理由が分からん


133:デフォルトの名無しさん
08/01/31 14:20:41
>>132
既にVM内に同値オブジェクトが存在するかどうか探す手間がオブジェクトの生成コストを超えるなら、再利用しない方がマシ。

134:デフォルトの名無しさん
08/01/31 20:26:55
>>91
>>98
ありがとう。ほんとうにありがとう。
こういう人たちがいるのでPython大好きだ

135:デフォルトの名無しさん
08/02/01 00:47:57
weakref.ref つかうときって、普通に

hoge_ref = weakref.ref(hoge)

ってやってる?それとも hoge が None である場合を考慮して

def get_hoge(self):
 return self.__hoge_ref and self.__hoge_ref()
def set_hoge(self, v):
 self.__hoge_ref = v and weakref.ref(v)
hoge = property(get_hoge, set_hoge)

みたいにしてる?


136:デフォルトの名無しさん
08/02/01 01:38:09
>>127は、識別子として有効な文字列ならinternされるって実装だから起こる現象。


137:デフォルトの名無しさん
08/02/01 05:00:40
>>120
URLリンク(pypi.python.org)
まずはここのサイトの管理人に文句を言ってくれないかwww

138:デフォルトの名無しさん
08/02/01 09:21:55
自分の間違いを他人のせいにする奴は生きている資格がないので今すぐ死ね。

139:デフォルトの名無しさん
08/02/01 10:15:36
setattr(self, "a", "b")
self.a = "b"
これ同じ?どっちが早い?

140:デフォルトの名無しさん
08/02/01 11:47:57
>>138
他人に'死ね'なんていうもんじゃないよ!!
137がPythonを使うのを止めれば済むことじゃないか!!!

141:デフォルトの名無しさん
08/02/01 17:03:02
ファイルとかパスを正規表現を使って探せる関数はありますか?
globはワイルドカードしか使えません><

142:デフォルトの名無しさん
08/02/01 17:41:03
>>141
re.match

143:デフォルトの名無しさん
08/02/01 19:48:33
re.match と os.listdir を組み合わせたのが欲しいんだろう

144:デフォルトの名無しさん
08/02/01 20:24:07
>>141
無理
MicrosoftがWinFSを載せたら出来たかもしれないが…

145:デフォルトの名無しさん
08/02/01 20:34:53
前スレでurllibでwikipediaのページを取ってこれないって言った人に対して
ライブラリのせいにすんな、死ねよって書いてた人だろ? >>138


146:デフォルトの名無しさん
08/02/01 20:52:04
145の頭の中にはオレとアイツの二人しかいないらしい。
これもゆとり教育の悪影響だろうか。

147:デフォルトの名無しさん
08/02/01 22:03:10
>>145
urllibでwikipediaのページを取れましたか?



148:デフォルトの名無しさん
08/02/01 22:18:39
pdbつかってるんですが変数に変化があったときブレイクしてくれるようなコマンドありますか?
gdbのwatchみたいなやつ

149:デフォルトの名無しさん
08/02/02 02:23:00
>>147
urllibのURLopenerでUserAgent指定すればいいんじゃね?

150:デフォルトの名無しさん
08/02/02 03:40:29
最近httplibそのまま使ったほうがいい気がして来た

151:デフォルトの名無しさん
08/02/02 03:57:28
urllib2

152:デフォルトの名無しさん
08/02/02 04:25:32
Python3.0だとurllibがurllib2相当になったりしないんだろうか

153:デフォルトの名無しさん
08/02/02 11:07:30
もっと便利で高機能なurllib3が追加される

154:148
08/02/02 12:47:12
yoyoyo ねーのかyo

155:デフォルトの名無しさん
08/02/02 13:29:02
ggrks

156:デフォルトの名無しさん
08/02/02 14:27:08
グーグル、土日休みだろ。

157:デフォルトの名無しさん
08/02/02 14:32:31
それ社員だけ

158:デフォルトの名無しさん
08/02/02 19:05:55
PythonでCGIプログラムを書いてるんですが、sessionを管理してくれるライブラリはありませんか。

159:デフォルトの名無しさん
08/02/02 19:34:03
PerlとRubyには存在するがPythonは自己でファイルを作って
管理していくしか現状ないみたい。
他はDjangoフレームワークつかうとか

160:デフォルトの名無しさん
08/02/02 21:06:57
>>158
そういう用途ならRubyが向いてるよ

161:デフォルトの名無しさん
08/02/02 21:31:43
その程度で躓くようなヤツはRubyを使った方がいいよ。
絶対。断じて。
Rails使って遅さにハマれば勉強になるよ。

162:デフォルトの名無しさん
08/02/02 22:00:36
Visual C++ 2008で作成したdllをctypesで読み込もうとしてるんですが関数がないというエラーが出ます。

test.dllで定義した関数
const char* test() { return "test"; }

test.py
from ctypes import windll
lib = windll.LoadLibrary("test.dll")
lib.test

function 'test' not found

dllのロードはできています。何か考えられる原因はありますか?

163:デフォルトの名無しさん
08/02/02 22:09:11
exportしてるのか?


164:デフォルトの名無しさん
08/02/02 22:16:25
exportってVC++の方の話ですか?

165:デフォルトの名無しさん
08/02/02 22:21:04
dumpbin.exe /exports test.dll で確認してみたら


166:デフォルトの名無しさん
08/02/02 22:29:42
VC++でdll作るときはexportっての必要なんですね。
やってなかったので調べてみます。


167:デフォルトの名無しさん
08/02/02 23:59:26
定時実行をスクリプト内でなんとかしたかったら
どんなのが楽ですか?

168:デフォルトの名無しさん
08/02/03 00:04:24
>>159
うそーん。session管理くらい標準ライブラリで用意してほしいなあ。

>>160
>そういう用途ならRubyが向いてるよ
そういう用途ってどんな用途?PythonはCGIには向いてないってこと?

>>161
>その程度で躓くようなヤツはRubyを使った方がいいよ。
>絶対。断じて。
なんで逆切れしてんの?
その程度で逆切れするようなヤツは引きこもってた方がいいよ。
絶対。断じて。


169:デフォルトの名無しさん
08/02/03 00:04:55
>167
「なんとか」をもーすこし具体的に頼む

170:デフォルトの名無しさん
08/02/03 00:05:53
かんとか

171:デフォルトの名無しさん
08/02/03 00:13:39
>>168
>その程度で逆切れするようなヤツは引きこもってた方がいいよ。
だからこのスレに引きこもってるんだろw
ヒッキー相手にマジレスカコワルイ

172:デフォルトの名無しさん
08/02/03 00:15:12
おまら両方うるさいから、rubyスレでやれよ。
phpの件で荒れてるから、少しぐらい騒いでも大丈夫やろ。

173:デフォルトの名無しさん
08/02/03 00:41:48
>>167
定時実行って時刻指定?インターバル指定?

import time, threading

def proc():
  while True:
    time.sleep(1)
    print 'aiueo'

threading.Thread(target=proc).start()


174:デフォルトの名無しさん
08/02/03 00:50:52
>173

わかってると思うけど、
それだとprint文の実行時間により結果が不定になるので、
time.sleepの直前で次にwakeup timeを計算したほうがよい気がする。


175:デフォルトの名無しさん
08/02/03 09:21:25
定時実行ってふつうは外部でcronを使うよね

176:デフォルトの名無しさん
08/02/03 10:18:26
Timerとか使えばよくね?

177:デフォルトの名無しさん
08/02/03 11:00:51
ctypesでCで作成した関数に構造体を渡す方法なんですが

struct user {
int id;
char name[20];
double average;
};
__declspec(dllexport) void __stdcall print_user(struct user u)
{
printf("id:%d\n", u.id);
printf("name:%s\n", u.name);
printf("average:%f\n", u.average);
}

print_userに構造体を渡すときにpython側で

from ctypes import *
lib = windll.LoadLibrary("test.dll")
class User(Structure):
_fields_ = [("no",c_int), ("name",c_char_p), ("average",c_double)]
u1 = User(10, "abcde", 83.5)
lib.print_user(u1)

とやると
ValueError: Procedure probably called with not enough arguments (16 bytes missing)
というエラーが出ます。
何が原因なのでしょうorz

178:デフォルトの名無しさん
08/02/03 11:21:54
Cのuser構造体が計4+20+4=28バイトとかなのに
Pythonのu1は4+4+4=12バイト
なので16バイト足りないって怒られるということじゃない?
("name", c_char_p * 20) とかしたらどうだろう

179:デフォルトの名無しさん
08/02/03 11:24:00
ああ間違えた。c_char * 20 かな

180:デフォルトの名無しさん
08/02/03 13:45:18
>>168
161が本当にキレてるかどうかはわからないけど(俺は君の勘違いだと思う)、
逆ギレという言葉を選ぶということは、君は自分がキレてる自覚あるわけだよね。
要するに、君みたいにいきなりキレちゃう痛い人には、それなりに刺激のあるレスが返ってくるってことだよ。
あきらめな。

181:デフォルトの名無しさん
08/02/03 13:55:16
煽るなw
半年ROMってろで済むだろw

182:デフォルトの名無しさん
08/02/03 14:33:40
>>178
なるほど!ありがとう

183:デフォルトの名無しさん
08/02/03 15:23:28
そういうとこが面倒なのでpyrexでラッパーを作ってしまう俺

184:148
08/02/03 17:42:02
申し訳ございません
ぐぐってもみつかりません
教えていただけませんでしょうか
(´Д`;)、 コノトオリデス
   ノノZ乙

185:デフォルトの名無しさん
08/02/03 17:44:12
ま、そんな時もあるさ
明日は違うさ

186:デフォルトの名無しさん
08/02/03 20:36:00
pdb.doc pdb.py bdb.py あたりを読んでみれば?

187:デフォルトの名無しさん
08/02/04 04:14:52
>>180
161本人乙
おまえの必死さは伝わった

188:デフォルトの名無しさん
08/02/04 08:51:32
必死な人ほど必死の一語で切り抜けようとするらしいよ。

189:デフォルトの名無しさん
08/02/04 09:36:37
オレ161だけど180とは別人だ。
オレとオマエの二人しかいない寂しい頭のキミに、
何を言っても無駄だろうけどね。

190:デフォルトの名無しさん
08/02/04 18:39:02
つーかいつまでも反応する奴みんなうぜぇ

191:デフォルトの名無しさん
08/02/05 00:09:15
>>161=180=188=189
1人4役乙
ひとりで4人分演じられる頭があれば、そりゃあ寂しくないだろうよ

192:デフォルトの名無しさん
08/02/05 00:19:38
>>191

自分で証明してどうする(www
>オレとオマエの二人しかいない寂しい頭のキミに



193:デフォルトの名無しさん
08/02/05 05:54:06
ここまで全部俺の自演

194:デフォルトの名無しさん
08/02/05 06:03:05
>>192
その反応が君一人で頑張ってたことの証明になってるよ。

195:デフォルトの名無しさん
08/02/05 09:39:32
>>194

>要するに、君みたいにいきなりキレちゃう痛い人には、それなりに刺激のあるレスが返ってくるってことだよ。

>オレとオマエの二人しかいない寂しい頭のキミに、
>何を言っても無駄だろうけどね。


196:デフォルトの名無しさん
08/02/05 10:12:19
自分の脳内でしか意味を為さない引用は勘弁。
こじつけ設定くらい考えてから切り返してね。

197:デフォルトの名無しさん
08/02/05 10:27:53
調子に乗って python でゲーム作ったけど、内容が肥大化するにつれ
実行速度がかなり厳しくなってきた俺が来ましたよ

参考までに
超基本的な事でRGBデータをどう持つのが一番早いか計測した結果。
早い順に
--------------
RGB = (R, G, B)
--------------
RGB = [R, G, B]
--------------
RGB = RGB_CLASS()
R, G, B = RGB.R, RGB.G, RGB.B
--------------
RGB = {"R":R, "G":G, "B":B}
R, G, B = RGB["R"], RGB["G"], RGB["B"]

クラスと辞書はどっちが早かったか覚えてないけど、ほとんど同じだった気がする

198:デフォルトの名無しさん
08/02/05 10:30:15
>>197
つpsyco

199:デフォルトの名無しさん
08/02/05 10:30:36
RGB = R << 16 | G << 8 | B
R, G, B = (RGB>>16)&255, (RGB>>8)&255, RGB&255
てのも考えたけど、各要素を取り出すのに必要な式なり関数なりを Python
で書いた時のコストを考えると、結局 RGB を独立して保持した方が早いという結論に。



200:デフォルトの名無しさん
08/02/05 10:51:09
ゲームといえば
URLリンク(wiki.python.org)
BF2/Civ4プレイヤーがうらやましい・・・

201:デフォルトの名無しさん
08/02/05 11:43:04
長い複数行にわたる文字列を定義したいと思って
str = """ hoge ""
見たくやりましたが
\v \bが含んでいると正しく出力されなくなります.

手作業で\\をつけてもいいですが,何かいい方法がありませんか?

202:デフォルトの名無しさん
08/02/05 11:51:02
「正しく」ってのはどういう状態を考えてるの?

203:デフォルトの名無しさん
08/02/05 11:55:20
>>201 raw文字列
>>> str=r"""hoge\nhoge"""
>>> print str
hoge\nhoge

204:デフォルトの名無しさん
08/02/05 12:04:49
UnicodeのRaw文字列はどう書くんだったかといつも迷う。
urなのかruなのか。
良い覚え方はないものだろうか。。。

205:デフォルトの名無しさん
08/02/05 19:24:39
unicode(r"hoge")

206:デフォルトの名無しさん
08/02/05 20:55:55
Unicode文字列に対してlenを呼んだときに返す値は何?

207:デフォルトの名無しさん
08/02/05 20:58:59
ユアストリングって覚えるといいよってGuidoかFredが言ってた


ごめん嘘いま俺が考えた

208:デフォルトの名無しさん
08/02/05 21:05:10
>>206
>>> len(u'日本語')
3
>>> len('日本語')
9

209:206
08/02/05 21:52:59
IPythonだけ変な値を返していました。
IPython以外で確認したら普通に文字数を返していました。

210:デフォルトの名無しさん
08/02/06 03:21:07
unicodeのraw文字列はロシアじゃない。とか。

211:デフォルトの名無しさん
08/02/06 11:06:21
いろいろとアイデアをありがとう。覚えられそうな気がしてきた。

212:デフォルトの名無しさん
08/02/06 14:24:36
>>> "bar" in "foobarbaz"
True

"foobarbaz".find("bar") != -1 とかやってた俺涙目

213:デフォルトの名無しさん
08/02/06 14:34:08
uro覚え

214:デフォルトの名無しさん
08/02/06 14:40:53
うru覚えは違うってことか

215:デフォルトの名無しさん
08/02/06 15:45:31
>>214
誰が上手いこと言えと
(ちょっと感動した)

216:デフォルトの名無しさん
08/02/06 16:06:08
>>214
urう覚えは違うの間違いだろ?

217:デフォルトの名無しさん
08/02/06 18:01:03
うりゃー
URyaaaa


218:デフォルトの名無しさん
08/02/06 18:05:17

hoge = [(1, 2), (3, 4), (5, 6), (7, 8)]

fuga = [(1, 3, 5, 7), (2, 4, 6, 8)]
に変換するにはどのような方法がスマートでしょうか?

hoge = [[1, 2], [3, 4], [5, 6], [7, 8]]
のときはやりかたは変わりますか?


219:デフォルトの名無しさん
08/02/06 18:34:51
fuga = zip(*hoge)

220:デフォルトの名無しさん
08/02/06 18:56:14
>219
それ、FAQの殿堂に入れようぜ!

221:デフォルトの名無しさん
08/02/06 19:01:44
>>219
できました
ありがとうございました

222:デフォルトの名無しさん
08/02/06 20:21:02
zip()ってあんまり使わないよね
Python Challenge以外で使った記憶がない

223:デフォルトの名無しさん
08/02/06 21:59:22
a[len(a)] = xがダメなのに、a[len(a):] = xだとおkなのは、
そういうもんだと納得しなきゃいけないんでしょかね。

あと、a[len(a):] = [x] と a[len(a):] = x の書き間違いで、
いつかミスる悪寒を覚えた。

224:デフォルトの名無しさん
08/02/06 22:29:04
チュートリアル
スライス演算には便利な不変式があります: s[:i] + s[i:] は s に等しくなります。
>>> word[:2] + word[2:]
’HelpA’
>>> word[:3] + word[3:]
’HelpA’
スライス表記に行儀の悪いインデクス指定をしても、値はたしなみよく処理されます: インデクスが大き
すぎる場合は文字列のサイズと置き換えられます。スライスの下境界 (文字列の左端) よりも小さいインデ
クス値を上境界 (文字列の右端) に指定すると、空文字列が返されます。
>>> word[1:100]
’elpA’
>>> word[10:]
’’
>>> word[2:1]
’’


225:デフォルトの名無しさん
08/02/06 23:15:28
>>223
インタプリタで実行してみたら
当たり前だが前者がIndexError,
後者がTypeErrorになってしまうのだが
何がどうOKなんだ

226:デフォルトの名無しさん
08/02/06 23:29:08
おれはいま恐ろしく頭の悪い奴を見た。
それは233だ。

227:デフォルトの名無しさん
08/02/06 23:32:44
233に期待せざるえない

228:223
08/02/06 23:34:26
このスレッドには馬鹿しかいないことが判明したようだ

229:デフォルトの名無しさん
08/02/06 23:35:20
>>223

やりたいのはa.append(x)じゃないのか?
或いはa.extend(x)を期待してる?

230:デフォルトの名無しさん
08/02/07 01:06:04
>>225
x がリストなら TypeError にならない

実際上は、229の言うように、append extend を使えば、
紛らわしい問題は起こらない。

231:デフォルトの名無しさん
08/02/07 01:11:04
233はPythonにエスパー能力を求めているの?

232:デフォルトの名無しさん
08/02/07 01:13:14
232

次どうぞ。

233:デフォルトの名無しさん
08/02/07 01:53:42
233getttttt

234:デフォルトの名無しさん
08/02/07 02:14:49
エスパー認定されました。おめでとう233。

235:デフォルトの名無しさん
08/02/07 02:44:08
お前には失望した

236:デフォルトの名無しさん
08/02/07 03:04:44
a = 1
b = 9
print a + b

237:デフォルトの名無しさん
08/02/07 06:34:25
PythonなんかよりRubyつかうほうがいいと思うよ
>>223

238:デフォルトの名無しさん
08/02/07 10:14:55
>253
寂しい奴め。
世界の果てでのたれ死ねこの低賃金ITドカタ。

239:デフォルトの名無しさん
08/02/07 10:28:44
このスレはいつから未来人が跳梁跋扈するスレになったんだ?


240:デフォルトの名無しさん
08/02/07 11:22:47
特定のビューアーで番号ずれてるだけじゃね?

241:デフォルトの名無しさん
08/02/07 15:50:40
再読込み汁

242:デフォルトの名無しさん
08/02/07 16:13:51
>>240
そんなのあるの?

243:デフォルトの名無しさん
08/02/07 16:27:25
twitterのapiを利用したサービスを作りたいんだ
サクラの鯖で運営したいんだけど
python以外にどんな知識が必要なの?
jsとかhtmlとか、もしかしてlinuxの知識もいるの?


244:デフォルトの名無しさん
08/02/07 16:29:27
「あぼーん」が発生しても運が悪いと検出できない時があるからな。

245:デフォルトの名無しさん
08/02/07 17:32:07
>>243
どれもこれも浅くて良いから一通り知っておく必要がある

どこから手をつけたらいいのかわからないんだったら
urllibでAPIを呼び出して結果をElementTreeで解析とかからやってみては
このあたりはHTTPとXMLの知識がすこし必要

そこから先はCGI作成設置とかだからスレ違い

246:243
08/02/07 17:51:25
>>245
ありがとう
むっさがんばる
”このサイトについて”のありがとう欄に”>>245”って入れるよ。絶対。

247:デフォルトの名無しさん
08/02/07 18:24:16
跳梁跋扈って、何て読むの?

248:デフォルトの名無しさん
08/02/07 19:01:27
>>247
このスレのどこに悪人が?


249:デフォルトの名無しさん
08/02/07 19:11:02
>>247
いまの若いもんはおんぶに抱っこも知らんのか

250:デフォルトの名無しさん
08/02/07 20:29:35
>>242
昔ゾヌ使ってた頃ズレた事があったな。
設定で回避したりバージョンで違うのかも知れんけど
ビューア次第で番号がズレることはある。

251:デフォルトの名無しさん
08/02/07 21:10:41
>>252
一部レスが強制削除受けてるみたいだ

252:デフォルトの名無しさん
08/02/07 21:34:58
ネタにしてもつまらん

253:デフォルトの名無しさん
08/02/07 22:55:00
239はヤンキーだろ。
夜露死苦哀羅舞勇。

254:デフォルトの名無しさん
08/02/07 23:47:52
記憶力が無い奴はextendだけ覚えりゃいい。
x.append(n)っぽいことをしたきゃ、x.extend([n])で済ま

255:デフォルトの名無しさん
08/02/08 02:30:14
無洗米に対してのような鬱屈を感じる

256:デフォルトの名無しさん
08/02/08 02:46:19
appendしか使ったことないや
extendは効率無視すりゃ+でいいしなぁ


257:デフォルトの名無しさん
08/02/08 03:49:21
extendならイテレータ受け取れるからたまに使う

258:デフォルトの名無しさん
08/02/08 07:54:39
>>255
日本語でOK。

259:デフォルトの名無しさん
08/02/08 12:37:42
>>212
すげー

これが欲しかったんだ。

re.searchとかfindとか、Noneを返すけどNoneかどうかを調べようがなくて困ってた。


260:デフォルトの名無しさん
08/02/08 13:00:32
>>259
value = None
print value is None

261:デフォルトの名無しさん
08/02/08 13:01:48
すいませんpython2.4をpythonwinでやっているのですが,
コンパイル済みの自作モジュールを再編集した際に,
一旦アプリを閉じないと再コンパイルしてくれません.

なにか良い方法ありませんでしょうか?

262:デフォルトの名無しさん
08/02/08 13:03:40
バカばっか。
Rubyでもやるか。

263:デフォルトの名無しさん
08/02/08 13:03:57
>>260
ああ、printしたらNoneって表示されるのにプログラムで「Noneですか?」を判定する方法が分からないって意味。
Noneとも'None'とも比較できなくて困る。


264:デフォルトの名無しさん
08/02/08 13:07:42
>>262
Rubyやるやつのほうがよっぽど馬鹿だろ。
Rubyを選択する最大の理由が日本語しかできないからだし。

まあ僕も日本語しか出来なくて英語の膨大な資料が読めなくて困ってるんだが。


265:デフォルトの名無しさん
08/02/08 13:56:03
日本語もろくにできないくせに、他人のことを見下すなよ身の程知らずが(www

266:デフォルトの名無しさん
08/02/08 13:58:22
>>261
URLリンク(docs.python.org)

267:259
08/02/08 14:01:31
やっと見つけた
None
この型には単一の値しかありません。この値を持つオブジェクトはただ一つしか存在しません。
このオブジェクトは組み込み名 None でアクセスされます。
このオブジェクトは、様々な状況で値が存在しないことをしめします。
例えば、明示的に値を返さない関数は None を返します。None の真値 (truth value) は 偽 (false) です。

あとコマンドラインでのif文の書き方も間違ってた。
ちゃんとタブ入れないとだめなんだな。
んでコマンドラインで試して見た
そしたらちゃんと比較できてた。

>>> if None == None:
...     print "eq"
... else:
...     print "else"
...
eq
>>>

つまり、Noneを含む可能性のあるオブジェクトはこれでおkか。
if オブジェクト:
    データ処理
else:
    Noneが返された場合


268:デフォルトの名無しさん
08/02/08 14:02:08
>>261
インタラクティブモードでのことなら
>>> import foo
>>> reload(foo)

269:デフォルトの名無しさん
08/02/08 14:05:29
>>267
None との比較は >>260 が書いてあるように value is None でやるのが基本
if value: だと [], {}, "", 0 等も偽になるので

270:デフォルトの名無しさん
08/02/08 14:07:52
>>265
偉ければ、能力がありさえすれば他人を足蹴にしていいと思ってる馬鹿。










頭がいいと思い込んでる害虫は即刻殺すべき。


271:デフォルトの名無しさん
08/02/08 14:11:45
259の頭が悪すぎる件について


272:デフォルトの名無しさん
08/02/08 14:13:47
トヨタがさ、システムエンジニアが2万人欲しいんだって。
1万人でやってるけど足りないってさ。
それで、福岡は筑豊地区に会社作って集めるらしいんだけど、
福岡東芝に勤めてる俺の先輩は、「先輩よりテストの点がいいやつは処刑だ」って、集団リンチしまくりですよ。

そんな人間がのさばってる町にシステムエンジニアを1万人も集めるってのは、
エンジニアを炭鉱の鉱山に埋め殺すのと同じ行為だって分かってるのかと。

まあ、トヨタは、エコな企業だから、古きよき江戸時代のカラクリを復活させて省エネを図ってるって言ってるけど、
当初のトヨタの計画では燃料電池を内蔵したロボットを使ってエコを実現するって言ってたもんな。
会社のトップが馬鹿だからどうしようもない。


273:デフォルトの名無しさん
08/02/08 14:14:00
>>270
偉ければ、能力がありさえすれば他人を足蹴にしていいと思ってる低脳。

274:デフォルトの名無しさん
08/02/08 14:18:38
>>273
偉ければというのは除外

能力がありさえすれば、他人を殺さなければならないと思ってる天災ですが何か。

馬鹿がのさばるわが宮若市は・・・
宮若とかいう名前をつけるのがわが町のトップ。
それも、全町民から公募してこれが最高の命名であったという事実。
驚け。


275:デフォルトの名無しさん
08/02/08 14:20:18
>>274

日本語でおk.

276:デフォルトの名無しさん
08/02/08 14:23:43
田舎のキチガイは始末が悪いという好例。

277:デフォルトの名無しさん
08/02/08 14:37:30
>274
よくわからんが274は応募してるのか?してないのか?

278:デフォルトの名無しさん
08/02/08 14:48:41
>>277
もちろん中田市に一票。


279:デフォルトの名無しさん
08/02/08 15:18:10
完成
URLリンク(scripts.web.fc2.com)


280:デフォルトの名無しさん
08/02/08 15:27:48
for〜else:って便利なんだけど長くなればなるだけインデントが深くなるのが欠点。
ループ中のbreakを外で拾ってくれるのがあれば2重ループをすんなり抜けれるのにって思う。
オブジェクトが単数~複数で返されちゃうからif〜elseの代わりに使えるfor〜elseがあるんだろうな。
・・・
いやいやbreakしない限りelseは実行されちゃうから・・・
めりっとあんのかと。


281:デフォルトの名無しさん
08/02/08 16:35:21
>>258
ナンセンスと文法破綻の区別がついていない例

282:デフォルトの名無しさん
08/02/08 16:53:46
あれがまともな日本語に見えるわけね。
まぁ英語圏ほどじゃないけど、日本語だって色んな国籍の人が書くから、こういう人もいるか。

283:デフォルトの名無しさん
08/02/08 16:56:52
おまいら仲良くしろよ

284:デフォルトの名無しさん
08/02/08 17:19:45
>>282
日本語しかしゃべれないチョーセン人の存在を忘れるな。
まあ忘れてもいいけど殺されるぞ。

elseで分岐できるからフラグセットして逆転させることも出来るけど
制御構造にフラグを使うのは間違いの元だからやっぱりfor〜elseで書くべきなんじゃないかと思うけど
実際Pythonで書いてる人はどーやってんのか。
逆転させるくらいならbreak時のフラグでそのままbreakするべきだろうな。

こういう書き方するとelseが文法違反だし。
スレリンク(tech板:97番)
for i in range(10):
 if data[i]==3:
  break
pass
else:


285:デフォルトの名無しさん
08/02/08 17:33:08
>>284
> 日本語しかしゃべれないチョーセン人の存在を忘れるな。
色んな国籍が揃えば日本語に不自由な奴が居るのも当然≠日本国籍を持ってない人は日本語が不自由

286:デフォルトの名無しさん
08/02/08 17:52:57
>>285
日本語しかしゃべれないチョーセン人≠「甲子園」としかしゃべれない障害者
日本語しかしゃべれないチョーセン人≒漢字に弱みはあっても日常的に問題ない、ゆとりレベルで言えば日本語に堪能と言える。
日本語しかしゃべれないチョーセン人←対照的→日本国籍を持ってない人は日本語が不自由

ここまで解説してもまだ分からない?

ちなみに>>284を投稿する直前に、踏み切りで待ってる人がナイフで殺されて血まみれなのが中継されてた。
僕も同じ状況で襲われたけど、逃げ場がないんだよね。
耳が割れそうなほどうるさくて、人の接近にも気が付かないし。


287:デフォルトの名無しさん
08/02/08 17:55:31
pythonで
a = [[1,2],[3,4],[5,6]]
を定義して
b = [2,4,6]
を取り出したいのですが,
b = a[:][1]
とすると
b = [3,4]
となってしまいます.
どのようにすればよろしいでしょうか?

288:デフォルトの名無しさん
08/02/08 17:58:40
b = [x[1] for x in a]

289:デフォルトの名無しさん
08/02/08 18:04:47
> b = a[:][1]
これがピュアすぎる…

290:デフォルトの名無しさん
08/02/08 18:08:54
zip(*a)[1]

291:デフォルトの名無しさん
08/02/08 18:09:41
ありがとうございました.
目からうろこです.


292:デフォルトの名無しさん
08/02/08 18:59:52
[y for x, y in a]
ていうのもある

293:デフォルトの名無しさん
08/02/08 19:05:52
>280
二重ループの部分を関数内関数にする

def main():
    def foo():
        for i in xrange(10):
            for j in xrange(10):
                if i == j == 5:
                    print "found"
                    return
        print "not found"
    foo()

main()

294:デフォルトの名無しさん
08/02/08 19:08:57
for i in xrange(10):
    for j in xrange(10):
        if i == j == 5:
            break
    else:
        continue
    break

print i, j


295:デフォルトの名無しさん
08/02/08 19:23:55
>>> import operator
>>> map(operator.itemgetter(1), [[1,2],[3,4],[5,6]])
[2, 4, 6]

296:デフォルトの名無しさん
08/02/08 20:06:28
主部省略だけで文が読めなくなる低能はどこですか

297:デフォルトの名無しさん
08/02/08 20:32:25
2.6〜2.9って生まれることも許されないのが確定っスか?

298:デフォルトの名無しさん
08/02/08 21:02:37
>>286
> ここまで解説してもまだ分からない?
うん、まったくわからない。説明してくれる?
とりあえず、こちらが実際に「ちっとも忘れていない」ことを「忘れるな」と言われても、
ああ、どっかで誤読してるんだなこの人、としか思わないわけで。

299:デフォルトの名無しさん
08/02/08 21:14:28
>>286
キチガイ、ゲラゲラゲラ(www


300:デフォルトの名無しさん
08/02/08 22:06:25
耳が悪いと頭も性格も悪くなるのか。
気を付けないと。

301:デフォルトの名無しさん
08/02/08 22:12:20
>297
2.6はリリースされることは決まっているが

302:デフォルトの名無しさん
08/02/08 22:13:34
>>297
2.7くらいまでは出るんじゃね?

303:デフォルトの名無しさん
08/02/08 23:26:25
>>297
2.6 といっしょに 3.0 が出て
2.7 といっしょに 3.1 が出て
2.8 といっしょに 3.2 が出て
2.9 といっしょに 3.3 が出て

くらいまでは 2.x 系列が使われ続けるだろうからむしろ 2.9 までで足りるのかを心配した方がいいよ

304:デフォルトの名無しさん
08/02/08 23:29:43
小数点以下が16進で
2.10
2.11
2.12
2.13
2.14
2.15

までいくだろ

305:デフォルトの名無しさん
08/02/08 23:39:12
2.9は出ない、に10000グーグル

306:297
08/02/08 23:40:16
なるほどFirefoxみたいな感じに並行メンテされるのね。
つか、2.9じゃ桁足りない説ワロタ。むしろ近いのはIPv4/6か。

307:272
08/02/09 04:09:57
そうか。
トヨタが筑豊に技術者を集めるのは、技術を奪い取って剥ぎ取って追い出すためか。
トヨタは泥棒が得意だからな。

それはそうと、松並議員が相撲部屋に説教たれてたのは何のギャグだろ。
あいつ痴漢した相手が逆らったからって殴り倒して地下鉄でひき殺させようとした殺人未遂犯のくせして。
写真うpしちゃうぞコラ。


308:デフォルトの名無しさん
08/02/09 08:34:40
>>293
見易さのためだけに関数化するのは馬鹿のすること。

スレリンク(tech板:549番)


309:デフォルトの名無しさん
08/02/09 08:38:40
>>308
へ?みやすくなるならいいじゃん。
ネストした関数の何が問題なのさ?

310:デフォルトの名無しさん
08/02/09 08:54:31
>>309
ループを基準に関数化とか・・・
gosubみたいな引数を伴わない関数でもあるんならいいけどね。

短くするための関数化なら、普通にエディタで折りたためば良いと思うよ。
それほど大規模なやつでなくてもいまどきのは折りたためるの結構あるし。


311:デフォルトの名無しさん
08/02/09 08:58:59
>>310
引数無しのネスト関数で何の問題があるの?
ループ内のまとまった処理を関数としてまとめることに
問題があるとは思えないんだけど。

なんかフラットな構造の関数に慣れてるだけじゃないの?

312:デフォルトの名無しさん
08/02/09 12:30:58
呼ぶ回数にもよるが、インライン展開とか無いなら、
関数呼び出しのコストが無駄になるかもね

313:デフォルトの名無しさん
08/02/09 12:32:45
関数の中身がよほどスカスカでないかぎり、
関数呼び出しがボトルネックになることは
まずないと思うがなあ。

314:デフォルトの名無しさん
08/02/09 13:06:47
>>308
関数化した方が処理が抽象化されて再利用性が高まる。
テストもしやすくなるしね。

パフォーマンスのことを気にするのは,その後でしょ。

315:デフォルトの名無しさん
08/02/09 13:29:31
>なんかフラットな構造の関数に慣れてるだけじゃないの?
Pythonによく似ていて関数内関数のない言語。それはRu(ry

316:デフォルトの名無しさん
08/02/09 14:41:35
えっ,Rubyって関数ローカルな関数作れないの?


317:デフォルトの名無しさん
08/02/09 14:59:12
関数内部に関数を定義することはできるが、関数外部に定義したのと同じ効果
しかないので無意味。

318:デフォルトの名無しさん
08/02/09 15:47:47
マジか?名前かぶったらどうなるんだ?


319:デフォルトの名無しさん
08/02/09 16:16:54
上書きされる(つД`)

def boo
  p "boo"
end

def foo
  def boo
    p "boo2"
  end
  boo
end

foo # boo2
boo # boo2

320:デフォルトの名無しさん
08/02/09 16:21:56
>>318
「あと」に実行されたメソッド定義で上書きされる
というか、def methodname という書式は所属するクラスにメソッドを定義する効果しかない
勝手に「関数内関数だぜー」とか勘違いして使っておいて文句ゆーな
いわゆる関数内スコープの関数が欲しければ「一連の手続き」をオブジェクトとして持ち歩けるProc使え

321:デフォルトの名無しさん
08/02/09 16:26:55
>勝手に「関数内関数だぜー」とか勘違いして使っておいて文句ゆーな
じゃ、なんで関数内に関数を書けるように変更されたんでつか?

322:デフォルトの名無しさん
08/02/09 16:28:21
>>320
それ、勘違いというより、コンパイラで弾くべきエラーなんじゃ…

323:デフォルトの名無しさん
08/02/09 16:28:46
設計ミスちゃうんかと

324:デフォルトの名無しさん
08/02/09 16:32:49
That's Matz quality!

325:デフォルトの名無しさん
08/02/09 16:36:18
>>321
それが「俺ってすごい感」

326:デフォルトの名無しさん
08/02/09 16:47:34
>>321-322
動的にメソッドを追加できるというメリット…まあ、注意深く使えばメリットになるものがなくもない
「Hoge#levelupを実行するとHogeクラスに10個くらいメソッドが追加される」とかそういうやつ
「メソッド定義(Rubyには関数はない)はどこにでも書ける」という単純な事象の単純な結果に過ぎない
だからProc使えよ

def foo
helloworld = Proc.new{ puts 'Hello, World!'}
helloworld.call
end

helloworld ←エラー
foo ← Hello, World!



327:デフォルトの名無しさん
08/02/09 16:50:33
説教泥棒という言葉を思い浮かべてしまった。

328:デフォルトの名無しさん
08/02/09 16:55:17
>>326
まとめると、まっつんの設計ミスということでOK?

329:デフォルトの名無しさん
08/02/09 16:57:21
Rubyって,よく考えずに追加した浅はかな仕様で自爆してること多くね?

330:デフォルトの名無しさん
08/02/09 16:59:28
まあそろそろRuby関連スレでやってくれ

331:デフォルトの名無しさん
08/02/09 17:02:16
>>328
> この定義のある場所にメソッドを定義します。
> すなわち、クラス/モジュール定義中ならばそのクラス/モジュールのメソッドを定義します。
> トップレベルならばどこからでも呼べるメソッドを定義します。

という def の説明があるんで、def の中に def を書いたらどうなるかは…
やっぱ、そのクラスにメソッドが定義される以上の動作はし得ないと思うぞ
メソッドにメソッドを定義することはできない

既存言語を経験した人が def をネストしてハマるのはまあ通過儀礼のような気もせんでもないが
それで Proc とかそのへんを使い始めてくれればそれで問題ないかと

332:デフォルトの名無しさん
08/02/09 17:04:06
まあ、いずれにしても使わないんですけどね、Rubyなんて。

333:デフォルトの名無しさん
08/02/09 17:07:35
まあPythonスレだしな

334:デフォルトの名無しさん
08/02/09 17:09:15
少なくとも言語設計としては大失点だな。

335:デフォルトの名無しさん
08/02/09 17:14:03
スレタイを読めない奴は黙れ

336:デフォルトの名無しさん
08/02/09 17:16:20
あれほど酷くは無い。なんつったっけ、P(ry

337:デフォルトの名無しさん
08/02/09 17:20:55
>>336
まあ目くそ鼻くそだけどな。
くそ同士だから、お互い気になって仕方がないんだろ。

338:デフォルトの名無しさん
08/02/09 17:23:38
なぜruby厨がそこら中のスレで鼻摘まみ者になっているか、よくわかった。

339:デフォルトの名無しさん
08/02/09 17:25:52
とりあえず、NGワード Proc を設定 www

340:デフォルトの名無しさん
08/02/09 17:27:51
Procってあれだろ、カッコなしでメソッド呼び出しできる仕様を追加してしまったがために、
呼び出し可能オブジェクトを代入できなくなって、苦し紛れに作った仕様なんだよな。

341:デフォルトの名無しさん
08/02/09 17:37:24
Procでreturnするとfooから抜けちゃって関数内関数として使えません(> <)

def foo
  boo = Proc.new do
    100.times do |i|
      100.times do |j|
        if i == 50 && j == 50
          return
        end
      end
    end
  end
  boo.call
  p "foo" # 実行されず
end

foo


342:デフォルトの名無しさん
08/02/09 17:47:37
だからRubyの話はRubyスレでやれヴォケ

343:デフォルトの名無しさん
08/02/09 17:50:25
Matzは多言語の悪口を言う前に
スタックの使い方について勉強した方がいいな(www

344:デフォルトの名無しさん
08/02/09 18:00:44
>>341
ものすごいfoolなfooですね。
Rubyってやっぱクソだ

>>340
Ruby作者の頭イカレすぎ

子供の作文に見せかけたなでしこで書かれた破壊プログラムにも全部消されたしクソ杉。


345:デフォルトの名無しさん
08/02/09 18:01:24
スレリンク(tech板:484番)
レスはこっちに書いたから

346:デフォルトの名無しさん
08/02/09 18:07:01
なんにしてもRubyみたいな糞言語は使わないんだけどね。

347:デフォルトの名無しさん
08/02/09 18:26:02
細かい言語仕様ひとつで糞言語って大げさ。

ってかアンチrubyスレいけ。いい加減しつこい。

348:デフォルトの名無しさん
08/02/09 18:40:26
細かい言語仕様て、決まってないと安心して使えないアル。では安心して
使える言語Pythonの話題をどうぞ.

349:デフォルトの名無しさん
08/02/09 18:45:07
>1.8.6では、Proc.new≠proc=lambda
>1.9では、Proc.new=proc≠lambda

なんか勝手に変えられることもあるらしい(wwww

なにこの糞言語(wwwwwww

350:デフォルトの名無しさん
08/02/09 18:51:12
報告はいいから
Ruby話の続きは>>345でまとめようぜ
興味あるPython使いは勝手に覗きに来る事だろうて

351:デフォルトの名無しさん
08/02/09 19:59:17
Rubyの作者がアレだからな

352:デフォルトの名無しさん
08/02/09 20:13:56
>>347
returnでどのコンテキストから脱出するかは、全然細かい話じゃないだろ。
言語仕様の根幹に関わる問題だぞw

353:デフォルトの名無しさん
08/02/09 20:27:27
>>> 352
いずれにしろスレ違い
アンチrubyの粘着キモ杉

354:デフォルトの名無しさん
08/02/09 20:47:23
Pythonスレならではのアンカーに感動

355:デフォルトの名無しさん
08/02/09 20:50:34
凄いな。
352 というリテラルに、2行のテキストがbindされていたなんて。

356:デフォルトの名無しさん
08/02/09 21:36:31
あっ
間違えちゃったよ

357:デフォルトの名無しさん
08/02/09 22:02:35
MLにも変なのが湧いてきたな。
setをもらってそれら全てにマッチする正規表現を生成って、
return '.*'
でいいじゃんw



358:デフォルトの名無しさん
08/02/09 22:07:25
PythonとRubyはPerlerを受け入れる宿命だからな・・・

359:デフォルトの名無しさん
08/02/09 22:11:04
MLに投稿してるのは、Python本の訳者だな。
何が言いたいのかよくわからんが
ああやっちゃうなら正規表現文字列をわざわざ生成しなくてもいいような気がするけどな
文字列の範囲も指定しなくちゃだろう。
こっからここまでは正規表現としてはパースしないでね、と

360:デフォルトの名無しさん
08/02/09 22:12:53
PerlのRegexp::Assembleを使えばよい
車輪の再開発がしたいならどうぞどうぞ

361:デフォルトの名無しさん
08/02/09 22:18:17
クラ鯖の業務アプリでPythonかTcl/Tkをクライアントで使おうかと
検討中なのです。そこで質問なのですが、そのようなことをしてる
人はいるのでしょうか。また帳票の出力はどうやってますか?

362:デフォルトの名無しさん
08/02/09 22:26:53
>>357
ククブクとチュトリアルの翻訳者にそんな失礼なことを言ってはいけません!

363:デフォルトの名無しさん
08/02/09 22:30:28
>>361
Python向きの仕事じゃないと思う
COBOLでも使えばいいんじゃない

364:デフォルトの名無しさん
08/02/09 22:32:29
>>363
COBOLでクライアントを書けというのか。無知を晒すのも大概にせいよ。


365:デフォルトの名無しさん
08/02/09 23:01:53
>>361
VBでも使っとけ。
決してIronPythonなど使うのではないぞ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5379日前に更新/205 KB
担当:undef