Š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 global
raktinį ž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 global
todėl, kad mes x * 2
spausdinti 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 nonlocal
raktinius ž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.