标签: python python-2.7
flist = [] for i in range(3): flist.append(lambda: i) for f in flist: print f()
我不知道为什么它返回2,2,2
答案 0 :(得分:2)
在第一次循环的最后一次迭代中,您的i值为2,因此列表中每个元素中的所有i值现在都是2.这是因为您创建了一个实时引用到i变量。
i
这是一个简化的演示:
a = 5 c = lambda: a a += 5 >>> c() 10