def func(a,b=[]) 有什么陷阱?
def func(a,b=[]):
b.append(a)
return b
l1 = func(1)
l2 = func(2,[11,22])
l3 = func(3)
print(l1,l2,l3)
#執行結果: [1,3] [11,22,2] [1,3]
函數的第二個默認參數是一個list,當第一次執行的時候實例化了一個list,第三次執行還是用第一次執行的時候實例化的地址存儲,所以第一和第三次執行的結果就是相同的,想每次執行只輸出當前傳入參數 ,默認參數應該設置為None。
下面這種情況:
def func(a,b=[]):
b.append(a)
print(b)
func(1)
func(2,[11,22,33])
func(3)
#執行結果: [1] [11,22,33,2] [1,3] ###此時每個func函數是立即打印所以會出現不同結果