@ Introducing Python: Modern Computing in Simple Packages by Bill Lubanovic (No. 2550 / 12833)
Default argument values are calculated when the function is defined, not when it is run. A common error with new (and sometimes not-so-new) Python programmers is to use a mutable data type such as a list or dictionary as a default argument.
Als Beispiel http://ideone.com/66DaME
def buggy(arg, result=[]):
result.append(arg)
print(result)
buggy('a')
buggy('b')
Ergebnis
['a']
['a', 'b']
Es wird wie folgt sein.
http://ideone.com/9bsPfY
def nobuggy(arg, result=None):
if result is None:
result = []
result.append(arg)
print(result)
nobuggy('a')
nobuggy('b')
Ergebnis
['a']
['b']
Referenz ?: Interpretation von Argumenten und Konstruktion von Werten
Ich konnte es in der Standarddokumentation nicht als "Standardargument" finden.
Recommended Posts