python variabile locale referenziata prima dell’assegnazione

| |

Quando inizi a introdurre funzioni nel codice, prima o poi incontrerai un UnboundLocalError. Questo errore viene generato quando si tenta di utilizzare una variabile prima che sia stata assegnata nel contesto locale.

In questa guida, parliamo di cosa significa questo errore e perché viene sollevato. Esaminiamo un esempio di questo errore in azione per aiutarti a capire come risolverlo.

Cos’è UnboundLocalError: variabile locale referenziata prima dell’assegnazione?

Il tentativo di assegnare un valore a una variabile che non ha un ambito locale può causare questo errore:

Python ha una semplice regola per determinare l’ambito di una variabile. Se viene assegnata una variabile in una funzione, quella variabile è locale. Questo perché si presume che quando si definisce una variabile all’interno di una funzione è necessario accedervi solo all’interno di tale funzione.

Ci sono due ambiti variabili in Python: locale e globale. Le variabili globali sono accessibili attraverso un intero programma; le variabili locali sono accessibili solo all’interno della funzione in cui sono state originariamente definite.

Diamo un’occhiata a come risolvere questo errore.

Uno scenario di esempio

Scriveremo un programma che calcoli il voto che uno studente ha ottenuto in classe.

Inizieremo dichiarando due variabili:

L’81% dei partecipanti ha dichiarato di sentirsi più sicuro delle proprie prospettive di lavoro nel settore tecnologico dopo aver frequentato un bootcamp. Fatti abbinare a un bootcamp oggi.

Il laureato medio del bootcamp ha trascorso meno di sei mesi nella transizione di carriera, dall’avvio di un bootcamp alla ricerca del primo lavoro.

Queste variabili memorizzano il numero e voti letterali che uno studente ha guadagnato, rispettivamente. Per impostazione predefinita, il valore di "lettera" è "F". Successivamente, scriviamo una funzione che calcola il voto in lettere di uno studente in base al voto numerico utilizzando un "if" istruzione:

Infine, chiamiamo la nostra funzione:

Questa riga di codice stampa il valore restituito dalla funzione calculate_grade() sulla console. Passiamo attraverso un parametro nella nostra funzione: numerico. Questo è il valore numerico del voto ottenuto da uno studente.

Eseguiamo il nostro codice e vediamo cosa succede:

è stato rilevato un errore.

La soluzione

Il nostro codice restituisce un errore perché facciamo riferimento a "lettera" prima di assegnarla.

Abbiamo impostato il valore di "numerico" su 42. La nostra istruzione if non lo fa imposta un valore per qualsiasi voto superiore a 50. Ciò significa che quando chiamiamo la nostra funzione calculate_grade(), la nostra istruzione return non conosce il valore a cui ci riferiamo.

Lo facciamo definire "lettera" all’inizio del nostro programma. Tuttavia, lo definiamo nel contesto globale. Python tratta la "lettera di ritorno" come il tentativo di restituire una variabile locale chiamata "lettera", non una variabile globale.

Risolviamo questo problema in due modi. Innanzitutto, possiamo aggiungere un’istruzione else al nostro codice. Ciò garantisce che dichiariamo "lettera" prima di provare a restituirlo:

Proviamo a eseguire nuovamente il nostro codice:

Il nostro codice stampa con successo il voto dello studente.

Se stai usando un "se" dove dichiari una variabile, dovresti assicurarti che ci sia un "else" dichiarazione in essere. Ciò assicurerà che anche se nessuna delle tue istruzioni if ‚Äã‚Äãrestituisce True, puoi comunque impostare un valore per la variabile con cui lavorerai.

In alternativa, potremmo usare il "globale" parola chiave per rendere la nostra parola chiave globale disponibile nel contesto locale nella nostra funzione calculate_grade(). Tuttavia, è probabile che questo approccio porti a codice più confuso e ad altri problemi. In generale, le variabili non devono essere dichiarate utilizzando "globale" a meno che non sia assolutamente necessario. Il tuo primo e principale punto di riferimento dovrebbe sempre essere quello di assicurarti che una variabile sia definita correttamente.

Nell’esempio sopra, ad esempio, non abbiamo verificato che la variabile "lettera" sia stata definita in tutti i casi d’uso.

Ecco! Abbiamo corretto l’errore della variabile locale nel nostro codice.

Conclusione

UnboundLocalError: variabile locale a cui si fa riferimento prima che venga generato l’errore di assegnazione quando si tenta di assegnare un valore a una variabile locale prima che sia stata dichiarata. Puoi risolvere questo errore assicurandoti che una variabile locale sia dichiarata prima di assegnarle un valore.

Ora sei pronto per risolvere UnboundLocalError Python errori come uno sviluppatore professionista!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method