Sto cercando di scrivere una funzione Python che alla prima chiamata, restituisce un 1. Nella seconda chiamata, restituisce un 2. Il terzo, un 3. EccFunzione semplice che restituisce un numero incrementato di 1 per ogni chiamata, senza globali?
Attualmente, ho raggiunto questo utilizzando un variabile globale:
index = 0
def foo():
global index
index += 1
return index
Quando si chiama la funzione tre volte:
print(foo())
print(foo())
print(foo())
Esso restituisce i valori attesi:
1
2
3
Ma, ho letto che è una cattiva pratica usare le variabili globali. Quindi, mi chiedevo se lo stesso risultato potesse essere raggiunto senza l'utilizzo di globals.
Qualche suggerimento?
Grazie per il vostro aiuto.
'nonlocal' è python3 solo IIRC.wrt/al trucco "attributo di funzione", non lo consiglio definitivamente, poiché è veramente fragile (aggiungi 'g = f; f = lambda: None' dopo la definizione di' f' e scoprirai perché). –