在以下函數中,L存儲每次調用期間的值。跨越調用在Python中更新默認參數
例如,如果我撥打f(1)
,L現在是[1]
。當我再次調用它時,前面的L會添加新值。所以現在L是[1,1]
。
def f(a, L=[]):
L.append(a)
return L
但在這個功能:
i = 5
def f(arg=i):
print arg
i = 6
無論多少次,我調用這個函數,參數是仍然5
- 它不保持通話之間更新。
這是什麼原因沒有得到更新,但名單呢?
相關:[「Python中的最小驚訝」:可變的默認參數](http://stackoverflow.com/q/1132941/4279) – jfs 2013-05-09 01:29:23