V tem članku boste izvedeli več o globalni ključni besedi, globalni spremenljivki in kdaj uporabljati globalne ključne besede.
Pred branjem tega članka se prepričajte, da imate nekaj osnov o globalnih, lokalnih in nelokalnih spremenljivkah Python.
Kaj je globalna ključna beseda
V Pythonu vam global
ključna beseda omogoča spreminjanje spremenljivke zunaj trenutnega obsega. Uporablja se za ustvarjanje globalne spremenljivke in spreminjanje spremenljivke v lokalnem kontekstu.
Pravila globalne ključne besede
Osnovna pravila za global
ključne besede v Pythonu so:
- Ko v funkciji ustvarimo spremenljivko, je ta privzeto lokalna.
- Ko spremenljivko definiramo zunaj funkcije, je privzeto globalna. Ni vam treba uporabljati
global
ključne besede. - Ključno
global
besedo uporabljamo za branje in zapisovanje globalne spremenljivke znotraj funkcije. - Uporaba
global
ključne besede zunaj funkcije nima učinka.
Uporaba globalne ključne besede
Vzemimo primer.
Primer 1: Dostop do globalne spremenljivke od znotraj funkcije
c = 1 # global variable def add(): print(c) add()
Ko zaženemo zgornji program, bo rezultat:
1.
Vendar imamo morda nekaj scenarijev, ko moramo spremeniti globalno spremenljivko znotraj funkcije.
Primer 2: Spreminjanje globalne spremenljivke znotraj funkcije
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Ko zaženemo zgornji program, izhod pokaže napako:
UnboundLocalError: sklic na lokalno spremenljivko 'c' pred dodelitvijo
To je zato, ker lahko dostopamo samo do globalne spremenljivke, vendar je ne moremo spreminjati znotraj funkcije.
Rešitev za to je uporaba global
ključne besede.
Primer 3: Spreminjanje globalne spremenljivke iz funkcije znotraj funkcije global
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Ko zaženemo zgornji program, bo rezultat:
Znotraj dodaj (): 2 V glavnem: 2
V zgornjem programu definiramo c kot globalno ključno besedo znotraj add()
funkcije.
Nato spremenljivko c prirastimo za 1
, tj c = c + 2
. Po tem pokličemo add()
funkcijo. Na koncu natisnemo še globalno spremenljivko c.
Kot lahko vidimo, sprememba se je zgodila tudi na globalne spremenljivke izven funkcije c = 2
.
Globalne spremenljivke v modulih Python
V Pythonu ustvarimo en modul config.py
za shranjevanje globalnih spremenljivk in izmenjavo informacij med moduli Python znotraj istega programa.
Tukaj je opisano, kako lahko delimo globalne spremenljivke med moduli python.
Primer 4: Skupna raba spremenljivke med moduli Python
Ustvarite config.py
datoteko za shranjevanje globalnih spremenljivk
a = 0 b = "empty"
Ustvarite update.py
datoteko za spreminjanje globalnih spremenljivk
import config config.a = 10 config.b = "alphabet"
Ustvarite main.py
datoteko, da preizkusite spremembe vrednosti
import config import update print(config.a) print(config.b)
Ko zaženemo main.py
datoteko, bo rezultat
10 abeceda
V zgoraj, smo ustvarili tri datoteke: config.py
, update.py
, in main.py
.
Modul config.py
shranjuje globalni spremenljivki a in b. V update.py
datoteko uvozimo config.py
modul in spremenimo vrednosti a in b. Podobno v main.py
datoteko uvozimo oba config.py
in update.py
module. Na koncu natisnemo in preizkusimo vrednosti globalnih spremenljivk, ne glede na to, ali so spremenjene ali ne.
Globalno v ugnezdenih funkcijah
Tukaj je opisano, kako lahko v ugnezdeni funkciji uporabite globalno spremenljivko.
Primer 5: Uporaba globalne spremenljivke v ugnezdeni 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)
Rezultat je:
Pred klicem: 20 Klicanje zdaj Po klicu: 20 x v glavnem: 25
V zgornjem programu smo znotraj ugnezdene funkcije razglasili globalno spremenljivko bar()
. Znotraj foo()
funkcije x nima učinka globalne ključne besede.
Pred klicem in po bar()
njem spremenljivka x zavzame vrednost lokalne spremenljivke, tj x = 20
. Zunaj foo()
funkcije bo spremenljivka x dobila vrednost, določeno v bar()
funkciji, tj x = 25
. To je zato, ker smo uporabili global
ključno besedo v x za ustvarjanje globalne spremenljivke znotraj bar()
funkcije (lokalni obseg).
Če naredimo kakršne koli spremembe znotraj bar()
funkcije, se spremembe pojavijo zunaj lokalnega obsega, tj foo()
.