Python globalna ključna riječ (s primjerima)

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 globalključ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 globalključ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 globalključnu riječ.
  • Koristimo globalključnu riječ za čitanje i pisanje globalne varijable unutar funkcije.
  • Upotreba globalključ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 globalključ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.pyza 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.pydatoteku za pohranu globalnih varijabli

 a = 0 b = "empty"

Stvorite update.pydatoteku za promjenu globalnih varijabli

 import config config.a = 10 config.b = "alphabet"

Stvorite main.pydatoteku za testiranje promjena vrijednosti

 import config import update print(config.a) print(config.b)

Kad pokrenemo main.pydatoteku, izlaz će biti

 10 abeceda

U gore, stvorili smo tri datoteke: config.py, update.pyi main.py.

Modul config.pypohranjuje globalne varijable a i b. U update.pydatoteku uvozimo config.pymodul i mijenjamo vrijednosti a i b. Slično tome, u main.pydatoteku uvozimo oba config.pyi update.pymodule. 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 globalključ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().

Zanimljivi članci...