Ebben a cikkben megismerheti a globális kulcsszót, a globális változót és a globális kulcsszavak használatának idejét.
A cikk elolvasása előtt győződjön meg arról, hogy rendelkezik a Python globális, helyi és nem lokális változók alapjaival.
Mi a globális kulcsszó
A Pythonban a global
kulcsszó lehetővé teszi a változó módosítását az aktuális hatókörön kívül. Globális változó létrehozására és a változó helyi kontextusban történő megváltoztatására szolgál.
A globális kulcsszó szabályai
A global
Python kulcsszavának alapvető szabályai a következők:
- Amikor egy függvényen belül létrehozunk egy változót, az alapértelmezés szerint lokális.
- Ha egy függvényen kívüli változót definiálunk, az alapértelmezés szerint globális. Nem kell
global
kulcsszót használni . - Az általunk használt
global
kulcsszó írni és olvasni egy globális változót függvényen belül. - A
global
kulcsszó függvényen kívüli használata nincs hatással.
Globális kulcsszó használata
Vegyünk egy példát.
1. példa: A függvény belsejéből származó globális változó elérése
c = 1 # global variable def add(): print(c) add()
A fenti program futtatásakor a kimenet a következő lesz:
1
Vannak azonban olyan forgatókönyveink, amikor a globális változót egy függvényen belül kell módosítanunk.
2. példa: A globális változó módosítása a függvény belsejéből
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
A fenti program futtatásakor a kimenet hibát mutat:
UnboundLocalError: a „c” helyi változó hivatkozva a hozzárendelés előtt
Ennek oka az, hogy csak a globális változóhoz férhetünk hozzá, de a függvényen belül nem módosíthatjuk.
Erre megoldás a global
kulcsszó használata .
3. példa: A globális változó megváltoztatása egy függvény belsejéből a global használatával
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
A fenti program futtatásakor a kimenet a következő lesz:
Belső hozzáadás (): 2 Fő: 2
A fenti programban c-t definiáljuk globális kulcsszóként a add()
függvényen belül .
Ezután növeljük a c változót 1
, azaz c = c + 2
. Ezt követően meghívjuk a add()
függvényt. Végül kinyomtatjuk a c globális változót.
Mint láthatjuk, a függvényen kívüli globális változón is változás történt c = 2
.
Globális változók a Python modulokon keresztül
A Pythonban egyetlen modult hozunk létre a config.py
globális változók tárolására és az információk megosztására a Python modulok között ugyanazon programon belül.
Így oszthatjuk meg a globális változókat a python modulok között.
4. példa: Egy globális változó megosztása a Python modulokon keresztül
Hozzon létre egy config.py
fájlt a globális változók tárolásához
a = 0 b = "empty"
Hozzon létre egy update.py
fájlt a globális változók módosításához
import config config.a = 10 config.b = "alphabet"
Hozzon létre egy main.py
fájlt az érték változásainak teszteléséhez
import config import update print(config.a) print(config.b)
Amikor lefuttatjuk a main.py
fájlt, a kimenet az lesz
10 ábécé
A fenti, hoztunk létre három fájlt: config.py
, update.py
és main.py
.
A modul config.py
az a és b globális változóit tárolja. A update.py
fájlban importáljuk a config.py
modult, és módosítjuk a és b értékeit. Hasonlóképpen, a main.py
fájl, mi import egyaránt config.py
és update.py
modult. Végül kinyomtatjuk és teszteljük a globális változók értékeit, függetlenül attól, hogy változnak-e vagy sem.
Globális beágyazott funkciókban
Így használhatja a globális változót a beágyazott függvényben.
5. példa: Globális változó használata beágyazott függvényben
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)
A kimenet:
Mielőtt felhívná a sávot: 20 Hívási sáv most A sáv hívása után: 20 x fő: 25
A fenti programban globális változót deklaráltunk a beágyazott függvényen belül bar()
. Az foo()
x függvényen belül nincs hatással a globális kulcsszóra.
Hívás előtt és után bar()
az x változó a helyi változó, azaz a változó értékét veszi fel x = 20
. A foo()
függvényen kívül az x változó a bar()
függvényben meghatározott értéket veszi fel, azaz x = 25
. Ennek oka az, hogy global
az x kulcsszót használtuk a bar()
függvényen belüli globális változó létrehozásához (helyi hatókör).
Ha bármilyen változtatást hajtunk végre a bar()
függvényen belül , akkor a változások a helyi hatókörön kívül jelennek meg, azaz foo()
.