[Python] Questo, da Python, non me lo sarei mai aspettato
Marco Beri
marcoberi a gmail.com
Lun 12 Feb 2024 09:45:38 CET
Il giorno lun 12 feb 2024 alle ore 09:36 Daniele Zambelli <
daniele.zambelli a 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.
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20240212/38a69ff4/attachment-0001.html>
Maggiori informazioni sulla lista
Python