logo

Visuotiniai ir vietiniai kintamieji Python

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