Šajā rakstā uzzināsiet par globālo atslēgvārdu, globālo mainīgo un to, kad jāizmanto globālie atslēgvārdi.
Pirms lasāt šo rakstu, pārliecinieties, ka esat ieguvis dažus Python globālo, vietējo un lokālo mainīgo pamatus.
Kāds ir globālais atslēgvārds
Programmā Python global
atslēgvārds ļauj mainīt mainīgo ārpus pašreizējās darbības jomas. To izmanto, lai izveidotu globālu mainīgo un veiktu izmaiņas mainīgajā lokālā kontekstā.
Globālā atslēgvārda noteikumi
global
Atslēgvārda pamatnoteikumi Python ir šādi:
- Kad mēs izveidojam mainīgo funkcijas iekšpusē, tas pēc noklusējuma ir lokāls.
- Kad mēs definējam mainīgo ārpus funkcijas, pēc noklusējuma tas ir globāls. Jums nav jāizmanto
global
atslēgvārds. - Mēs izmantojam
global
atslēgvārdu, lai lasītu un rakstītu globālo mainīgo funkcijas iekšpusē. - Izmantot
global
atslēgvārda ārpus funkcija neietekmē.
Globālā atslēgvārda izmantošana
Ņemsim piemēru.
1. piemērs: Piekļuve globālajam mainīgajam no funkcijas iekšienes
c = 1 # global variable def add(): print(c) add()
Kad mēs palaidīsim iepriekš minēto programmu, izeja būs:
1
Tomēr mums var būt daži scenāriji, kad mums ir jāmaina globālais mainīgais no funkcijas iekšpuses.
2. piemērs: Globālā mainīgā modificēšana no funkcijas iekšienes
c = 1 # global variable def add(): c = c + 2 # increment c by 2 print(c) add()
Palaižot iepriekš minēto programmu, izvadē tiek parādīta kļūda:
UnboundLocalError: vietējais mainīgais 'c', uz kuru atsauce ir piešķirta pirms piešķiršanas
Tas ir tāpēc, ka mēs varam piekļūt tikai globālajam mainīgajam, bet nevaram to modificēt no funkcijas iekšpuses.
Risinājums tam ir global
atslēgvārda izmantošana.
3. piemērs: Globālā mainīgā mainīšana no funkcijas iekšpuses, izmantojot globālo
c = 0 # global variable def add(): global c c = c + 2 # increment by 2 print("Inside add():", c) add() print("In main:", c)
Kad mēs palaidīsim iepriekš minēto programmu, izeja būs:
Iekšpusē pievienot (): 2 Galvenais: 2
Iepriekš minētajā programmā mēs definējam c kā globālu atslēgvārdu add()
funkcijas iekšpusē .
Tad mēs palielinām mainīgo c ar 1
, ti c = c + 2
. Pēc tam mēs izsaucam add()
funkciju. Visbeidzot, mēs izdrukājam globālo mainīgo c.
Kā redzam, izmaiņas notika arī globālajā mainīgajā ārpus funkcijas c = 2
,.
Globālie mainīgie visā Python moduļos
Programmā Python mēs izveidojam vienu moduli, config.py
lai glabātu globālos mainīgos un koplietotu informāciju visos Python moduļos vienā un tajā pašā programmā.
Lūk, kā mēs varam koplietot globālos mainīgos visos pitona moduļos.
4. piemērs: koplietojiet globālu mainīgo visā Python moduļos
Izveidojiet config.py
failu globālo mainīgo glabāšanai
a = 0 b = "empty"
Izveidojiet update.py
failu, lai mainītu globālos mainīgos
import config config.a = 10 config.b = "alphabet"
Izveidojiet main.py
failu, lai pārbaudītu vērtības izmaiņas
import config import update print(config.a) print(config.b)
Kad palaidīsim main.py
failu, izeja būs
10 alfabēts
Ar iepriekš minēto, mēs esam izveidojuši trīs faili: config.py
, update.py
, un main.py
.
Modulis config.py
glabā globālos mainīgos a un b. Šajā update.py
failā, mēs importēt config.py
moduli un mainīt vērtības a un b. Līdzīgi, jo main.py
failu, mēs importējam abi config.py
un update.py
moduli. Visbeidzot, mēs izdrukājam un pārbaudām globālo mainīgo vērtības neatkarīgi no tā, vai tās tiek mainītas vai nē.
Globālas ligzdotās funkcijas
Lūk, kā ligzdotajā funkcijā var izmantot globālo mainīgo.
5. piemērs: Globālā mainīgā izmantošana ligzdotajā funkcijā
def foo(): x = 20 def bar(): global x x = 25 print("Before calling bar: ", x) print("Calling bar now") bar() print("After calling bar: ", x) foo() print("x in main: ", x)
Rezultāts ir:
Pirms zvana joslas: 20 Zvana josla tūlīt Pēc zvana joslas: 20 x galvenajā: 25
Iepriekš minētajā programmā mēs ligzdotās funkcijas ietvaros paziņojām par globālo mainīgo bar()
. foo()
Funkcijas iekšpusē x nav globālā atslēgvārda ietekmes.
Pirms un pēc izsaukšanas bar()
mainīgais x ņem vietējā mainīgā vērtību, ti x = 20
. Ārpus foo()
funkcijas mainīgais x iegūs vērtību, kas definēta bar()
funkcijā, ti x = 25
. Tas ir tāpēc, ka mēs esam izmantojuši global
atslēgvārdu x, lai izveidotu globālo mainīgo bar()
funkcijas iekšpusē (lokālais tvērums).
Ja mēs veicam kādas izmaiņas bar()
funkcijas iekšpusē , izmaiņas parādās ārpus lokālās darbības jomas, ti foo()
.