这样的返回结果如何,lambda函数在这段代码中做了什么?

时间:2014-06-27 07:42:06

标签: python python-2.7

flist = []

for i in range(3):

    flist.append(lambda: i)

for f in flist:
    print f()

我不知道为什么它返回2,2,2

1 个答案:

答案 0 :(得分:2)

在第一次循环的最后一次迭代中,您的i值为2,因此列表中每个元素中的所有i值现在都是2.这是因为您创建了一个实时引用到i变量。

这是一个简化的演示:

a = 5
c = lambda: a
a += 5
>>> c()
10