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 |