Автор оригинала: Pankaj Kumar.
Пространство имен Python и разрешение переменной массы (legb)
В этом руководстве мы узнаем о пространстве имен Python, объем переменной и правила для разрешения переменной области.
Что такое пространство имен Python?
Пространства имен Python – это контейнеры для имен отображений объектам. В Python все – это объект, и мы указываем имя на объект, чтобы мы могли получить доступ к ней позже.
Вы можете подумать о пространстве имен в качестве словаря пар клавишных пар, где ключ – имя переменной, а значение – это объект, связанный с ним.
namespace = {"name1":object1, "name2":object2}
В Python несколько независимых пространств имен могут существовать одновременно. Имена переменной могут быть использованы в этих пространствах имен.
function_namespace = {"name1":object1, "name2":object2} for_loop_namespace = {"name1":object3, "name2":object4}
Давайте посмотрим на простой пример, где у нас есть несколько пространств имен.
Типы пространства и имен Python
Пространства имен Python можно разделить на четыре типа.
- Местное пространство имен : Функция, для петли, попробуйте за исключением блока – некоторые примеры локального пространства имен. Локальное пространство имен удаляется, когда функция или блок кода завершают его выполнение.
- Закрытое пространство имен : Когда функция определяется внутри функции, она создает закрытое пространство имен. Его жизненный цикл такой же, как локальное пространство имен.
- Глобальное пространство имен : Он относится к сценарию Python или текущий модуль. Глобальное пространство имен для модуля создается при чтении определения модуля. Как правило, пространства имен модуля также длится до конца переводчика.
- Встроенное пространство имен : Встроенное пространство имен создается, когда интерпретатор Python запускается, и он никогда не удаляется.
Python переменная спецификация
Практическая область Python определяет иерархию, в которой мы ищем перемему. Например, в вышеуказанной программе переменные присутствуют в различных пространствах имен. Когда мы хотим получить доступ к значению переменной по его названию, он ищет в иерархии пространства имен.
Правила разрешения варианта варианта Python (legb)
Переменные Python ищут в следующем порядке пространств имен.
Local -> Enclosed -> Global -> Built-in
Это также называется правилом Legb для разрешения переменной области.
Если имя не найдено в иерархии пространства имен, NameError Поднялся.
Когда мы создаем объект или импорт модуля, мы создаем отдельное пространство имен для них. Мы можем получить доступ к их переменным с использованием оператора DOT.
>>> import math >>> >>> import numpy >>> >>> print(math.pi) 3.141592653589793 >>> print(numpy.pi) 3.141592653589793 >>> >>> obj = object() >>> print(obj.__doc__) The most base type >>>
Давайте посмотрим на пример разрешения переменной области с участием всех пространств имен.
x = 10 print(f'x is {x}') def outer(): x = 20 print(f'x is {x}') def inner(): x = 30 print(f'x is {x}') print(len("abc")) inner() outer()
Заключение
Важно понимать, как работает пространство имен Python и вариабельное разрешение. Это не хорошая идея, чтобы использовать те же имена переменной в разных пространствах имен, потому что она создает путаницу. Он также может привести к повреждению данных, если переменная от локальной области удалена, и она присутствует в более высоких пространствах имен.