資格スワイプ
制御構造ツール(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式

← 前の問題次の問題 →
スワイプでまとめて流す