【发布时间】:2012-06-19 21:37:07
【问题描述】:
我有以下简单代码:
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 闭包如何包含变量本身而不是对象这个变量引用?它将变量名称保存为纯文本、一些“对变量的引用”还是什么?
【问题讨论】: