Tässä artikkelissa opit globaalista avainsanasta, globaalista muuttujasta ja siitä, milloin globaaleja avainsanoja käytetään.
Ennen kuin luet tämän artikkelin, varmista, että sinulla on joitain perusasioita Pythonin globaaleista, paikallisista ja ei-paikallisista muuttujista.
Mikä on yleinen avainsana
Pythonissa global
avainsanan avulla voit muokata muuttujaa nykyisen laajuuden ulkopuolella. Sitä käytetään luomaan globaali muuttuja ja tekemään muutoksia muuttujaan paikallisesti.
Yleisen avainsanan säännöt
global
Pythonin avainsanan perussäännöt ovat:
- Kun luot funktion sisällä muuttujan, se on oletusarvoisesti paikallinen.
- Kun määritämme muuttujan funktion ulkopuolella, se on oletusarvoisesti globaali. Sinun ei tarvitse käyttää
global
avainsanaa. - Käytämme
global
avainsanaa globaalin muuttujan lukemiseen ja kirjoittamiseen funktion sisällä. - Käyttö
global
avainsanan ulkopuolella toiminto ei vaikuta.
Yleisen avainsanan käyttö
Otetaan esimerkki.
Esimerkki 1: Pääsy globaaliin muuttujaan toiminnon sisältä
c = 1 # global variable def add(): print(c) add()
Kun suoritamme yllä olevan ohjelman, tulos on:
1
Meillä voi kuitenkin olla joitain skenaarioita, joissa meidän on muokattava globaalia muuttujaa toiminnon sisältä.
Esimerkki 2: Globaalin muuttujan muokkaaminen toiminnon sisältä
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Kun suoritamme yllä olevan ohjelman, tulos näyttää virheen:
UnboundLocalError: paikallinen muuttuja 'c' viitattu ennen tehtävää
Tämä johtuu siitä, että voimme käyttää vain globaalia muuttujaa, mutta emme voi muokata sitä toiminnon sisältä.
Ratkaisu tähän on käyttää global
avainsanaa.
Esimerkki 3: Globaalin muuttujan muuttaminen toiminnon sisältä käyttämällä globaalia
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Kun suoritamme yllä olevan ohjelman, tulos on:
Sisällä lisää (): 2 Pääasiassa: 2
Edellä olevassa ohjelmassa määritellään c globaaliksi avainsanaksi add()
funktion sisällä .
Sitten kasvatamme muuttujaa c 1
eli c = c + 2
. Sen jälkeen kutsumme add()
funktiota. Lopuksi tulostamme globaali muuttuja c.
Kuten voimme nähdä, muutos tapahtui myös funktion ulkopuolisessa globaalissa muuttujassa c = 2
.
Python-moduulien globaalit muuttujat
Pythonissa luomme yhden moduulin config.py
globaalien muuttujien pitämiseen ja tietojen jakamiseen Python-moduulien välillä samassa ohjelmassa.
Näin voimme jakaa globaaleja muuttujia python-moduulien välillä.
Esimerkki 4: Jaa globaali muuttuja Python-moduulien välillä
Luo config.py
tiedosto globaalien muuttujien tallentamiseksi
a = 0 b = "empty"
Luo update.py
tiedosto muuttaaksesi yleisiä muuttujia
import config config.a = 10 config.b = "alphabet"
Luo main.py
tiedosto testataksesi arvon muutoksia
import config import update print(config.a) print(config.b)
Kun suoritamme main.py
tiedoston, tulos on
10 aakkosia
Yllä olemme luoneet kolme tiedostoa: config.py
, update.py
ja main.py
.
Moduuli config.py
tallentaa globaalit muuttujat a ja b. Tuodaan update.py
tiedostoon config.py
moduuli ja muokataan a: n ja b: n arvoja. Samoin main.py
tuomme tiedostoon molemmat config.py
ja update.py
moduulin. Lopuksi tulostamme ja testaamme globaalien muuttujien arvot riippumatta siitä, muuttuvatko ne vai eivät.
Globaali sisäkkäisissä toiminnoissa
Näin voit käyttää globaalia muuttujaa sisäkkäisessä toiminnossa.
Esimerkki 5: Globaalin muuttujan käyttö sisäkkäisessä toiminnossa
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)
Tuotos on:
Ennen soittopalkkiin soittamista: 20 Soittopalkki nyt Soittopalkin jälkeen: 20 x pääosassa: 25
Edellä olevassa ohjelmassa ilmoitimme globaalin muuttujan sisäkkäisen funktion sisällä bar()
. foo()
Toiminnon sisällä x: llä ei ole vaikutusta yleiseen avainsanaan.
Ennen kutsua ja kutsun bar()
jälkeen muuttuja x ottaa paikallisen muuttujan arvon eli x = 20
. foo()
Funktion ulkopuolella muuttuja x saa bar()
funktiossa määritetyn arvon eli x = 25
. Tämä johtuu siitä, että olemme käyttäneet global
avainsanaa x: ssä luomaan globaalin muuttujan bar()
funktion sisälle (paikallinen laajuus).
Jos teemme muutoksia bar()
funktion sisällä , muutokset näkyvät paikallisen laajuuden ulkopuolella, ts foo()
.