Variabili Python globali, locali e non locali (con esempi)

In questo tutorial imparerai a conoscere le variabili globali Python, le variabili locali, le variabili non locali e dove usarle.

Video: variabili locali e globali di Python

Variabili globali

In Python, una variabile dichiarata al di fuori della funzione o nell'ambito globale è nota come variabile globale. Ciò significa che è possibile accedere a una variabile globale all'interno o all'esterno della funzione.

Vediamo un esempio di come viene creata una variabile globale in Python.

Esempio 1: creare una variabile globale

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Produzione

 x dentro: globale x fuori: globale

Nel codice precedente, abbiamo creato x come variabile globale e definito a foo()per stampare la variabile globale x. Infine, chiamiamo il foo()che stamperà il valore di x.

E se volessi cambiare il valore di x all'interno di una funzione?

 x = "global" def foo(): x = x * 2 print(x) foo()

Produzione

 UnboundLocalError: variabile locale 'x' referenziata prima dell'assegnazione

L'output mostra un errore perché Python tratta x come una variabile locale e anche x non è definito all'interno foo().

Per farlo funzionare, usiamo la globalparola chiave. Visita Python Global Keyword per saperne di più.

Variabili locali

Una variabile dichiarata all'interno del corpo della funzione o nell'ambito locale è nota come variabile locale.

Esempio 2: accesso a variabili locali al di fuori dell'ambito

 def foo(): y = "local" foo() print(y)

Produzione

 NameError: il nome "y" non è definito

L'output mostra un errore perché stiamo tentando di accedere a una variabile locale y in uno scope globale mentre la variabile locale funziona solo all'interno foo()o in ambito locale.

Vediamo un esempio su come viene creata una variabile locale in Python.

Esempio 3: creare una variabile locale

Normalmente, dichiariamo una variabile all'interno della funzione per creare una variabile locale.

 def foo(): y = "local" print(y) foo()

Produzione

 Locale

Diamo un'occhiata al problema precedente in cui x era una variabile globale e volevamo modificare x all'interno foo().

Variabili globali e locali

Qui, mostreremo come utilizzare le variabili globali e le variabili locali nello stesso codice.

Esempio 4: utilizzo di variabili globali e locali nello stesso codice

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Produzione

 globale globale locale

Nel codice sopra, dichiariamo x come globale ey come variabile locale nel file foo(). Quindi, usiamo l'operatore di moltiplicazione *per modificare la variabile globale x e stampiamo sia x che y.

Dopo aver chiamato foo(), il valore di x diventa global globalperché abbiamo usato x * 2per stampare due volte global. Dopodiché, stampiamo il valore della variabile locale y, ovvero local.

Esempio 5: variabile globale e variabile locale con lo stesso nome

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Produzione

 x locale: 10 x globale: 5

Nel codice sopra, abbiamo usato lo stesso nome x sia per la variabile globale che per la variabile locale. Otteniamo un risultato diverso quando stampiamo la stessa variabile perché la variabile è dichiarata in entrambi gli ambiti, cioè l'ambito locale all'interno foo()e l'ambito globale all'esterno foo().

Quando stampiamo la variabile al foo()suo interno restituisce local x: 10. Questo è chiamato ambito locale della variabile.

Allo stesso modo, quando stampiamo la variabile al di fuori di foo(), restituisce x globale: 5. Questo è chiamato ambito globale della variabile.

Variabili non locali

Le variabili non locali vengono utilizzate nelle funzioni nidificate il cui ambito locale non è definito. Ciò significa che la variabile non può essere né nell'ambito locale né in quello globale.

Vediamo un esempio di come viene utilizzata una variabile non locale in Python.

Usiamo nonlocalparole chiave per creare variabili non locali.

Esempio 6: creare una variabile non locale

 def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()

Produzione

 interno: non locale esterno: non locale

Nel codice sopra, c'è una inner()funzione annidata . Usiamo nonlocalparole chiave per creare una variabile non locale. La inner()funzione è definita nell'ambito di un'altra funzione outer().

Nota : se si modifica il valore di una variabile non locale, le modifiche vengono visualizzate nella variabile locale.

Articoli interessanti...