Ciao,
quando crei una funzione con parametri di default in python, funziona un
po' come se l'avessi in realtà dichiarata così (*)
var_0001 = []
def prova(cambia, par):
if par is None:
par = var_0001
if cambia:
par.append('pippo')
print("cambiata")
print(par)
e l'interprete avesse trasformato le chiamate in
prova(False, None) # []
prova(True, None) # cambiata \n ['pippo']
prova(False, None) # ['pippo']
In altre parole, ogni volta che entri nella funzione il parametro /par
/viene agganciato alla variabile /var_0001 /e quindi ogni modifica al
contenuto di /par /tocca la variabile.
se invece di append metti
par = ['pippo']
invece non modifichi /var_0001/, ma stai semplicemente agganciando par
a/['pippo']/
La prossima volta par sarà riagganciato alla variabile originaria e
quindi avrai sempre
prova(False, None) # []
prova(True, None) # cambiata \n ['pippo']
prova(False, None) # []
Ciao,
Riccardo
------------------------------------------------------------------------
(*) ovviamente l'interprete non lavora proprio così
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python