In questo articolo imparerai a conoscere la parola chiave globale, la variabile globale e quando utilizzare le parole chiave globali.
Prima di leggere questo articolo, assicurati di avere alcune nozioni di base sulle variabili globali, locali e non locali di Python.
Qual è la parola chiave globale
In Python, la global
parola chiave consente di modificare la variabile al di fuori dell'ambito corrente. Viene utilizzato per creare una variabile globale e apportare modifiche alla variabile in un contesto locale.
Regole della parola chiave globale
Le regole di base per la global
parola chiave in Python sono:
- Quando creiamo una variabile all'interno di una funzione, per impostazione predefinita è locale.
- Quando definiamo una variabile al di fuori di una funzione, è globale per impostazione predefinita. Non devi usare la
global
parola chiave. - Usiamo la
global
parola chiave per leggere e scrivere una variabile globale all'interno di una funzione. - L'uso di una
global
parola chiave al di fuori di una funzione non ha effetto.
Uso della parola chiave globale
Facciamo un esempio.
Esempio 1: accesso alla variabile globale dall'interno di una funzione
c = 1 # global variable def add(): print(c) add()
Quando eseguiamo il programma sopra, l'output sarà:
1
Tuttavia, potremmo avere alcuni scenari in cui dobbiamo modificare la variabile globale dall'interno di una funzione.
Esempio 2: modifica della variabile globale dall'interno della funzione
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Quando eseguiamo il programma sopra, l'output mostra un errore:
UnboundLocalError: variabile locale 'c' referenziata prima dell'assegnazione
Questo perché possiamo accedere solo alla variabile globale ma non possiamo modificarla dall'interno della funzione.
La soluzione per questo è utilizzare la global
parola chiave.
Esempio 3: modifica della variabile globale dall'interno di una funzione utilizzando global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Quando eseguiamo il programma sopra, l'output sarà:
All'interno add (): 2 In main: 2
Nel programma sopra, definiamo c come parola chiave globale all'interno della add()
funzione.
Quindi, incrementiamo la variabile c di 1
, ie c = c + 2
. Dopodiché, chiamiamo la add()
funzione. Infine, stampiamo la variabile globale c.
Come possiamo vedere, il cambiamento è avvenuto anche sulla variabile globale al di fuori della funzione c = 2
,.
Variabili globali nei moduli Python
In Python, creiamo un singolo modulo config.py
per contenere variabili globali e condividere informazioni tra i moduli Python all'interno dello stesso programma.
Ecco come possiamo condividere le variabili globali tra i moduli python.
Esempio 4: condividere una variabile globale tra i moduli Python
Crea un config.py
file, per memorizzare le variabili globali
a = 0 b = "empty"
Crea un update.py
file, per modificare le variabili globali
import config config.a = 10 config.b = "alphabet"
Crea un main.py
file, per testare le modifiche nel valore
import config import update print(config.a) print(config.b)
Quando eseguiamo il main.py
file, l'output sarà
10 alfabeto
In precedenza, abbiamo creato tre file: config.py
, update.py
, e main.py
.
Il modulo config.py
memorizza le variabili globali di a e b. Nel update.py
file importiamo il config.py
modulo e modifichiamo i valori di a e b. Allo stesso modo, nel main.py
file, importiamo sia config.py
e update.py
module. Infine, stampiamo e testiamo i valori delle variabili globali indipendentemente dal fatto che siano modificati o meno.
Globale nelle funzioni annidate
Ecco come puoi usare una variabile globale nella funzione annidata.
Esempio 5: utilizzo di una variabile globale in una funzione annidata
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
L'output è:
Prima di chiamare il bar: 20 Calling bar ora Dopo aver chiamato il bar: 20 x in principale: 25
Nel programma precedente, abbiamo dichiarato una variabile globale all'interno della funzione annidata bar()
. All'interno della foo()
funzione, x non ha alcun effetto sulla parola chiave globale.
Prima e dopo la chiamata bar()
, la variabile x assume il valore della variabile locale ie x = 20
. Al di fuori della foo()
funzione, la variabile x assumerà il valore definito nella bar()
funzione, ad es x = 25
. Questo perché abbiamo utilizzato la global
parola chiave in x per creare una variabile globale all'interno della bar()
funzione (ambito locale).
Se apportiamo modifiche all'interno della bar()
funzione, le modifiche vengono visualizzate al di fuori dell'ambito locale, ad es foo()
.