Pythoni globaalne märksõna (koos näidetega)

Selles artiklis saate teada globaalse märksõna, globaalse muutuja ja millal globaalseid märksõnu kasutada.

Enne selle artikli lugemist veenduge, et teil oleks Python globaalsete, kohalike ja mittekohalike muutujate põhitõed.

Mis on globaalne märksõna

Pythonis globalvõimaldab märksõna muuta muutujat väljaspool praegust ulatust. Seda kasutatakse globaalse muutuja loomiseks ja muutuja muutmiseks kohalikus kontekstis.

Üldise märksõna reeglid

globalPythoni märksõna põhireeglid on järgmised:

  • Kui loome funktsiooni sisse muutuja, on see vaikimisi lokaalne.
  • Kui defineerime muutuja väljaspool funktsiooni, on see vaikimisi globaalne. Te ei pea globalmärksõna kasutama .
  • Me kasutame globalmärksõna funktsiooni globaalse muutuja lugemiseks ja kirjutamiseks.
  • Kasutamine globalmärksõna väljaspool funktsiooni ei mõjuta.

Ülemaailmse märksõna kasutamine

Võtame näite.

Näide 1: juurdepääs funktsiooni sees olevale globaalsele muutujale

 c = 1 # global variable def add(): print(c) add()

Ülaltoodud programmi käivitamisel on väljund:

 1

Kuid meil võib olla mõni stsenaarium, kus peame muutma globaalset muutujat funktsiooni seest.

Näide 2: globaalse muutuja muutmine funktsiooni seest

 c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()

Kui käivitame ülaltoodud programmi, näitab väljund viga:

 UnboundLocalError: enne määramist viidatud kohalikule muutujale „c”

Seda seetõttu, et meil on juurdepääs ainult globaalsele muutujale, kuid me ei saa seda funktsiooni sees muuta.

Selle lahenduseks on globalmärksõna kasutamine.

Näide 3: Globaalse muutuja muutmine funktsiooni seest globaalse muutuja abil

 c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)

Ülaltoodud programmi käivitamisel on väljund:

 Sees lisa (): 2 Põhiliselt: 2

Eespool toodud programmis määratleme add()funktsiooni globaalse märksõnana c .

Seejärel suurendame muutujat c 1, st c = c + 2. Pärast seda kutsume add()funktsiooni. Lõpuks printime globaalse muutuja c.

Nagu näeme, toimus muutus ka funktsiooni välisel globaalsel muutujal c = 2.

Üldised muutujad Pythoni moodulites

Pythonis loome ühe mooduli config.pyglobaalsete muutujate hoidmiseks ja teabe jagamiseks Pythoni moodulite vahel ühes ja samas programmis.

Nii saame globaalseid muutujaid jagada Pythoni moodulite vahel.

Näide 4: jagage Pythoni moodulite globaalset muutujat

Looge config.pyfail globaalsete muutujate salvestamiseks

 a = 0 b = "empty"

Üldiste update.pymuutujate muutmiseks looge fail

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

main.pyVäärtuse muutuste testimiseks looge fail

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

Kui käivitame main.pyfaili, on väljund

 10 tähestikku

Eespool oleme loonud kolm faili: config.py, update.pyja main.py.

Moodul config.pysalvestab globaalsed muutujad a ja b. Kui update.pyfaili Toome config.pymoodul ja muuta väärtusi ja b. Samamoodi main.pyimpordime failis mõlemad config.pyja update.pymooduli. Lõpuks printime ja testime globaalsete muutujate väärtusi, olenemata sellest, kas neid muudetakse või mitte.

Globaalne pesastatud funktsioonides

Siit saate teada, kuidas pesastatud funktsioonis saab kasutada globaalset muutujat.

Näide 5: globaalse muutuja kasutamine pesastatud funktsioonis

 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)

Väljund on:

 Enne ribale helistamist: 20 Helistamisriba kohe Pärast helistamise riba: 20 x põhiliselt: 25

Ülalolevas programmis kuulutasime pesastatud funktsiooni sisse globaalse muutuja bar(). foo()Funktsiooni sees ei mõjuta x globaalset märksõna.

Enne ja pärast helistamist bar()võtab muutuja x kohaliku muutuja st x = 20. Väljaspool foo()funktsiooni saab muutuja x bar()funktsioonis määratletud väärtuse, st x = 25. Seda seetõttu, et oleme kasutanud globalmärksõna x-s bar()funktsiooni globaalse muutuja loomiseks (kohalik ulatus).

Kui teeme bar()funktsiooni sees muudatusi, ilmnevad muudatused väljaspool kohalikku ulatust, st foo().

Huvitavad Artiklid...