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 globalkulcsszó 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 globalPython 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
globalkulcsszót használni . - Az általunk használt
globalkulcsszó írni és olvasni egy globális változót függvényen belül. - A
globalkulcsszó 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 globalkulcsszó 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.pyglobá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.pyfájlt a globális változók tárolásához
a = 0 b = "empty"
Hozzon létre egy update.pyfá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.pyfájlt az érték változásainak teszteléséhez
import config import update print(config.a) print(config.b)
Amikor lefuttatjuk a main.pyfá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.pyaz a és b globális változóit tárolja. A update.pyfájlban importáljuk a config.pymodult, és módosítjuk a és b értékeit. Hasonlóképpen, a main.pyfájl, mi import egyaránt config.pyés update.pymodult. 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 globalaz 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().








