Python UnwundLocalerror

Python UnwundLocalerror

Python's UnwundLocalerror sembra molto confuso quando i nuovi arrivati ​​a Python lo sperimentano per la prima volta. Tuttavia, è abbastanza facile. Può verificarsi un INCLUSUNDLOCALALERROR a causa di due motivi in ​​Python, uno è quando si sta cercando di accedere al valore di una variabile prima che venga assegnata e il secondo è quando Python non riesce a distinguere tra variabili globali e locali.

Questo post fungerà da Guida per risolvere il non legale di Python con possibili soluzioni.

Motivo 1: accedere alla variabile locale prima di assegnare il valore

Normalmente, quando il programmatore non funziona all'interno di funzioni o variabili di portata locale, cercando di accedere a una variabile prima di inizializzarla con un valore restituisce il seguente errore:

Tuttavia, quando lo stesso errore viene eseguito con le variabili locali, dire all'interno di una funzione, il programma restituisce il non illuminatorror, il che significa che non è riuscito a trovare la variabile locale durante l'accesso ad esso. Per dimostrarlo, il seguente codice:

def func ():
Stampa (x)
X = 420
func ()

Eseguito produrrà il seguente risultato:

Soluzione: fissaggio dell'ordine di accesso della variabile locale

Per evitare di incontrare questo errore, assicurati semplicemente di inizializzare la variabile locale con un certo valore prima di provare ad accedervi. Il codice corretto per l'esempio sopra è il seguente:

def func ():
X = 420
Stampa (x)
func ()

La variabile "X"Viene assegnato un valore prima di accedere e ora quando questo programma viene eseguito produce il seguente risultato sul terminale:

L'output verifica che hai risolto correttamente il relativo immateriale causato dall'ordine sbagliato di accedere alla variabile locale.

Motivo 2: Python non può distinguere tra variabili locali e globali

Questo motivo è un po 'confuso per la maggior parte dei nuovi appassionati di Python e nulla è logicamente sbagliato nel programma. Per dimostrare questo errore in modo non confuso, prendiamo il seguente codice per accedere a una variabile globale all'interno di una funzione:

X = 420
def func ():
Stampa (x)
func ()

Questo codice produce l'output privo di errori che è il seguente:

Ma quando viene effettuato qualche incarico alla variabile globale all'interno della funzione, come ad esempio:

X = 420
def func ():
Stampa (x)
x = 33
func ()

Inizia a produrre il non illuminatorror come mostrato di seguito:

La ragione di ciò è che non appena viene apportata una modifica nella variabile globale, il programma pensa che l'utente desideri accedere e modificare una variabile locale, a causa della quale non riesce a trovare quella variabile locale e restituisce il non legata.

Soluzione: utilizzare la parola chiave globale per risolvere la confusione

Il modo migliore per risolvere questo problema è semplicemente utilizzare la parola chiave "globale" all'inizio della funzione per dire al programma che questa variabile locale è collegata alla variabile globale. Per dimostrare questa soluzione, prendi il seguente codice:

X = 420
def func ():
Global x
Stampa (x)
x = 30
func ()

Ciò produrrà il seguente output sul terminale quando eseguito:

Hai imparato con successo le ragioni per il non legale insieme alla sua soluzione.

Conclusione

L'ILLUSUNDLOCALERROR può essere causato dal tentativo di accedere a una variabile locale prima di assegnarla un certo valore, o in altro modo, può essere causato quando il programma non può differenziare se l'utente desidera accedere alla variabile locale o alla variabile globale. Entrambi questi motivi sono stati spiegati insieme alla loro dimostrazione e soluzione a fondo in questo post.