我有一个简单的代码:
def get():
return [lambda: i for i in [1, 2, 3]]
for f in get():
print(f())
Run Code Online (Sandbox Code Playgroud)
正如我的python知识预期的那样,输出为3 - 整个列表将包含最后一个值i.但这是如何在内部工作的?
AFAIK,python变量只是对象的引用,因此第一个闭包必须包含对象的第一个i引用 - 这个对象肯定是1,而不是3 O_O.如何发生python闭包包含变量本身而不是对象这个变量引用?它是否将变量名称保存为纯文本,某些"变量引用"还是什么?