logo

Globālie un vietējie mainīgie Python

Python mainīgajiem ir galvenā loma datu glabāšanā un pārvaldībā. Viņu uzvedība un pieejamība ir atkarīga no tā, kur viņi tiek definēti programmā. Šajā rakstā mēs izpētīsim globālos un vietējos mainīgos, kā tie darbojas, un parastie scenāriji ar piemēriem.

Vietējie mainīgie

Vietējie mainīgie tiek izveidoti funkcijas iekšpusē un pastāv tikai tās izpildes laikā. Viņiem nevar piekļūt no funkcijas ārpuses.



java skursteņi

1. piemērs: Šajā kodā mēs veidojam un piekļūstam vietējam mainīgajam funkcijas iekšpusē.

Python
def greet(): msg = 'Hello from inside the function!' print(msg) greet() 

Izvade
Hello from inside the function! 

Paskaidrojums: Mēs definējam sveiciens () ar vietējo mainīgo MSG un izdrukājiet to. Tā kā MSG pastāv tikai funkcijas izpildes laikā, tai ir pieejama funkcija. Izsaukšana sveiciens () Parāda ziņojumu.

2. piemērs : Šajā piemērā mēs veidojam vietējo mainīgo funkcijas iekšpusē un pēc tam mēģinām piekļūt tam ārpus funkcijas, kas izraisa kļūdu.



Python
def greet(): msg = 'Hello!' print('Inside function:' msg) greet() print('Outside function:' msg) 

Izvade

Traceback (pēdējais zvans pēdējais):
Fails '/home/guest/sandbox/solution.py' līnija 6
drukāt ('ārējā funkcija:' MSG)
NameError: nosaukums “msg” nav definēts

Paskaidrojums: MSG ir vietējais mainīgais iekšpusē sveiciens () un var piekļūt tikai tur. Drukāšana ārpus tās rada kļūdu, jo tā neeksistē visā pasaulē.



Globālie mainīgie

Globālie mainīgie tiek deklarēti ārpus visām funkcijām, un tiem var piekļūt jebkur programmā, ieskaitot iekšējās funkcijas.

Šajā piemērā mēs izveidojam globālu mainīgo un pēc tam piekļūstam tam gan iekšpusē, gan ārpusē.

Python
msg = 'Python is awesome!' def display(): print('Inside function:' msg) display() print('Outside function:' msg) 

Izvade
Inside function: Python is awesome! Outside function: Python is awesome! 

Paskaidrojums: MSG ir globāls mainīgais, kas ir pieejams gan iekšpusē, gan ārpusē displejs () funkcija. Izsaukšana displejs () izdrukā globālo MSG un drukāšana MSG Ārpus funkcijas darbojas, kā paredzēts.

Piezīme: Ja mainīgais nav atrodams funkcijas (vietējā darbības jomā) python iekšpusē, to automātiski meklē globālā mērogā. Tomēr, ja vietējam mainīgajam ir tāds pats nosaukums kā globālam, tas šajā funkcijā ēnos globālo mainīgo.

Vietējo un globālo mainīgo izmantošana

Ja mainīgais tiek definēts gan globālā, gan lokāli ar tādu pašu nosaukumu, vietējais mainīgais ēnas ir globālais mainīgais funkcijas iekšpusē. Vietējā mainīgā izmaiņas neietekmē globālo mainīgo, ja vien jūs skaidri nepaziņojat par mainīgo kā globālu.

Python
def fun(): s = 'Me too.' print(s) s = 'I love Geeksforgeeks' fun() print(s) 

Izvade
Me too. I love Geeksforgeeks 

Paskaidrojums: Iekšpuse jautri () s ir vietējais mainīgais, kas iestatīts arī uz “mani”. un izdrukas, kas vērtē. Ārpus globālās s paliek “es mīlu geeksforgeeks”, tāpēc drukāšana s Pēc tam parāda globālo vērtību.

Globālo mainīgo modificēšana funkcijas iekšpusē

Pēc noklusējuma nevar modificēt globālo mainīgo funkcijā, nepaziņojot to par globālu. Ja jūs mēģināt, Python radīs kļūdu, jo tas mainās kā lokāls. Lai modificētu globālo mainīgo izmantošanu Globālais atslēgvārds Apvidū

Bez globāla (cēloņu kļūda)

Python
def fun(): s += ' GFG' # Error: Python thinks s is local print(s) s = 'I love GeeksforGeeks' fun() 

Izvade

NeboundlocalError: Vietējais mainīgais ', uz kuru atsaucas pirms norīkošanas

Paskaidrojums: Inside Fun () Python pieņem, ka S ir vietējie, jo mēs cenšamies to modificēt. Bet pirms šīs līnijas nav vietējo S, tāpēc rodas kļūda.

Ar globālu (darbojas pareizi)

Python
s = 'Python is great!' def fun(): global s s += ' GFG' # Modify global variable print(s) s = 'Look for GeeksforGeeks Python Section' # Reassign global print(s) fun() print(s) 

Izvade
Python is great! GFG Look for GeeksforGeeks Python Section Look for GeeksforGeeks Python Section 

Paskaidrojums:

  • Deklarējot S par globālo, Python izmanto mainīgo no globālās darbības jomas.
  • Funkcija vispirms pievieno “GFG”, pēc tam pārnessp.
  • Izmaiņas pastāv ārpus funkcijas.

Globālais vs vietējais ar tādu pašu vārdu

Python
a = 1 # Global variable def f(): print('f():' a) # Uses global a def g(): a = 2 # Local shadows global print('g():' a) def h(): global a a = 3 # Modifies global a print('h():' a) print('global:' a) f() print('global:' a) g() print('global:' a) h() print('global:' a) 

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

Paskaidrojums:

  • f () izdrukā globālu a, to nemainot.
  • g () rada vietējo A atstājošu globālu neskartu.
  • h () paziņo par globālu un to modificē.

Vietējais mainīgais salīdzinājumā ar globālo mainīgo

Salīdzināšanas bāze Globālais mainīgais Vietējais mainīgais
DefinīcijaDeklarēts ārpus funkcijāmDeklarēts funkciju iekšpusē
MūžsIzveidots, kad programma sākas un iznīcina, kad tā beidzasIzveidots, kad funkciju sauc un iznīcina, kad tā atgriežas
Datu apmaiņaKoplieto visās funkcijāsNav dalīts; pastāv tikai tās funkcijas ietvaros
ApjomsVar piekļūt jebkur programmāPiekļuve tikai funkcijas iekšienē
Nepieciešami parametriNav nepieciešams parametru nodošanaVar izveidot, izmantojot parametrus vai uzdevumus funkcijas iekšpusē
UzglabāšanaPārvaldīts globālajā nosaukumvietā (nav fiksēta atmiņas atrašanās vieta)Glabā funkcijas vietējā nosaukumvietā (kaudzes rāmis)
NovērtētIzmaiņas ietekmē visu programmuIzmaiņas ir vietējas un neietekmē citas funkcijas