Globalne, lokalne in nelokalne spremenljivke Python (z primeri)

V tej vadnici boste izvedeli več o spremenljivkah Python Global, lokalnih spremenljivkah, nelokalnih spremenljivkah in kje jih uporabiti.

Video: Lokalne in globalne spremenljivke Python

Globalne spremenljivke

V Pythonu je spremenljivka, deklarirana zunaj funkcije ali v globalnem obsegu, znana kot globalna spremenljivka. To pomeni, da je do globalne spremenljivke mogoče dostopati znotraj ali zunaj funkcije.

Poglejmo primer, kako se v Pythonu ustvari globalna spremenljivka.

Primer 1: Ustvarite globalno spremenljivko

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

Izhod

 x znotraj: globalno x zunaj: globalno

V zgornji kodi smo ustvarili x kot globalno spremenljivko in definirali a foo()za tiskanje globalne spremenljivke x. Na koncu pokličemo tudi, foo()ki bo natisnil vrednost x.

Kaj če želite spremeniti vrednost x znotraj funkcije?

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

Izhod

 UnboundLocalError: lokalna spremenljivka 'x', navedena pred dodelitvijo

Izhod prikazuje napako, ker Python x obravnava kot lokalno spremenljivko in x tudi ni definiran znotraj foo().

Da bi to delovalo, uporabimo globalključno besedo. Obiščite Python Global Keyword, če želite izvedeti več.

Lokalne spremenljivke

Spremenljivka, deklarirana znotraj telesa funkcije ali v lokalnem obsegu, je znana kot lokalna spremenljivka.

Primer 2: Dostop do lokalne spremenljivke zunaj obsega

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

Izhod

 NameError: ime 'y' ni določeno

Izhod prikazuje napako, ker poskušamo dostopati do lokalne spremenljivke y v globalnem obsegu, medtem ko lokalna spremenljivka deluje samo znotraj foo()ali lokalnega obsega.

Oglejmo si primer, kako se v Pythonu ustvari lokalna spremenljivka.

3. primer: Ustvarite lokalno spremenljivko

Običajno v funkciji deklariramo spremenljivko, da ustvarimo lokalno spremenljivko.

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

Izhod

 lokalno

Oglejmo si prejšnjo težavo, kjer je bil x globalna spremenljivka in smo želeli x spremeniti znotraj foo().

Globalne in lokalne spremenljivke

Tu bomo pokazali, kako uporabljati globalne spremenljivke in lokalne spremenljivke v isti kodi.

Primer 4: Uporaba globalnih in lokalnih spremenljivk v isti kodi

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

Izhod

 globalno globalno lokalno

V zgornji kodi razglasimo x kot globalno in y kot lokalno spremenljivko v foo(). Nato z operatorjem množenja *spremenimo globalno spremenljivko x in izpišemo x in y.

Po klicu foo()znaka x postane, global globalker smo x * 2dvakrat tiskali z global. Po tem izpišemo vrednost lokalne spremenljivke y ie local.

Primer 5: Globalna spremenljivka in lokalna spremenljivka z istim imenom

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

Izhod

 lokalni x: 10 globalni x: 5

V zgornji kodi smo uporabili isto ime x za globalno in lokalno spremenljivko. Ko natisnemo isto spremenljivko, dobimo drugačen rezultat, ker je spremenljivka deklarirana v obeh področjih, tj. V lokalnem obsegu znotraj foo()in v globalnem obsegu zunaj 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

V zgornji kodi je ugnezdena inner()funkcija. Za nonlocalustvarjanje nelokalne spremenljivke uporabljamo ključne besede. inner()Funkcija je opredeljena v okviru druge funkcije outer().

Opomba : Če spremenimo vrednost nelokalne spremenljivke, se spremembe pojavijo v lokalni spremenljivki.

Zanimive Članki...