Nijanse rada sa opsezima vidljivosti u Python-u
Razmotrimo važne nijanse rada sa lokalnim i globalnim promenljivima.
Neka imamo globalnu promenljivu num.
Hajde da kreiramo funkciju func,
koja će ispisivati globalnu num
u konzolu:
num = 1
def func():
print(num)
func() # ispisaće 1
A sada deklarišimo lokalnu num na
liniji ispod funkcije print. Nakon
izvršenja koda u konzolu će se ispisati greška.
Ovo se dešava zbog toga što Python
unutar funkcije percipira num
samo kao lokalnu promenljivu, koja
još nije bila deklarisana:
num = 1
def func():
print(num) # ispisaće grešku
num = 2
Hajde sada da prepišemo kod unutar funkcije
tako da se vrednost promenljive num
uveća za 2:
num = 1
def func():
num += 2 # ispisaće grešku
Greška je izazvana time što izraz num += 2
predstavlja sledeći zapis:
num = num + 2
Međutim, sama lokalna promenljiva, kojoj se vrši dodavanje još uvek nije deklarisana. I shodno tome Python ispisuje grešku, pošto se ne može dodati broj ne postojećoj vrednosti.
Kakav će biti rezultat izvršenja sledećeg koda:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Kakav će biti rezultat izvršenja sledećeg koda:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Kakav će biti rezultat izvršenja sledećeg koda:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)