So che gli argomenti predefiniti vengono creati al momento dell'inizializzazione della funzione e non ogni volta che viene chiamata la funzione. Vedi il seguente codice:
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)
Quello che non capisco è perché questo è stato implementato in questo modo. Quali vantaggi offre questo comportamento rispetto a un'inizializzazione ad ogni chiamata?