2016-07-11 10 views

Antwort

0

Die Antwort ist, dass der Wert für ein Funktionsargument nur einmal ausgewertet wird, wenn er definiert ist. Daher wird das Argument nur dann auf seinen Standardwert initialisiert, wenn foo() zum ersten Mal definiert wird. Dann ruft es foo() auf und es wird weiterhin dieselbe Liste verwenden, zu der der Balken ursprünglich initialisiert wurde.

hierfür Eine Abhilfe ist wie folgt:

>>> 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

Verwandte Themen