【发布时间】:2015-03-25 00:58:32
【问题描述】:
我很难让 lambda 工作。这里的代码是示例,但它很好地说明了我的问题。
lambdas = list()
for i in range(5):
lambdas.append(lambda x:i*i*x)
print lambdas[0](1)
print lambdas[2](1)
这给了我 16,但我希望不同的 lambda 有不同的值。为什么会这样!
【问题讨论】:
-
“Python 中的作用域是词法的。闭包将永远记住变量的名称和作用域,而不是它指向的对象。” stackoverflow.com/questions/2295290/… 您的 lambda 捕获名称
i,而不是i引用的 对象值。
标签: python python-3.x