制御構造ツール(4章)
次のコードを実行したとき、resultsの値はどれか。 funcs = [] for i in range(3): funcs.append(lambda: i) results = [f() for f in funcs]
- A[0, 1, 2]
- B[0, 0, 0]
- ✓[2, 2, 2]
- Dエラーが発生する
解説
lambdaは定義時に変数iの値をコピーするのではなく、変数iそのものを参照する。forループ終了時点でiは2であるため、すべてのlambdaが呼び出されるとiの最終値2を返す。
根拠Pythonチュートリアル4章 lambda式