@ 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.
Par exemple http://ideone.com/66DaME
def buggy(arg, result=[]):
result.append(arg)
print(result)
buggy('a')
buggy('b')
résultat
['a']
['a', 'b']
Ce sera comme suit.
http://ideone.com/9bsPfY
def nobuggy(arg, result=None):
if result is None:
result = []
result.append(arg)
print(result)
nobuggy('a')
nobuggy('b')
résultat
['a']
['b']
Référence?: Interprétation des arguments et construction des valeurs
Je n'ai pas pu le trouver dans la documentation standard comme "argument par défaut".
Recommended Posts