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ē.
Pythondef 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ē.
Pythonmsg = '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.
Pythondef 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)
Pythondef 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)
Pythons = '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
Pythona = 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īcija | Deklarēts ārpus funkcijām | Deklarēts funkciju iekšpusē |
| Mūžs | Izveidots, kad programma sākas un iznīcina, kad tā beidzas | Izveidots, kad funkciju sauc un iznīcina, kad tā atgriežas |
| Datu apmaiņa | Koplieto visās funkcijās | Nav dalīts; pastāv tikai tās funkcijas ietvaros |
| Apjoms | Var piekļūt jebkur programmā | Piekļuve tikai funkcijas iekšienē |
| Nepieciešami parametri | Nav nepieciešams parametru nodošana | Var izveidot, izmantojot parametrus vai uzdevumus funkcijas iekšpusē |
| Uzglabāšana | Pārvaldīts globālajā nosaukumvietā (nav fiksēta atmiņas atrašanās vieta) | Glabā funkcijas vietējā nosaukumvietā (kaudzes rāmis) |
| Novērtēt | Izmaiņas ietekmē visu programmu | Izmaiņas ir vietējas un neietekmē citas funkcijas |