Nuanțe ale lucrului cu domeniile de vizibilitate în Python
Să luăm în considerare nuanțele importante ale lucrului cu variabile locale și globale.
Să presupunem că avem variabila globală num.
Să creăm o funcție func
care va afișa num globală
în consolă:
num = 1
def func():
print(num)
func() # va afișa 1
Și acum să declarăm num locală
pe linia următoare funcției print. După
executarea codului, în consolă va apărea o eroare.
Acest lucru se întâmplă deoarece Python
în interiorul funcției percepe num
doar ca o variabilă locală, care
încă nu a fost declarată:
num = 1
def func():
print(num) # va afișa eroare
num = 2
Acum să rescriem codul din interiorul funcției
astfel încât valoarea variabilei num
să crească cu 2:
num = 1
def func():
num += 2 # va afișa eroare
Eroarea este cauzată de faptul că expresia num += 2
reprezintă următoarea notație:
num = num + 2
Cu toate acestea, variabila locală în sine, căreia îi este adăugată valoarea, încă nu este declarată. Și, în consecință, Python afișează o eroare, deorece nu se poate adăuga un număr la o valoare inexistentă.
Care va fi rezultatul executării următorului cod:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Care va fi rezultatul executării următorului cod:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Care va fi rezultatul executării următorului cod:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)