Python pasauliniai kintamieji yra tie, kurie nėra apibrėžti jokioje funkcijoje ir turi visuotinę apimtį, o Python vietiniai kintamieji yra tie, kurie yra apibrėžti funkcijos viduje, ir jų taikymo sritis apsiriboja tik ta funkcija. Kitaip tariant, galime pasakyti, kad vietiniai kintamieji pasiekiami tik toje funkcijoje, kurioje ji buvo inicijuota, o pasauliniai kintamieji yra pasiekiami visoje programoje ir kiekvienoje funkcijoje.
Python vietiniai kintamieji
Vietiniai Python kintamieji yra tie, kurie inicijuojami funkcijos viduje ir priklauso tik tai konkrečiai funkcijai. Jo negalima pasiekti niekur už funkcijos ribų. Pažiūrėkime, kaip sukurti vietinį kintamąjį.
Vietinių kintamųjų kūrimas Python
Vietinių kintamųjų apibrėžimas ir prieiga prie jų
Python3
def> f():> ># local variable> >s>=> 'I love Geeksforgeeks'> >print>(s)> # Driver code> f()> |
>
>Išvestis
I love Geeksforgeeks>
Ar vietinis kintamasis gali būti naudojamas už funkcijos ribų?
Jei bandysime naudoti šį vietinį kintamąjį už funkcijos ribų, pažiūrėkime, kas nutiks.
Python3
def> f():> > ># local variable> >s>=> 'I love Geeksforgeeks'> >print>(>'Inside Function:'>, s)> # Driver code> f()> print>(s)> |
>
>
Išvestis:
NameError : name 's' is not defined>
Python pasauliniai kintamieji
Tai yra tie, kurie yra apibrėžti už bet kurios funkcijos ribų ir yra pasiekiami visoje programoje, ty kiekvienos funkcijos viduje ir išorėje. Pažiūrėkime, kaip sukurti Python visuotinį kintamąjį.
pilnas papildiklis
Sukurkite visuotinį kintamąjį Python
Python globalių kintamųjų apibrėžimas ir prieiga.
Python3
# This function uses global variable s> def> f():> >print>(>'Inside Function'>, s)> # Global scope> s>=> 'I love Geeksforgeeks'> f()> print>(>'Outside Function'>, s)> |
>
>Išvestis
Inside Function I love Geeksforgeeks Outside Function I love Geeksforgeeks>
Kintamasis s yra apibrėžiamas kaip visuotinis kintamasis ir naudojamas tiek funkcijos viduje, tiek už jos ribų.
Pastaba: Kadangi vietinių nėra, bus naudojama globalių reikšmė, tačiau įsitikinkite, kad tiek vietiniai, tiek globalūs kintamieji turi turėti tą patį pavadinimą.
Kodėl „Python“ naudojame vietinius ir globalius kintamuosius?
O kas, jei yra Python kintamasis tuo pačiu pavadinimu, inicijuotas funkcijoje ir visame pasaulyje? Dabar kyla klausimas, ar lokalus kintamasis turės kokį nors poveikį globaliam kintamajam, ar atvirkščiai, ir kas atsitiks, jei pakeisime kintamojo reikšmę funkcijos f() viduje? Ar tai paveiks ir pasaulius? Mes jį išbandome šioje kodo dalyje:
Pavyzdys
Jei to paties pavadinimo kintamasis taip pat yra apibrėžtas funkcijos srityje, jis išspausdins tik funkcijos viduje pateiktą reikšmę, o ne visuotinę reikšmę.
Python3
# This function has a variable with> # name same as s.> def> f():> >s>=> 'Me too.'> >print>(s)> # Global scope> s>=> 'I love Geeksforgeeks'> f()> print>(s)> |
>
>Išvestis
Me too. I love Geeksforgeeks>
O kas, jei bandytume pakeisti globalaus kintamojo reikšmę funkcijos viduje? Pažiūrėkime tai naudodami toliau pateiktą pavyzdį.
Python3
string.compareto c#
# This function uses global variable s> def> f():> >s>+>=> 'GFG'> >print>(>'Inside Function'>, s)> # Global scope> s>=> 'I love Geeksforgeeks'> f()> |
>
>
Išvestis:
UnboundLocalError : local variable 's' referenced before assignment>
Kad aukščiau pateikta programa veiktų, turime naudoti visuotinį raktinį žodį Python. Pažiūrėkime, kas yra šis visuotinis raktinis žodis.
Pasaulinis raktinis žodis
Mums tereikia naudoti visuotinis raktinis žodis funkcijoje, jei norime atlikti priskyrimus arba pakeisti visuotinį kintamąjį. Global nereikia spausdinti ir pasiekti. Python daro prielaidą, kad mes norime vietinio kintamojo dėl s priskyrimo f(), todėl pirmasis sakinys pateikia klaidos pranešimą. Bet kuris kintamasis, kuris yra pakeistas arba sukurtas funkcijos viduje, yra vietinis, jei jis nebuvo deklaruotas kaip visuotinis kintamasis. Norėdami pasakyti Python, kad norime naudoti visuotinį kintamąjį, turime naudoti raktinį žodį globalus , kaip matyti šiame pavyzdyje:
1 pavyzdys: Naudojant Python visuotinį raktinį žodį
Python3
# This function modifies the global variable 's'> def> f():> >global> s> >s>+>=> ' GFG'> >print>(s)> >s>=> 'Look for Geeksforgeeks Python Section'> >print>(s)> # Global Scope> s>=> 'Python is great!'> f()> print>(s)> |
>
>Išvestis
Python is great! GFG Look for Geeksforgeeks Python Section Look for Geeksforgeeks Python Section>
Dabar neaiškumų nėra.
2 pavyzdys: Naudojant Python globalius ir vietinius kintamuosius
Python3
a>=> 1> # Uses global because there is no local 'a'> def> f():> >print>(>'Inside f() : '>, a)> # Variable 'a' is redefined as a local> def> g():> >a>=> 2> >print>(>'Inside g() : '>, a)> # Uses global keyword to modify global 'a'> def> h():> >global> a> >a>=> 3> >print>(>'Inside h() : '>, a)> # Global scope> print>(>'global : '>, a)> f()> print>(>'global : '>, a)> g()> print>(>'global : '>, a)> h()> print>(>'global : '>, a)> |
>
nepakeičiamas sąrašas
>Išvestis
global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3>
Skirtumas b/w vietinis kintamasis vs. Pasauliniai kintamieji
| Palyginimo pagrindas | Pasaulinis kintamasis | Vietinis kintamasis |
| Apibrėžimas | deklaruojamas už funkcijų ribų | deklaruojamų funkcijų ribose |
| Gyvenimas | Jie sukuriami prasidėjus programos vykdymui ir prarandami, kai programa baigiasi | Jie sukuriami, kai funkcija pradeda vykdyti, ir prarandami, kai funkcija baigiasi |
| Duomenų bendrinimas | Siūlo dalytis duomenimis | Jis nesiūlo duomenų bendrinimo |
| Taikymo sritis | Prieiga prie viso kodo | Galima pasiekti tik funkcijos viduje |
| Reikalingi parametrai | parametrų perdavimas nebūtinas | būtinas parametrų perdavimas |
| Sandėliavimas | Fiksuota vieta, kurią pasirinko kompiliatorius | Jie laikomi ant kamino |
| Vertė | Kai reikšmė pasikeičia, ji atsispindi visame kode | pakeitus kintamąjį, jis neturės įtakos kitoms programos funkcijoms |