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