2
flist = []
for i in range(3):
flist.append(lambda: i)
for f in flist:
print f()
我不知道爲什麼它返回2,2,2這樣的返回結果,在這段代碼中做什麼是lambda函數?
flist = []
for i in range(3):
flist.append(lambda: i)
for f in flist:
print f()
我不知道爲什麼它返回2,2,2這樣的返回結果,在這段代碼中做什麼是lambda函數?
在最後一次迭代中通過第一循環,你的i
值爲2,因此所有在列表中的每個元素的i
值現在是2.這是因爲您已經創建了對i
變量的實時參考。
這裏是一個簡化的演示:
a = 5
c = lambda: a
a += 5
>>> c()
10
懶惰工作對直覺這種特殊情況下:) –