Pythonin globaalit, paikalliset ja ei-paikalliset muuttujat (esimerkkien avulla)

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 globalavainsanaa. 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 globalkoska käytimme x * 2tulostaa 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 nonlocalavainsanoja 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.

Mielenkiintoisia artikkeleita...