Область видимости в Python
Для понимания особенностей языка важно разбираться в том, как работает область видимости переменных.
В Python переменная доступна только в той области видимости, внутри которой она создана. Эта область называется областью видимости. Существует несколько видов областей видимости.
Локальная область видимости
Переменная, созданная внутри функции принадлежит локальной области видимости этой функции, другими словами она может использоваться (видна) только внутри этой функции.
Вот пример:
def some_func():
r = 10 # создаем локальную переменную
print(r)
some_func()
print(r) # NameError: name 'r' is not defined - переменная не определена
Функция внутри функции
В примере выше переменная r доступна только внутри той функции, в которой она определена, т.е. не доступна снаружи, но она будет доступна для любой функции, которая находится внутри данной.
Пример:
def some_func():
r = 10 # создаем локальную переменную
def inner_func():
print(r) # функция
inner_func()
some_func()
Глобальная область видимости:
Если переменная создается вне какой либо функции, то такая переменная попадает в глобальную область видимости и становится глобальной.
Глобальные переменные - это переменные доступные в любой области видимости. Посмотрите на пример далее:
r = 10 # создаем глобальную переменную
def some_func():
def inner_func():
print(r) # функция
inner_func()
some_func()
Но использование глобальных переменных может привести к появлению трудно обнаруживаемым ошибкам, в особенности, если одну глобальную переменную изменяют несколько функций.
Поэтому в глобальной области видимости лучше определять неизменяемые переменные - константы, где-то в начале файла.
Именование переменных
Переменная с одним и тем же именем, но в разных областях видимости в Python рассматривается по разному.
Вот пример:
r = 10 # создаем глобальную переменную
def some_func():
def inner_func():
r = 20
print(r) # локальная область видимости, в ней у переменной другое значение
inner_func()
some_func()
Ключевое слово global в Python
Использование ключевого слова global необходимо тогда, есть потребность сделать локальную переменную глобальной.
def some_func():
global r
r = 20
some_func()
print(r)
Также с помощью данного ключевого слова можно изменить значение глобальной переменной из локальной области. Вот как это можно сделать:
r = 30
def some_func():
global r
r = 20 # обращение к глобальной области видимости
some_func()
print(r)
Таким образом знание области видимости в Python важно для понимания более сложных концепций языка.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.