Il giorno lun 12 feb 2024 alle ore 09:36 Daniele Zambelli <
[email protected]> 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
[email protected]
https://lists.python.it/mailman/listinfo/python