C'est une erreur courante en Python de définir un objet mutable comme valeur par défaut d'un argument dans une fonction. Voici un exemple tiré de cet excellent article de David Goodger :
>>> def bad_append(new_item, a_list=[]):
a_list.append(new_item)
return a_list
>>> print bad_append('one')
['one']
>>> print bad_append('two')
['one', 'two']
L'explication de ce phénomène est la suivante ici .
J'en viens maintenant à ma question : Cette syntaxe peut-elle être utilisée à bon escient ?
Je veux dire que si tous ceux qui la rencontrent font la même erreur, la déboguent, comprennent le problème et, à partir de là, essaient de l'éviter, quelle est l'utilité d'une telle syntaxe ?