我喜歡用參數列表定義一個函數列表,以便從有限數量的單極子和偶極子實際組成一個電位。函數列表的奇怪行爲
但是,由於某種原因,python列表中的函數並沒有像我期望的那樣運行。
以下示例:
def function(coefficients):
phi = []
i = 0
for y in coefficients:
f = lambda x: y*(x**i)
i += 1
phi.append(f)
print f(2)
return phi
> phi = function([1,2,3])
2
8
24
> k0 = phi[0]
> k1 = phi[1]
> k2 = phi[2]
> print k0(2), k1(2), k2(2)
24 24 24
始終在列表中的最後一個函數檢索獨立於功能從列表中挑選的。
任何想法?
在此先感謝。
f將使用y的最後已知值,而不是創建lambda時y的值。另請參見[Python嵌套函數中的局部變量](http://stackoverflow.com/questions/12423614/local-variables-in-python-nested-functions) – Kevin