Урок 18. Область видимости
До сих пор при разработке скриптов мы не учитывали одну из важных и в тоже время довольно простых деталей: область видимости
.
Разберёмся что это и для чего нужно. Напишем функцию, в которой определим переменную и будем прибавлять к ней значение (5) и возвращать из функции полученную сумму. Затем выведем сумму прибавления этого значения к 10.
# функция добавления к числу нового числа def add_value(val): a = 5 return a + val b = add_value(10) print(b)
Если запустить этот скрипт, мы увидим в терминале число 15.
А теперь попробуем добавить число к переменной (a):
# функция добавления к числу нового числа def add_value(val): a = 5 return a + val b = add_value(a) print(b)
Попробуйте запустить этот скрипт на исполнение. В терминале Вы получите ошибку: NameError: name 'a' isn't defined. Она говорит о том что переменную “а” вы не определили. Хотя она вроде у нас определена в функции add_value
?
Здесь и нужно поговорить об области видимости. Так как переменная определена внутри функции, она “видна” только внутри функции. Как только функция закончилась - переменную больше “не видно” остальной части программы. То же самое касается любых вложенных конструкций.
Например, если объявить переменную внутри цикла, то она “действительна” только в этом цикле. Если в цикл вложено условие, и переменную объявить внутри условия, то переменная будет “видна” только в условной конструкции, но не во всём цикле или программе.
Область видимости имеется практически в любом языке программирования, и определяется почти везде схожими условиями. Тоже самое относится и к объявлению функций и прочих синтаксических конструкций. Область видимости нужно всегда учитывать при написании скриптов.
Запомнить:
- Область видимости - это та область, в которой переменная видна.
- Если переменная объявлена внутри какой-либо конструкции (например, внутри функции) то “видна” она только внутри этой конструкции.
- Избегайте одинаковых названий переменных внутри разных конструкций во избежание путаницы.