Нюансы работы с областями видимости в 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)