I den här artikeln lär du dig om det globala nyckelordet, den globala variabeln och när du ska använda globala sökord.
Innan du läser den här artikeln, se till att du har några grunder för Python Global, Local och Nonlocal Variables.
Vad är det globala nyckelordet
I Python global
låter nyckelordet du ändra variabeln utanför det aktuella omfånget. Den används för att skapa en global variabel och göra ändringar i variabeln i ett lokalt sammanhang.
Regler för globala nyckelord
De grundläggande reglerna för global
nyckelord i Python är:
- När vi skapar en variabel i en funktion är den lokal som standard.
- När vi definierar en variabel utanför en funktion är den global som standard. Du behöver inte använda
global
nyckelord. - Vi använder
global
nyckelord för att läsa och skriva en global variabel inuti en funktion. - Användning av
global
nyckelord utanför en funktion har ingen effekt.
Användning av globala nyckelord
Låt oss ta ett exempel.
Exempel 1: Åtkomst till global variabel från en funktion
c = 1 # global variable def add(): print(c) add()
När vi kör ovanstående program blir resultatet:
1
Vi kan dock ha några scenarier där vi behöver ändra den globala variabeln inifrån en funktion.
Exempel 2: Ändra global variabel inifrån funktionen
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
När vi kör programmet ovan visar resultatet ett fel:
UnboundLocalError: lokal variabel 'c' som refereras före tilldelning
Detta beror på att vi bara kan komma åt den globala variabeln men inte kan ändra den inifrån funktionen.
Lösningen för detta är att använda global
nyckelordet.
Exempel 3: Ändra global variabel från en funktion med global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
När vi kör ovanstående program blir resultatet:
Insida add (): 2 I huvudsak: 2
I ovanstående program definierar vi c som ett globalt nyckelord inuti add()
funktionen.
Sedan öka vi variabeln c med 1
, det vill säga c = c + 2
. Efter det kallar vi add()
funktionen. Slutligen skriver vi ut den globala variabeln c.
Som vi kan se inträffade också förändringar på den globala variabeln utanför funktionen c = 2
.
Globala variabler över Python-moduler
I Python skapar vi en enda modul för config.py
att hålla globala variabler och dela information över Python-moduler inom samma program.
Här är hur vi kan dela globala variabler över pythonmodulerna.
Exempel 4: Dela en global variabel över Python-moduler
Skapa en config.py
fil för att lagra globala variabler
a = 0 b = "empty"
Skapa en update.py
fil för att ändra globala variabler
import config config.a = 10 config.b = "alphabet"
Skapa en main.py
fil för att testa värdeförändringar
import config import update print(config.a) print(config.b)
När vi kör main.py
filen blir resultatet
10 alfabetet
I ovanstående har vi skapat tre filer: config.py
, update.py
och main.py
.
Modulen config.py
lagrar globala variabler av a och b. I update.py
filen importerar vi config.py
modulen och ändrar värdena för a och b. På samma sätt main.py
importerar vi båda config.py
och update.py
modulen i filen . Slutligen skriver vi ut och testar värdena för globala variabler om de ändras eller inte.
Globalt i kapslade funktioner
Så här kan du använda en global variabel i kapslad funktion.
Exempel 5: Använda en global variabel i kapslad funktion
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)
Utgången är:
Innan samtalsfält: 20 Anropsfält nu Efter anropsfält: 20 x i huvudsak: 25
I ovanstående program förklarade vi en global variabel i den kapslade funktionen bar()
. Inuti- foo()
funktionen har x ingen effekt av det globala nyckelordet.
Före och efter ringer bar()
, variabeln x tar värdet av lokala variabeln, dvs x = 20
. Utanför foo()
funktionen kommer variabeln x tar värde definieras i bar()
funktion, dvs x = 25
. Detta beror på att vi har använt global
nyckelord i x för att skapa global variabel inuti bar()
funktionen (lokalt omfång).
Om vi gör några ändringar inuti bar()
funktionen förändringarna visas utanför den lokala omfattning, det vill säga foo()
.