我很好的理解函數式編程。我想創建一個函數列表,每個函數都選擇一個不同的列表元素。我已經將我的問題簡化爲一個簡單的例子。肯定這是一個Python bug:在python中創建函數列表(python函數關閉bug?)
fun_list = []
for i in range(5):
def fun(e):
return e[i]
fun_list.append(fun)
mylist = range(10)
print([f(mylist) for f in fun_list])
「很明顯」它應該返回[0,1,2,3,4]。 然而,它返回[4,4,4,4,4]。我如何強迫Python做正確的事情? (難道這被發現?還是我只是被厚厚的?)
這是Python的3.4.0(默認情況下,2014年3月25日,11時07分05秒)
謝謝, 大衛
當內部功能'fun'運行i的值是4。線'返回E [I]'運行時調用該函數,而不是當你定義該函數。 – Alex