Этот вопрос проверяет знание различных типов областей видимости в Python, а также принцип работы механизма поиска переменных.
В Python существуют четыре области видимости: Local (локальная), Enclosing (внешняя), Global (глобальная) и Built-in (встроенная). Правило LEGB (Local, Enclosing, Global, Built-in) описывает порядок, в котором Python ищет переменные в этих областях.
Python использует систему областей видимости, которая описывается принципом LEGB (Local, Enclosing, Global, Built-in). Это порядок, в котором Python ищет переменную в различных областях видимости:
Local (Локальная область): Переменная ищется сначала в локальной области, т.е. в области текущей функции или метода. Если переменная объявлена внутри функции, Python будет искать ее в этой области.
Enclosing (Внешняя область): Если переменная не найдена в локальной области, Python будет искать ее в области видимости внешней функции, которая может быть вложена в текущую. Это актуально для вложенных функций, где внешняя функция имеет свои переменные.
Global (Глобальная область): Если переменная не найдена ни в локальной, ни в внешней области, Python будет искать ее в глобальной области, то есть в пространстве имен модуля, в котором выполняется код.
Built-in (Встроенная область): Встроенные имена (например, print(), len(), и другие встроенные функции) находятся в этой области. Если переменная не найдена в предыдущих областях, Python будет искать ее среди встроенных объектов.
Пример:
x = 10 # Global
def outer():
x = 20 # Enclosing
def inner():
x = 30 # Local
print(x) # Выведет 30, так как это локальная переменная
inner()
outer()Когда использовать:
Знание областей видимости полезно при работе с переменными и функциями, особенно для понимания, какие переменные доступны и как они ищутся.