Globālie un lokālie mainīgie Python

Python globālie mainīgie ir tie, kas nav definēti nevienā funkcijā un kuriem ir globāla darbības joma, savukārt Python vietējie mainīgie ir tie, kas ir definēti funkcijā, un to darbības joma ir ierobežota tikai ar šo funkciju. Citiem vārdiem sakot, mēs varam teikt, ka vietējie mainīgie ir pieejami tikai tajā funkcijā, kurā tā tika inicializēta, savukārt globālie mainīgie ir pieejami visā programmā un katrā funkcijā.

Python vietējie mainīgie

Vietējie Python mainīgie ir tie, kas tiek inicializēti funkcijā un pieder tikai šai konkrētajai funkcijai. Tam nevar piekļūt nekur ārpus funkcijas. Apskatīsim, kā izveidot vietējo mainīgo.

Vietējo mainīgo izveide programmā Python

Vietējo mainīgo definēšana un piekļuve tiem

Python3




def> f():> > # local variable> > s> => 'I love Geeksforgeeks'> > print> (s)> # Driver code> f()>

Izvade

I love Geeksforgeeks 

Vai lokālo mainīgo var izmantot ārpus funkcijas?

Ja mēs mēģināsim izmantot šo vietējo mainīgo ārpus funkcijas, tad redzēsim, kas notiks.

Python3




def> f():> > > # local variable> > s> => 'I love Geeksforgeeks'> > print> (> 'Inside Function:'> , s)> # Driver code> f()> print> (s)>

Izvade:

 NameError : name 's' is not defined 

Python globālie mainīgie

Tie ir tie, kas ir definēti ārpus jebkuras funkcijas un ir pieejami visā programmā, t.i., katras funkcijas iekšpusē un ārpusē. Apskatīsim, kā izveidot Python globālo mainīgo.

Izveidojiet globālo mainīgo programmā Python

Python globālo mainīgo definēšana un piekļuve tiem.

Python3




# This function uses global variable s> def> f():> > print> (> 'Inside Function'> , s)> # Global scope> s> => 'I love Geeksforgeeks'> f()> print> (> 'Outside Function'> , s)>

Izvade

Inside Function I love Geeksforgeeks Outside Function I love Geeksforgeeks 

Mainīgais s ir definēts kā globālais mainīgais un tiek izmantots gan funkcijā, gan ārpus tās.

Piezīme: Tā kā nav vietējo, tiks izmantota globālo vērtību vērtība, taču pārliecinieties, ka gan lokālajiem, gan globālajiem mainīgajiem ir jābūt vienādam nosaukumam.

Kāpēc Python mēs izmantojam vietējos un globālos mainīgos?

Ko darīt, ja ir Python mainīgais ar tādu pašu nosaukumu, kas inicializēts gan funkcijā, gan globāli? Tagad rodas jautājums, vai lokālajam mainīgajam būs kāda ietekme uz globālo mainīgo vai otrādi, un kas notiks, ja mainīsim mainīgā vērtību funkcijas f() iekšpusē? Vai tas ietekmēs arī globālos? Mēs to pārbaudām šādā koda daļā:

Piemērs

Ja mainīgais ar tādu pašu nosaukumu ir definēts arī funkcijas ietvaros, tas izdrukās tikai funkcijā norādīto vērtību, nevis globālo vērtību.

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)>

Izvade

Me too. I love Geeksforgeeks 

Ko darīt, ja funkcijā mēģinātu mainīt globālā mainīgā vērtību? Apskatīsim to, izmantojot tālāk redzamo piemēru.

Python3




# This function uses global variable s> def> f():> > s> +> => 'GFG'> > print> (> 'Inside Function'> , s)> # Global scope> s> => 'I love Geeksforgeeks'> f()>

Izvade:

 UnboundLocalError : local variable 's' referenced before assignment 

Lai iepriekš minētā programma darbotos, mums Python ir jāizmanto globālais atslēgvārds. Apskatīsim, kas ir šis globālais atslēgvārds.

Globālais atslēgvārds

Mums tikai jāizmanto globālais atslēgvārds funkcijā, ja vēlamies veikt uzdevumus vai mainīt globālo mainīgo. drukāšanai un piekļuvei nav nepieciešams globālais. Python pieņem, ka mēs vēlamies lokālo mainīgo, jo f() ietvaros ir piešķirts s, tāpēc pirmais paziņojums rada kļūdas ziņojumu. Jebkurš mainīgais, kas tiek mainīts vai izveidots funkcijā, ir lokāls, ja tas nav deklarēts kā globāls mainīgais. Lai pateiktu Python, ka mēs vēlamies izmantot globālo mainīgo, mums ir jāizmanto atslēgvārds globāli , kā redzams šajā piemērā:

1. piemērs: Izmantojot Python globālo atslēgvārdu

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)>

Izvade

Python is great! GFG Look for Geeksforgeeks Python Section Look for Geeksforgeeks Python Section 

Tagad nav nekādu neskaidrību.

2. piemērs: Izmantojot Python globālos un lokālos mainīgos

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)>

Izvade

global : 1 Inside f() : 1 global : 1 Inside g() : 2 global : 1 Inside h() : 3 global : 3 

Atšķirība b/w lokālais mainīgais vs. Globālie mainīgie

Salīdzināšanas pamats Globālais mainīgais Vietējais mainīgais
Definīcija deklarēti ārpus funkcijām funkciju ietvaros
Mūžs Tie tiek izveidoti, kad sākas programmas izpilde, un tiek zaudēti, kad programma tiek pabeigta Tie tiek izveidoti, kad funkcija sāk tās izpildi, un tiek zaudēti, kad funkcija beidzas
Datu koplietošana Piedāvā datu koplietošanu Tas nepiedāvā datu koplietošanu
Darbības joma Var piekļūt visā kodā Var piekļūt tikai funkcijas iekšienē
Nepieciešami parametri parametru nodošana nav nepieciešama parametru nodošana ir nepieciešama
Uzglabāšana Fiksēta vieta, ko izvēlējies kompilators Tie tiek turēti uz kaudzes
Vērtība Tiklīdz vērtība mainās, tā tiek atspoguļota visā kodā ja mainīgais ir mainīts, tas neietekmē citas programmas funkcijas