python可變類型做默認參數

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次但是這個默認列表的內存地址是不變的,
當可變類型作爲參數的默認值時你可以把它當做一個全局變量就可以了,人如果不對這個默認參數賦值他就一直指向這個全局變量

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章