Pythoni globaalsed, lokaalsed ja mittekohalikud muutujad (koos näidetega)

Selles õpetuses saate teada Pythoni globaalsete muutujate, kohalike muutujate, mittekohalike muutujate ja nende kasutamise kohta.

Video: Pythoni lokaalsed ja globaalsed muutujad

Globaalsed muutujad

Pythonis tuntakse väljaspool funktsiooni või globaalses ulatuses deklareeritud muutujat globaalse muutujana. See tähendab, et globaalsele muutujale pääseb juurde funktsiooni sees või väljaspool.

Vaatame näidet, kuidas Pythonis luuakse globaalne muutuja.

Näide 1: looge globaalne muutuja

 x = "global" def foo(): print("x inside:", x) foo() print("x outside:", x)

Väljund

 x sees: globaalne x väljaspool: globaalne

Ülaltoodud koodis lõime x globaalse muutujana ja määratlesime foo()globaalse muutuja x printimiseks a . Lõpuks kutsume selle, foo()mis prindib x väärtuse.

Mis siis, kui soovite funktsiooni sees muuta x väärtust?

 x = "global" def foo(): x = x * 2 print(x) foo()

Väljund

 UnboundLocalError: kohalik muutuja 'x' on viidatud enne määramist

Väljund näitab viga, kuna Python käsitleb x-i kohaliku muutujana ja ka x pole sees määratletud foo().

Selle toimimiseks kasutame globalmärksõna. Lisateabe saamiseks külastage Pythoni globaalset märksõna.

Kohalikud muutujad

Funktsiooni kehas või kohalikus ulatuses deklareeritud muutujat nimetatakse lokaalseks muutujaks.

Näide 2: Juurdepääs kohalikule muutujale väljaspool reguleerimisala

 def foo(): y = "local" foo() print(y)

Väljund

 NameError: nimi 'y' pole määratletud

Väljundis on viga, sest proovime pääseda lokaalsele muutujale y globaalses ulatuses, samas kui lokaalne muutuja töötab ainult sees foo()või kohalikus ulatuses.

Vaatame näidet selle kohta, kuidas Pythonis luuakse kohalik muutuja.

Näide 3: looge kohalik muutuja

Tavaliselt deklareerime muutuja funktsiooni sees kohaliku muutuja loomiseks.

 def foo(): y = "local" print(y) foo()

Väljund

 kohalik

Heidame pilgu varasemale probleemile, kus x oli globaalne muutuja ja me soovisime x-i sees muuta foo().

Globaalsed ja lokaalsed muutujad

Siin näitame, kuidas kasutada globaalseid muutujaid ja lokaalseid muutujaid samas koodis.

Näide 4: globaalsete ja kohalike muutujate kasutamine samas koodis

 x = "global " def foo(): global x y = "local" x = x * 2 print(x) print(y) foo()

Väljund

 globaalne globaalne kohalik

Ülaltoodud koodis deklareerime x-is globaalse ja y kohaliku muutujana foo(). Seejärel kasutame *globaalse muutuja x muutmiseks korrutamisoperaatorit ja printime nii x kui ka y.

Pärast helistamist foo()saab x väärtuseks, global globalkuna me kasutasime x * 2printimiseks kaks korda global. Pärast seda trükime kohaliku muutuja y väärtuse local.

Näide 5: globaalne muutuja ja lokaalne muutuja sama nimega

 x = 5 def foo(): x = 10 print("local x:", x) foo() print("global x:", x)

Väljund

 kohalik x: 10 globaalne x: 5

Ülaltoodud koodis kasutasime sama nime x nii globaalse kui ka kohaliku muutuja jaoks. Sama muutuja printimisel saame erineva tulemuse, kuna muutuja deklareeritakse mõlemas ulatuses, st kohalik foo()ulatus väljaspool ja globaalne ulatus väljaspool 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

Ülaltoodud koodis on pesastatud inner()funktsioon. nonlocalMittekohalise muutuja loomiseks kasutame märksõnu. inner()Funktsiooniks on määratletud ulatust teine funktsioon outer().

Märkus . Kui muudame mittekohaliku muutuja väärtust, ilmuvad muudatused lokaalsesse muutujasse.

Huvitavad Artiklid...