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

Rispondere a