このページは Python 2.3 くらいのときに書かれたものです。 内包表記とλ式 >>> fs = [ lambda: i for i in range(8) ] >>> fs[2]() 7 各 i ごとにクロージャが生成されるのではなく、ひとつのクロージャで i の値が書き換えられるため、このような結果になる。これは期待した動作ではないと思う。 同じ問題は for ループでも起こる。 >>> for i in range(8): ... fs.append( lambda: i ) ... >>> fs[2]() 7 これは、デフォルト引数をうまく使えば回避できる。 >>> fs = [ lambda i=i: i for i in range(8) ] >>> fs[2]() 2 デフォルト引数 これは Tutorial にも載っているけど。 >>> def f(xs = []):
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く