今日、私は Pythonの奇妙な動作について調べました。例:
closures = []
for x in [1, 2, 3]:
# store `x' in a "new" local variable
var = x
# store a closure which returns the value of `var'
closures.append(lambda: var)
for c in closures:
print(c())
上記のコードが出力されます
3
3
3
でも印刷したい
1
2
3
常に同じローカル変数であるこの動作を自分で説明しvar
ます (そして、python は他の言語のように新しい変数を作成しません)。各クロージャーが別の値を返すように、上記のコードを修正するにはどうすればよいですか?