Пространство имен - это способ реализации области.
В Java (или C) компилятор определяет, где переменная видна при анализе статической области.
В Python каждая функция пакета, модуля, класса, функции и метода владеет «пространством имен», в котором имена переменных разрешены. Кроме того, существует глобальное пространство имен, которое используется, если имя не находится в локальном пространстве имен.
Каждое имя переменной проверяется в локальном пространстве имен (тело функции, модуль и т. Д.), А затем проверяется в глобальном пространстве имен.
Переменные обычно создаются только в локальном пространстве имен. Операторы global
и nonlocal
могут создавать переменные, отличные от локального пространства имен.
Когда функция, функция метода, модуль или пакет оцениваются (то есть начинает выполнение), создается пространство имен. Подумайте об этом как о «контексте оценки». Когда функция или функция метода и т. Д. Завершает выполнение, пространство имен отбрасывается. Переменные отбрасываются. Объекты также могут быть отброшены.