Specifika práce s oblastmi viditelnosti v Pythonu
Podívejme se na důležité nuance práce s lokálními a globálními proměnnými.
Předpokládejme, že máme globální proměnnou num.
Vytvořme funkci func,
která bude vypisovat globální num
do konzole:
num = 1
def func():
print(num)
func() # vypíše 1
Nyní deklarujme lokální num na
řádku níže pod funkcí print. Po
spuštění kódu se v konzoli objeví chyba.
K tomu dochází proto, že Python
uvnitř funkce vnímá num
pouze jako lokální proměnnou, která
ještě nebyla deklarována:
num = 1
def func():
print(num) # vypíše chybu
num = 2
Nyní přepišme kód uvnitř funkce
tak, aby se hodnota proměnné num
zvýšila o 2:
num = 1
def func():
num += 2 # vypíše chybu
Chyba je způsobena tím, že výraz num += 2
je ekvivalentní následujícímu zápisu:
num = num + 2
Avšak samotná lokální proměnná, ke které dochází k přičítání, ještě nebyla deklarována. A tudíž Python vypisuje chybu, protože nelze přičíst číslo k neexistující hodnotě.
Jaký bude výsledek provedení následujícího kódu:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Jaký bude výsledek provedení následujícího kódu:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Jaký bude výsledek provedení následujícího kódu:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)