Variabile locale referenziata prima dell'assegnazione in Python
Questo tutorial spiegherà perché si verifica l’errore local variable referenced before assignment
e come può essere risolto.
La variabile locale referenziata prima dell'assegnazione
si verifica quando si fa riferimento a una variabile prima dell’assegnazione all’interno del corpo di una funzione. L’errore si verifica in genere quando il codice tenta di accedere alla variabile globale. Poiché le variabili globali hanno un ambito globale ed è possibile accedervi da qualsiasi punto all’interno del programma, l’utente solitamente cerca di utilizzare la variabile globale all’interno di una funzione.
In Python, non dobbiamo dichiarare o inizializzare la variabile prima di usarla; una variabile è sempre considerata locale per impostazione predefinita. Pertanto, quando il programma tenta di accedere alla variabile globale all’interno di una funzione senza specificarla come globale, il codice restituirà l’errore variabile locale referenziata prima dell'assegnazione
, poiché la variabile a cui si fa riferimento è considerata una variabile locale.
La soluzione dell’errore local variable referenced before assignment
in Python
Possiamo dichiarare la variabile come globale usando la parola chiave global
in Python. Una volta che la variabile è stata dichiarata globale, il programma può accedere alla variabile all’interno di una funzione e non si verificherà alcun errore.
Il codice di esempio riportato di seguito mostra lo scenario di codice in cui il programma finirà con l’errore “variabile locale a cui si fa riferimento prima dell’assegnazione”.
count = 10
def myfunc():
count = count + 1
print(count)
myfunc()
Produzione:
UnboundLocalError: local variable 'count' referenced before assignment
Dobbiamo dichiarare la variabile count
come globale usando la parola chiave global
per risolvere questo errore. Il codice di esempio riportato di seguito dimostra come l’errore può essere risolto utilizzando la parola chiave global
nello scenario di codice precedente.
count = 10
def myfunc():
global count
count = count + 1
print(count)
myfunc()
Produzione:
11