Je sais que les arguments par défaut sont créés au moment de l'initialisation de la fonction et non à chaque appel de la fonction. Voir le code suivant:
def ook (item, lst=[]):
lst.append(item)
print 'ook', lst
def eek (item, lst=None):
if lst is None: lst = []
lst.append(item)
print 'eek', lst
max = 3
for x in xrange(max):
ook(x)
for x in xrange(max):
eek(x)
Ce que je ne comprends pas, c'est pourquoi cela a été mis en œuvre de cette façon. Quels avantages ce comportement offre-t-il par rapport à une initialisation à chaque appel?