Python Tutorial - Namescape и Scope

  1. Имя на Python
  2. Пространство имен в Python
  3. Переменная Область на Python
  4. Использование Scope и Namespace на Python

В этом разделе вы познакомитесь с пространством имён и областью действия переменной при программировании на языке Python.

Имя на Python

Имя на Python - это идентификатор, присвоенный объекту. Python - объектно-ориентированный язык программирования, что означает, что на Python всё является объектом, а имена используются для доступа к объектам.

Например, когда вы присваиваете значение переменной x = 3. Здесь 3 является объектом и хранится в ячейке памяти (RAM). Эта ячейка памяти является именованной, к которой можно получить доступ по имени x. Адрес этого объекта (3) можно получить с помощью встроенной функции id().

x = 3
print('id(3) =', id(3))
print('id(x) =', id(x))
id(3) = 1864160336
id(x) = 1864160336

Теперь здесь объект 3 хранится в ячейке, имя которой x и, следовательно, адрес обоих одинаковый.

Когда вы присваиваете значение x какой-нибудь другой переменной, скажем y и меняете значение x, то x будет иметь новое местоположение и y будет иметь местоположение предыдущего x. Это показано ниже:

x = 3
print('id(x) =', id(x))
x = 4
print('id(4) =', id(4))
print('id(x) =', id(x))
y = 3
print('id(y) =', id(y))
id(x) = 1864160336
id(4) = 1864160352
id(x) = 1864160352
id(y) = 1864160336

Вы можете увидеть здесь, что адрес y совпадает с адресом старого x.

Пространство имен в Python

Пространство имён - это набор имён. Пространство имён - это отображение имени объекта и реализовано в виде словаря на Python. Пространства имен обеспечивают уникальность каждого имени, используемого в программе.

Пространства имен создаются при запуске интерпретатора, удаляются при завершении выполнения программы. Это пространство имён содержит все встроенные имена, поэтому всякий раз, когда Вам понадобится встроенная функция, например id(), Вы можете использовать её непосредственно в Вашей программе.

Когда вы вызываете функцию, создаётся локальное пространство имён, содержащее все определённые имена.

Переменная Область на Python

Когда вы создаете переменную в своей программе, вы можете не иметь доступа к этой переменной из каждой части программы. Это связано с объемом переменных. Вы пытаетесь получить доступ к переменным из пространства имен, где они не определены.

Область видимости может быть определена как место, откуда вы можете получить доступ к вашему пространству имён без префикса.

Область может быть классифицирована как:

  1. Область действия функции, в которой у вас есть локальные имена.
  2. Сфера действия модуля, в котором у вас есть глобальные переменные.
  3. Внешняя область, где у вас есть встроенные имена.

Когда вы создаете ссылку внутри функции, поиск сначала выполняется в локальном пространстве имён, а затем в глобальном пространстве имён; если она нигде не найдена, то поиск выполняется во встроенном пространстве имён.

При создании вложенной функции у вас будет новая область видимости внутри локального пространства имен.

Использование Scope и Namespace на Python

def outer():
    x = 12
    def inner():
        y = 13
z = 14

Здесь определяется вложенная функция (функция внутри другой функции). Переменная y находится во вложенном локальном пространстве имён внутренней функции, переменная x - в локальном пространстве имён внешней функции, а переменная z - в глобальном пространстве имён.

Когда она находится внутри внутренней функции, переменная y является локальной, x - нелокальной и z - глобальной. Внутренняя функция не имеет доступа к нелокальным x и глобальным z переменным.

comments powered by Disqus