Variabile locale referenziata prima dell'assegnazione in Python

Muhammad Waiz Khan 4 dicembre 2021
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