Il giorno lun 12 feb 2024 alle ore 09:36 Daniele Zambelli < daniele.zambe...@gmail.com> ha scritto:
> Lo strano per me è che il valore di default dovrebbe essere una lista > vuota ogni volta che chiamo la funzione invece la seconda volta è una > lista con i valori che sono stati inseriti dalla funzione nella > chiamata precedente. > Cioè due chiamate identiche della funzione hanno effetti differenti. > Mi pare che non rispetti il principio di non side effect (se si dice così). > Daniele, il non side effect non si applica quando il valore di default di un parametro è un mutable (lista o set o dict). Pensa che a volte si usa questo per memoizzare brutalmente una funzione. Esempio: def quadrato(n, cache={}): try: return cache[n] except KeyError: pass print("calcolo") q = cache[n] = n*n return q >>> quadrato(10) calcolo 100 >>> quadrato(10) 100 Ciao. Marco.
_______________________________________________ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python