可能重复:
“Least Astonishment” in Python: The Mutable Default Argument
我正在尝试理解以下两种方法之间的区别:
def first_append(new_item, a_list=[]):
a_list.append(new_item)
return a_list
def second_append(new_item, a_list=None):
if a_list is None:
a_list = []
a_list.append(new_item)
return a_list
first_append
在多次调用时会不断添加a_list
,导致其增长。但是,second_append
始终返回长度为1的列表。这里有什么区别?
示例:
>>> first_append('one')
['one']
>>> first_append('two')
['one', 'two']
>>> second_append('one')
['one']
>>> second_append('two')
['two']
答案 0 :(得分:0)
函数second_append
每次调用时都会为您创建一个新的本地列表。