Тесты Пообщаться с GPT Протестировать код
Программирование Аналитика Дизайн Маркетинг Управление проектами
09 Сен 2023
2 мин
1526

Правила области видимости в Python

Пройдите тест, узнайте какой профессии подходите

Область видимости в Python — это часть программы, где пространство имен доступно. Пространство имен — это место, где имена хранятся. Если Python откликается

Область видимости в Python — это часть программы, где пространство имен доступно. Пространство имен — это место, где имена хранятся. Если Python откликается на команду, он проверяет пространство имен для определения того, что означает это имя.

Области видимости отличаются и могут быть вложены друг в друга. Python ищет имена в области видимости, начиная с самой вложенной и заканчивая самой внешней.

Предположим, у нас есть следующий код:

def foo():
    x = 5
    def bar():
        print(x)
    bar()
foo()

Здесь у нас есть две области видимости: одна внутри функции foo() и вторая внутри функции bar(). Оба определения x находятся в области видимости функции foo(). Когда функция bar() вызывается внутри foo(), она смотрит внутрь своей собственной области видимости, чтобы найти определение x, но не находит его. Затем она ищет во внешней области видимости, где находит x.

Python использует четыре области видимости:

  1. L (Local) — внутри функции или класса, где была объявлена переменная.
  2. E (Enclosing) — внутри внешних функций, от ближайшего к дальнему.
  3. G (Global) — на уровне модуля или скрипта.
  4. B (Built-in) — встроенные функции и исключения Python.

Это правило называется LEGB и описывает порядок, в котором Python ищет переменные.

Например, когда функция или класс определяется внутри другой функции, они имеют доступ к области видимости внешней функции. Это известно как замыкание.

Однако, если функция определена внутри класса (метод), она не имеет доступа к пространству имен класса. Функция должна получить ссылку на объект класса для доступа к его атрибутам.

Замыкания и область видимости могут быть сложными для понимания, особенно для новичков в Python. Но с практикой и пониманием основных принципов все становится проще.

Добавить комментарий