我寫了這個簡單的代碼:與lambda函數Python中封閉的範圍變量
def makelist():
L = []
for i in range(5):
L.append(lambda x: i**x)
return L
OK,現在我打電話
mylist = makelist()
,因爲封閉的範圍變量擡起頭來時,嵌套函數是後來被稱爲,它們都有效記得相同的值: 正因爲如此,我希望能夠找到循環變量對最後的循環迭代的價值,但是當我檢查我的列表我看到:
>>> mylist[0](0)
1
>>> mylist[0](1)
4
>>> mylist[0](2)
16
>>>
我很困惑,爲什麼我的代碼不保留最後的for循環值?爲什麼我沒有明確地保留封閉的範圍值與默認參數是這樣的:提前