我有以下简单的代码:
def get():
return [lambda: i for i in [1, 2, 3]]
for f in get():
print(f())
正如我对 python 知识所预期的那样,输出为 3 - 整个列表将包含i
. 但这在内部如何运作?
AFAIK,python变量只是对对象的引用,所以第一个闭包必须包含对象的第一个i
引用——这个对象肯定是1,而不是3 O_O。python 闭包如何包含变量本身而不是对象这个变量引用?它是否将变量名称保存为纯文本,一些“对变量的引用”或什么?