python可變類型做默認參數
下面代碼的輸出結果是什麼
def extendlist(val, list=[]):
list.append(val)
return list
list1 = extendlist(10)
list2 = extendlist(123, ['a', 'b', 'c'])
list3 = extendlist('a')
print(list1)
print(list2)
print(list3)
結果
[10, 'a']
['a', 'b', 'c', 123]
[10, 'a']
解析
extendlist函數有兩個參數,一個val,一個list默認爲空列表
list1和list3沒有對第二個參數list賦值,所以都是用了默認的空列表,
雖然這個函數執行了3次但是這個默認列表的內存地址是不變的,
當可變類型作爲參數的默認值時你可以把它當做一個全局變量就可以了,人如果不對這個默認參數賦值他就一直指向這個全局變量