各位大大好
小弟超新手,看书自学遇到一个观念的问题想请大家指点:
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']了吗,为什么还会
重置成[]?
先感谢回复的大大