各位大大好
小弟超新手,看書自學遇到一個觀念的問題想請大家指點:
ex1:
>>>def buggy(arg,result=[]):
result.append(arg)
print(result)
>>>buggy('a')
["a"]
>>>buggy('b')
["a","b"]
ex1中,buggy()輸出的值會一直累加下去
ex2:
>>>def non(arg,result=None):
if result is None:
result =[]
result.append(arg)
print(result)
>>>non('a')
['a']
>>>non('b')
['b']
ex2中,non()輸出的值都只輸出該次的值,不會留下上一次輸入過的值
根據書中說明預設的引數值只在定義時被計算,想請問為什麼ex2裡
引述預設值改為None時,不會發生印出的內容包含前一次呼叫內容,
第一次輸出['a']後,result不是已經變成['a']了嗎,為什麼還會
重置成[]?
先感謝回復的大大