2017-05-09 4 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 

答えて

関連する問題