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 global
parola 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 global
perché abbiamo usato x * 2
per 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 nonlocal
parole 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 nonlocal
parole 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.