Nuansy práce s oblasťami viditeľnosti v Pythone
Pozrime sa na dôležité nuansy práce s lokálnymi a globálnymi premennými.
Majme globálnu premennú num.
Vytvorme funkciu func,
ktorá bude vypisovať globálnu num
do konzoly:
num = 1
def func():
print(num)
func() # vypíše 1
A teraz deklarujme lokálnu num na
riadku pod funkciou print. Po
vykonaní kódu sa do konzoly vypíše chyba.
Deje sa tak preto, že Python
vo vnútri funkcie vníma num
iba ako lokálnu premennú, ktorá
ešte nebola deklarovaná:
num = 1
def func():
print(num) # vypíše chybu
num = 2
Teraz prepíšme kód vo vnútri funkcie
tak, aby sa hodnota premennej num
zvýšila o 2:
num = 1
def func():
num += 2 # vypíše chybu
Chyba je spôsobená tým, že výraz num += 2
predstavuje nasledujúci zápis:
num = num + 2
Avšak samotná lokálna premenná, ku ktorej prichádza k pripočítavaniu, ešte nie je deklarovaná. A teda Python vypisuje chybu, pretože nie je možné pripočítať číslo k neexistujúcej hodnote.
Aký bude výsledok vykonania nasledujúceho kódu:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Aký bude výsledok vykonania nasledujúceho kódu:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Aký bude výsledok vykonania nasledujúceho kódu:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)