Нюансы работы з абсягамі бачнасці ў Python
Разгледзім важныя нюансы работы з лакальнай і глабальнай зменнымі.
Хай у нас ёсць глабальная зменная num.
Давайце створым функцыю func,
якая будзе выводзіць глабальную num
у кансоль:
num = 1
def func():
print(num)
func() # выведзе 1
А цяпер аб'явім лакальную num на
радку ніжэй функцыі print. Пасля
выканання кода ў кансоль выведзецца памылка.
Гэта адбываецца з-за таго, што Python
унутры функцыі ўспрымае num
толькі як лакальную зменную, якая
яшчэ не была аб'яўлена:
num = 1
def func():
print(num) # выведзе памылку
num = 2
Давайце цяпер перапішам код унутры функцыі
так, каб значэнне зменнай num
павялічылася на 2:
num = 1
def func():
num += 2 # выведзе памылку
Памылка выклікана тым, што выраз num += 2
ўяўляе сабой наступную запіс:
num = num + 2
Аднак сама лакальная зменная, да якой адбываецца дадаванне яшчэ не аб'яўлена. І адпаведна Python выводзіць памылку, паколькі нельга дадаць лік да неіснуючага значэння.
Якім будзе вынік выканання наступнага кода:
tst = '12'
def func():
tst = 12
return tst
print(tst)
Якім будзе вынік выканання наступнага кода:
tst = 'abc'
def func():
tst = tst.upper()
return tst
func()
print(tst)
Якім будзе вынік выканання наступнага кода:
tst = 'abc'
def func():
txt = tst.upper()
return txt
print(func())
print(tst)