如果我像这样定义默认列表参数:
def foo(a, my_list=[]):
my_list.append(a)
return my_list
然后每次连续调用foo()而不传递默认参数都会将元素附加到这个“隐藏”列表中,该列表似乎在调用之间持续存在。
print(foo('a'))
print(foo('b'))
print(foo('c'))
打印:
['a']
['a', 'b']
['a', 'b', 'c']
为什么会这样?这看起来像一个反模式。为了避免这种情况,我必须添加以下技巧:
def foo(a, my_list=None):
if my_list is None:
my_list = []
my_list.append(a)
return my_list