U ovom ćete članku naučiti o globalnoj ključnoj riječi, globalnoj varijabli i kada koristiti globalne ključne riječi.
Prije čitanja ovog članka, pobrinite se da imate neke osnove globalnih, lokalnih i nelokalnih varijabli Python.
Što je globalna ključna riječ
U Pythonu global
ključna riječ omogućuje izmjenu varijable izvan trenutnog opsega. Koristi se za stvaranje globalne varijable i za promjenu varijable u lokalnom kontekstu.
Pravila globalne ključne riječi
Osnovna pravila za global
ključne riječi u Pythonu su:
- Kada unutar funkcije kreiramo varijablu, ona je prema zadanim postavkama lokalna.
- Kada definiramo varijablu izvan funkcije, ona je prema zadanim postavkama globalna. Ne morate koristiti
global
ključnu riječ. - Koristimo
global
ključnu riječ za čitanje i pisanje globalne varijable unutar funkcije. - Upotreba
global
ključne riječi izvan funkcije nema učinka.
Upotreba globalne ključne riječi
Uzmimo primjer.
Primjer 1: Pristup globalnoj varijabli iznutra u funkciji
c = 1 # global variable def add(): print(c) add()
Kada pokrenemo gornji program, izlaz će biti:
1
Međutim, možemo imati neke scenarije u kojima trebamo izmijeniti globalnu varijablu unutar funkcije.
Primjer 2: Modificiranje globalne varijable iznutra u funkciji
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Kada pokrenemo gornji program, izlaz prikazuje pogrešku:
UnboundLocalError: lokalna varijabla 'c' navedena prije dodjele
To je zato što možemo pristupiti samo globalnoj varijabli, ali je ne možemo mijenjati unutar funkcije.
Rješenje za to je uporaba global
ključne riječi.
Primjer 3: Promjena globalne varijable iznutra u funkciji pomoću globalne
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Kada pokrenemo gornji program, izlaz će biti:
Iznutra dodaj (): 2 U glavnom: 2
U gornjem programu definiramo c kao globalnu ključnu riječ unutar add()
funkcije.
Zatim, povećavamo varijablu c za 1
, tj c = c + 2
. Nakon toga pozivamo add()
funkciju. Na kraju ispisujemo globalnu varijablu c.
Kao što možemo vidjeti, promijeniti pojavila globalne varijable izvan funkcije, c = 2
.
Globalne varijable u Python modulima
U Pythonu stvaramo jedan modul config.py
za zadržavanje globalnih varijabli i razmjenu informacija između Python modula unutar istog programa.
Evo kako možemo dijeliti globalne varijable kroz python module.
Primjer 4: Podijelite globalnu varijablu između Python modula
Stvorite config.py
datoteku za pohranu globalnih varijabli
a = 0 b = "empty"
Stvorite update.py
datoteku za promjenu globalnih varijabli
import config config.a = 10 config.b = "alphabet"
Stvorite main.py
datoteku za testiranje promjena vrijednosti
import config import update print(config.a) print(config.b)
Kad pokrenemo main.py
datoteku, izlaz će biti
10 abeceda
U gore, stvorili smo tri datoteke: config.py
, update.py
i main.py
.
Modul config.py
pohranjuje globalne varijable a i b. U update.py
datoteku uvozimo config.py
modul i mijenjamo vrijednosti a i b. Slično tome, u main.py
datoteku uvozimo oba config.py
i update.py
module. Na kraju, ispisujemo i testiramo vrijednosti globalnih varijabli bez obzira jesu li promijenjene ili ne.
Globalno u ugniježđenim funkcijama
Evo kako možete koristiti globalnu varijablu u ugniježđenoj funkciji.
Primjer 5: Korištenje globalne varijable u ugniježđenoj funkciji
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)
Izlaz je:
Prije poziva bar: 20 Traka poziva Sada nakon poziva bar: 20 x glavno: 25
U gore navedenom programu proglasili smo globalnu varijablu unutar ugniježđene funkcije bar()
. Unutar foo()
funkcije x nema učinak globalne ključne riječi.
Prije i nakon pozivanja bar()
, varijabla x poprima vrijednost lokalne varijable, tj x = 20
. Izvan foo()
funkcije, varijabla x poprimit će vrijednost definiranu u bar()
funkciji, tj x = 25
. To je zato što smo koristili global
ključnu riječ u x za stvaranje globalne varijable unutar bar()
funkcije (lokalni opseg).
Ako napravimo bilo kakve promjene unutar bar()
funkcije, promjene se pojavljuju izvan lokalnog opsega, tj foo()
.