2017-05-09 53 views
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 

回答

相關問題