如果函數的默認參數為列表:
def power(l = []):
l.append(end)
power() //輸出[end]
power() //輸出[end, end]
調用了兩次power(), 為什么第二次輸出[end, end]?
因為列表里存放的是指向變量的指針,調用函數結束后,指針并沒有釋放,所以列表中還存放著指向end的指針,再次調用power(), 列表中再次插入新指針,所以出現兩個end元素。
注意:函數的默認參數最好不要設定為列表、字典等可變類型,易引起上面錯誤。建議函數默認參數設定為數字、字符串、元組不可變類型。