Tässä opetusohjelmassa opit Pythonin globaaleista muuttujista, paikallisista muuttujista, ei-paikallisista muuttujista ja siitä, missä niitä käytetään.
Video: Pythonin paikalliset ja globaalit muuttujat
Globaalit muuttujat
Pythonissa funktion ulkopuolella tai maailmanlaajuisesti ilmoitettu muuttuja tunnetaan globaalina muuttujana. Tämä tarkoittaa, että globaaliin muuttujaan pääsee toiminnon sisällä tai ulkopuolella.
Katsotaanpa esimerkki siitä, kuinka globaali muuttuja luodaan Pythonissa.
Esimerkki 1: Luo globaali muuttuja
x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)
Tuotos
x sisällä: globaali x ulkopuolella: globaali
Yllä olevassa koodissa luotiin x globaalina muuttujana ja määriteltiin a foo()
tulostamaan globaali muuttuja x. Lopuksi kutsumme foo()
joka tulostaa x: n arvon.
Entä jos haluat muuttaa x: n arvoa funktion sisällä?
x = "global" def foo(): x = x * 2 print(x) foo()
Tuotos
UnboundLocalError: paikallinen muuttuja 'x' viitattu ennen tehtävää
Lähdössä näkyy virhe, koska Python käsittelee x: ää paikallisena muuttujana ja x: ää ei myöskään ole määritelty sisällä foo()
.
Jotta tämä toimisi, käytämme global
avainsanaa. Vieraile Python Global Keyword -sivustolla saadaksesi lisätietoja.
Paikalliset muuttujat
Muuttuja, joka on ilmoitettu funktion rungon sisällä tai paikallisesti, tunnetaan paikallisena muuttujana.
Esimerkki 2: Pääsy paikallisen muuttujan soveltamisalan ulkopuolelle
def foo(): y = "local" foo() print(y)
Tuotos
NameError: nimeä 'y' ei ole määritelty
Lähdössä näkyy virhe, koska yritämme käyttää paikallista muuttujaa y globaalissa laajuudessa, kun taas paikallinen muuttuja toimii vain sisällä foo()
tai paikallisesti.
Katsotaanpa esimerkki siitä, kuinka paikallinen muuttuja luodaan Pythonissa.
Esimerkki 3: Luo paikallinen muuttuja
Normaalisti ilmoitamme muuttujan funktion sisällä luomaan paikallisen muuttujan.
def foo(): y = "local" print(y) foo()
Tuotos
paikallinen
Katsotaanpa aikaisempaa ongelmaa, jossa x oli globaali muuttuja ja halusimme muokata x: ää sisällä foo()
.
Globaalit ja paikalliset muuttujat
Tässä näytetään, kuinka globaaleja muuttujia ja paikallisia muuttujia käytetään samassa koodissa.
Esimerkki 4: Yleisten ja paikallisten muuttujien käyttäminen samassa koodissa
x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()
Tuotos
globaali globaali paikallinen
Yllä olevassa koodissa julistetaan x globaaliksi ja y paikalliseksi muuttujaksi foo()
. Sitten käytämme kertolaskuoperaattoria *
globaalin muuttujan x muokkaamiseen ja tulostamme sekä x että y.
Soittamisen jälkeen foo()
x: n arvoksi tulee, global global
koska käytimme x * 2
tulostaa kaksi kertaa global
. Sen jälkeen tulostetaan paikallisen muuttujan y arvo local
.
Esimerkki 5: Yleinen muuttuja ja Paikallinen muuttuja samalla nimellä
x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)
Tuotos
paikallinen x: 10 globaali x: 5
Yllä olevassa koodissa käytimme samaa nimeä x sekä globaalille muuttujalle että paikalliselle muuttujalle. Saamme toisen tuloksen, kun tulostamme saman muuttujan, koska muuttuja ilmoitetaan molemmilla laajuuksilla, eli paikallinen laajuus sisäpuolella foo()
ja globaali ulottuvuus ulkopuolella foo()
.
When we print the variable inside foo()
it outputs local x: 10
. This is called the local scope of the variable.
Similarly, when we print the variable outside the foo()
, it outputs global x: 5. This is called the global scope of the variable.
Nonlocal Variables
Nonlocal variables are used in nested functions whose local scope is not defined. This means that the variable can be neither in the local nor the global scope.
Let's see an example of how a nonlocal variable is used in Python.
We use nonlocal
keywords to create nonlocal variables.
Example 6: Create a nonlocal variable
def outer(): x = "local" def inner(): nonlocal x x = "nonlocal" print("inner:", x) inner() print("outer:", x) outer()
Output
inner: nonlocal outer: nonlocal
Yllä olevassa koodissa on sisäkkäinen inner()
toiminto. Käytämme nonlocal
avainsanoja ei-paikallisen muuttujan luomiseen. inner()
Toiminto on määritelty soveltamisalaan toisen toiminnon outer()
.
Huomaa : Jos muutamme ei-paikallisen muuttujan arvoa, muutokset näkyvät paikallisessa muuttujassa.