„Python“ visuotiniai, vietiniai ir nešaliniai kintamieji (su pavyzdžiais)

Šioje pamokoje sužinosite apie „Python“ visuotinius kintamuosius, vietinius kintamuosius, vietinius kintamuosius ir kur juos naudoti.

Vaizdo įrašas: „Python“ vietiniai ir visuotiniai kintamieji

Visuotiniai kintamieji

„Python“ kintamasis, deklaruojamas už funkcijos ar pasaulinės apimties ribų, yra žinomas kaip visuotinis kintamasis. Tai reiškia, kad visuotinį kintamąjį galima pasiekti funkcijos viduje arba išorėje.

Pažiūrėkime, kaip „Python“ sukuriamas visuotinis kintamasis.

1 pavyzdys: sukurkite visuotinį kintamąjį

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

Rezultatas

 x viduje: globalus x išorinis: globalus

Pirmiau pateiktame kode sukūrėme x kaip visuotinį kintamąjį ir apibrėžėme a, foo()kad atspausdintume visuotinį kintamąjį x. Galiausiai iškviečiame, foo()kuri atspausdins x vertę.

Ką daryti, jei norite pakeisti x reikšmę funkcijos viduje?

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

Rezultatas

 „UnboundLocalError“: vietinis kintamasis „x“, nurodytas prieš priskyrimą

Išvestyje rodoma klaida, nes „Python“ traktuoja x kaip vietinį kintamąjį, o x taip pat nėra apibrėžtas viduje foo().

Norėdami tai padaryti, mes naudojame globalraktinį žodį. Norėdami sužinoti daugiau, apsilankykite „Python Global Keyword“.

Vietiniai kintamieji

Kintamasis, deklaruotas funkcijos kūne arba lokaliai, yra žinomas kaip vietinis kintamasis.

2 pavyzdys: Vietinio kintamojo pasiekimas už taikymo srities ribų

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

Rezultatas

 „NameError“: vardas „y“ nėra apibrėžtas

Išvestyje rodoma klaida, nes mes bandome pasiekti vietinį kintamąjį y globaliu mastu, o vietinis kintamasis veikia tik viduje foo()arba lokaliai.

Pažiūrėkime pavyzdį, kaip „Python“ sukuriamas vietinis kintamasis.

3 pavyzdys: sukurkite vietinį kintamąjį

Paprastai funkcijoje skelbiame kintamąjį, kad sukurtume vietinį kintamąjį.

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

Rezultatas

 vietinis

Pažvelkime į ankstesnę problemą, kur x buvo visuotinis kintamasis ir mes norėjome modifikuoti x viduje foo().

Visuotiniai ir lokalūs kintamieji

Čia parodysime, kaip naudoti visuotinius ir vietinius kintamuosius tame pačiame kode.

4 pavyzdys: Visuotinių ir vietinių kintamųjų naudojimas tame pačiame kode

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

Rezultatas

 globalus globalus lokalus

Ankstesniame kode mes deklaruojame x kaip visuotinį, o y - kaip vietinį kintamąjį foo(). Tada mes naudojame daugybos operatorių, *kad pakeistume visuotinį kintamąjį x, ir atspausdiname x ir y.

Iškvietus foo(), x reikšmė tampa global globaltodėl, kad mes x * 2spausdinti naudojome du kartus global. Po to atspausdiname vietinio kintamojo y reikšmę local.

5 pavyzdys: visuotinis ir vietinis kintamasis tuo pačiu pavadinimu

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

Rezultatas

 vietinis x: 10 pasaulinis x: 5

Pirmiau pateiktame kode mes naudojome tą patį pavadinimą x ir globaliajam, ir vietiniam kintamajam. Spausdindami tą patį kintamąjį gauname skirtingą rezultatą, nes kintamasis yra deklaruojamas abiem sritimis, ty vietinė foo()ir pasaulinė 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

Pirmiau pateiktame kode yra įdėta inner()funkcija. Mes naudojame nonlocalraktinius žodžius, kad sukurtume vietinį kintamąjį. inner()Funkcija apibrėžta kitos funkcijos taikymo sritį outer().

Pastaba : jei pakeisime ne vietinio kintamojo vertę, pakeitimai pasirodys vietiniame kintamajame.

Įdomios straipsniai...