English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Before reading this article, please make sure you have masteredPython global, local and non-local variablesSome basic knowledge.
In Python, the global keyword allows you to modify a variable outside the current scope. It is used to create global variables and modify them in a local context.
Le regole di base della parola chiave globale in Python sono:
Quando creiamo una variabile all'interno della funzione, di default è locale.
Quando definiamo una variabile all'esterno della funzione, di default è globale. Non è necessario utilizzare la parola chiave global.
Usiamo la parola chiave global per leggere e scrivere variabili globali all'interno della funzione.
L'uso della parola chiave global all'esterno della funzione non è efficace
Facciamo un esempio.
c = 1 # variabile globale def add(): print(c) add()
Quando eseguiamo il programma sopra, l'output sarà:
1
Ma in alcuni casi, dobbiamo modificare le variabili globali dall'interno della funzione.
c = 1 # variabile globale def add(): c = c + 2 # aumentare c di 2 print(c) add()
Quando eseguiamo il programma sopra, l'output mostrerà un errore:
UnboundLocalError: variabile locale 'c' riferita prima dell'assegnazione
Questo perché possiamo accedere alle variabili globali, ma non possiamo modificarle dall'interno della funzione.
La soluzione è utilizzare la parola chiave global.
c = 0 # variabile globale def add(): global c c = c + 2 # aumentare di 2 print("Inside add():", c) add() print("In main:", c)
Quando eseguiamo il programma sopra, l'output sarà:
Inside add(): 2 In main: 2
Nel programma sopra, abbiamo definito c come una parola chiave globale interna alla funzione add()
Poi, aumentiamo la variabile c di 1, ossia c = c + 2. Poi chiamiamo la funzione add(). Infine, stampiamo la variabile globale c.
Come vediamo, anche le variabili globali al di fuori delle funzioni sono state modificate c = 2.
In Python, creiamo un modulo config.py per salvare le variabili globali e condividere informazioni tra moduli Python nello stesso programma.
Ecco come condividiamo le variabili globali tra moduli Python.
Creare un file config.py per memorizzare le variabili globali
a = 0 b = "empty"
Creare un file update.py, modificare le variabili globali
import config config.a = 10 config.b = "alphabet"
Crea un file main.py per testare le variazioni dei valori
import config import update print(config.a) print(config.b)
Quando eseguiamo il file main.py, l'output sarà
10 alphabet
Nell'esempio sopra, abbiamo creato tre file: config.py, update.py e main.py.
Il modulo config.py memorizzaaedel valore di bvariabile globale. Nel file update.py, importiamo il modulo config.py e lo modificiamoaebdel valore. Allo stesso modo, nel file main.py, importiamo contemporaneamente i moduli config.py e update.py. Infine, stampiamo e testiamo il valore delle variabili globali, indipendentemente dal fatto che siano state modificate o meno.
Questo è il metodo per utilizzare variabili globali in funzioni annidate.
def foo(): x = 20 def bar(): global x x = 25 print("Prima della chiamata a bar: ", x) print("Chiamata immediata a bar") bar() print("Dopo la chiamata a bar: ", x) foo() print("x nel corpo del programma: ", x)
Output:
Prima della chiamata a bar: 20 Chiamata immediata a bar Dopo la chiamata a bar(): 20 x nel corpo del programma: 25
Nel programma sopra, abbiamo dichiarato una variabile globale nell'funzione bar() annidata. Nella funzione foo(), x non ha alcun impatto sulla parola chiave globale.
Prima e dopo la chiamata a bar(), la variabile x accetta il valore del variabile locale, ovvero x = 20. Al di fuori della funzione foo(), la variabile x adotterà il valore definito nella funzione bar(), ovvero x = 25. Questo perché abbiamo usato la parola chiave global in bar() (ambito locale) per creare una variabile globale.
Se facciamo qualsiasi modifica nella funzione bar(), queste modifiche appariranno al di fuori dell'ambito locale, ovvero in foo().