可能重複:
「Least Astonishment」 in Python: The Mutable Default Argument爲什麼這個局部變量可以保持它的價值在功能
我最近在Python中遇到了問題。 代碼:
def f(a, L=[]):
L.append(a)
return L
print f(1)
print f(2)
print f(3)
輸出將
[1]
[1, 2]
[1, 2, 3]
,但爲什麼在本地列表中的值:在函數F左保持不變? 因爲L是一個局部變量,我想輸出應該是:
[1]
[2]
[3]
我嘗試另一種方式來實現這個功能: 代碼:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
這一次,輸出爲:
[1]
[2]
[3]
我只是不明白爲什麼... 有沒有人有一些想法?非常感謝。
閱讀此http://effbot.org/zone/default-values.htm – spicavigo