Python中:def func(a,b=[]) 這種寫法有什么坑?


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函數是立即打印所以會出現不同結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM