Нюансы работы з абсягамі бачнасці ў Python

Разгледзім важныя нюансы работы з лакальнай і глабальнай зменнымі.

Хай у нас ёсць глабальная зменная num. Давайце створым функцыю func, якая будзе выводзіць глабальную num у кансоль:

pythonnum = 1

def func():
  print(num)

func() # выведзе 1

А цяпер аб'явім лакальную num на радку ніжэй функцыі print. Пасля выканання кода ў кансоль выведзецца памылка. Гэта адбываецца з-за таго, што Python унутры функцыі ўспрымае num толькі як лакальную зменную, якая яшчэ не была аб'яўлена:

pythonnum = 1

def func():
  print(num) # выведзе памылку
  num = 2

Давайце цяпер перапішам код унутры функцыі так, каб значэнне зменнай num павялічылася на 2:

pythonnum = 1

def func():
  num += 2 # выведзе памылку

Памылка выклікана тым, што выраз num += 2 ўяўляе сабой наступную запіс:

pythonnum = num + 2

Аднак сама лакальная зменная, да якой адбываецца дадаванне яшчэ не аб'яўлена. І адпаведна Python выводзіць памылку, паколькі нельга дадаць лік да неіснуючага значэння.

Задание 1

Якім будзе вынік выканання наступнага кода:

pythontst = '12'

def func():
  tst = 12
  return tst
  
print(tst)
Задание 2

Якім будзе вынік выканання наступнага кода:

pythontst = 'abc'

def func():
  tst = tst.upper()
  return tst

func()
print(tst)
Задание 3

Якім будзе вынік выканання наступнага кода:

pythontst = 'abc'

def func():
txt = tst.upper()
return txt
    
print(func())
print(tst)