English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo articolo, imparerai le variabili globali, locali, non locali di Python e dove utilizzarle.
In Python, le variabili dichiarate al di fuori di una funzione o in un contesto globale sono chiamate variabili globali. Questo significa che le variabili globali possono essere accedute sia all'interno che all'esterno di una funzione.
Ecco un esempio di come creare una variabile globale in Python.
x = "global" def foo(): print("interno x:", x) foo() print("esterno x:", x)
Quando eseguiamo il codice, il risultato sarà:
interno x: global esterno x: global
Nel codice sopra, abbiamoxcreato come variabile globale e definito foo() per stampare la variabile globalex. Infine, chiamiamo foo() e verrà stampatoxdel.
Se si desidera modificarexdel.
x = "global" def foo(): x = x * 2 print(x) foo()
Quando eseguiamo il codice, il risultato sarà:
Se si desidera modificare il valore
Cosa succede al valore?
Per implementare questa funzione, abbiamo utilizzato la parola chiave globale. Per ulteriori informazioni, visitareParola chiave globale di Python.
Le variabili dichiarate all'interno di una funzione o in un contesto locale sono chiamate variabili locali.
def foo(): y = "local" foo() print(y)
Quando eseguiamo il codice, il risultato sarà:
NameError: nome 'y' non definito
L'output mostra un errore perché stiamo cercando di accedere a una variabile locale y nel contesto globale, mentre le variabili locali lavorano solo all'interno di foo() o in un contesto locale.
Guardiamo un esempio di come creare variabili locali in Python.
Di solito, dichiariamo una variabile all'interno di una funzione per creare una variabile locale.
def foo(): y = "local" print(y) foo()
quando eseguiamo il codice, esce:
local
vediamoil problema precedente, dovexè una variabile globale, e vogliamo modificarla all'interno di foo()x.
In questo esempio, mostreremo come utilizzare contemporaneamente variabili globali e locali nello stesso codice.
x = "global" def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Quando eseguiamo il codice, il risultato sarà:
global global local
Nel codice sopra, abbiamo dichiarato x come variabile globale e y come variabile locale all'interno di foo(). Poi, abbiamo utilizzato l'operatore di moltiplicazione * per modificare la variabile globale x e contemporaneamente esportare x e y.
Dopo la chiamata a foo(), il valore di x è diventato global global, perché abbiamo utilizzato x * 2 per stampare due volte global. Poi, abbiamo stampato il valore della variabile locale y, ovvero la variabile locale.
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Quando eseguiamo il codice, il risultato sarà:
local x: 10 global x: 5
Nel codice sopra, abbiamo usato lo stesso nome x per la variabile globale e locale. Quando stampiamo la stessa variabile, otteniamo risultati diversi perché la variabile è声明ata in due sferhe di visibilità, ossia la sfera di visibilità locale all'interno di foo() e la sfera di visibilità globale fuori da foo().
Quando stampiamo la variabile all'interno di foo(), essa stampa local x: 10. Questo si chiama sfera di visibilità locale della variabile.
Allo stesso modo, quando stampiamo la variabile fuori da foo(), essa stampa global x: 5. Questo si chiama sfera di visibilità globale della variabile.
Le variabili non locali sono utilizzate per funzioni annidate senza sfera di visibilità locale definita. Questo significa che la variabile non può essere né in una sfera di visibilità locale né in una sfera di visibilità globale.
Ecco un esempio di come creare una variabile globale in Python.
Creiamo una variabile non locale utilizzando la parola chiave nonlocal.
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Quando eseguiamo il codice, il risultato sarà:
inner: nonlocal outer: nonlocal
Nel codice sopra, c'è una funzione annidata inner(). Utilizziamo la parola chiave nonlocal per creare una variabile non locale. inner() è definita all'interno di un'altra funzione external().
AttenzioneSe abbiamo cambiato il valore di una variabile non locale, queste modifiche appariranno nella variabile locale.