0
如果我定義的默認列表參數,像這樣:爲什麼在Python默認值只計算一次
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