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