【发布时间】:2009-12-17 20:02:49
【问题描述】:
鉴于这段代码:
funcs = []
for x in range(3):
funcs.append(lambda: x)
print [f() for f in funcs]
我希望它打印[0, 1, 2],但它却打印[2, 2, 2]。关于 lambdas 如何与范围一起工作,我是否缺少一些基本的东西?
【问题讨论】:
-
常见问题,之前至少问过(并回答过)一次:stackoverflow.com/questions/233673/lexical-closures-in-python
-
@Vladimir:是的,但两者的标题完全不同,我永远猜不到它们是同一回事。