Sobes.tech
Back to questions
Junior — Middle
76

Каким образом в Python реализовано хранение переменных и их области видимости?

Companies where asked
Yappy

Answer from AI

sobes.tech AI

В Python переменные хранятся в пространствах имён (namespaces), которые представляют собой словари, сопоставляющие имена с объектами. Области видимости определяются правилами LEGB:

  • Local (локальная) — имена внутри текущей функции или метода.
  • Enclosing (вложенная) — имена во внешних, но не глобальных функциях (замыкания).
  • Global (глобальная) — имена на уровне модуля.
  • Built-in (встроенная) — имена встроенных функций и исключений.

При обращении к переменной Python ищет её последовательно в этих областях. Локальные переменные хранятся в локальном пространстве имён функции, глобальные — в пространстве модуля.

Пример:

x = 10  # глобальная переменная

def func():
    x = 5  # локальная переменная
    print(x)  # выведет 5

func()
print(x)  # выведет 10

Для изменения глобальной переменной внутри функции используется ключевое слово global.