2016-07-11 14 views

答えて

0

答えは、関数の引数の値が定義されている場合にのみ評価されるということです。したがって、引数はfoo()が最初に定義されたときにのみデフォルトに初期化されます。次に、foo()を呼び出し、バーが元々初期化されていた同じリストを引き続き使用します。

次のようにこれを回避するには、次のとおりです

>>> def foo(bar=None): 
... if bar is None:  # or if not bar: 
...  bar = [] 
... bar.append("baz") 
... return bar 
... 
>>> foo() 
["baz"] 
>>> foo() 
["baz"] 
>>> foo() 
["baz"] 

Credit goes to www.toptal.com

関連する問題