私は次の簡単なコードを持っています:
def get():
return [lambda: i for i in [1, 2, 3]]
for f in get():
print(f())
私のPythonの知識から予想されるように、出力は3-リスト全体に最後の値が含まれますi
。しかし、これは内部でどのように機能しますか?
AFAIK、Python変数は単にオブジェクトへの参照であるため、最初のクロージャーはオブジェクトの最初のi
参照を囲む必要があります-このオブジェクトは間違いなく1であり、3O_Oではありません。Pythonクロージャが、この変数参照のオブジェクトではなく、変数自体を囲むのはどうしてですか?変数名をプレーンテキスト、「変数への参照」などとして保存しますか?