Файл mod3.py определяет единственное глобальное имя и атрибут операцией присваивания:
X = 3
Файл mod2.py определяет свою переменную X, затем импортирует модуль mod3 и спользует квалификацию имени, чтобы получить доступ к атрибуту импортированного модуля:
X = 2
import mod3
print(X, end=’ ‘) # Моя глобальная переменная X
print mod3.X # Глобальная переменная X из модуля mod3
Файл mod1.py также определяет свою собственную переменную X, затем импортирует модуль mod2 и получает значения атрибутов обоих модулей:
X = 1
import mod2
print(X, end=’ ‘) # Моя глобальная переменная X
print(mod2.X, end=’ ‘) # Переменная X из модуля mod2
print(mod2.mod3.X # Переменная X из модуля mod3
В действительности, когда mod1 импортирует mod2, он создает двухуровневое вложение пространств имен. Используя полный путь к имени mod2.mod3.X, он может погрузиться в модуль mod3, который вложен в импортированный модуль mod2. Суть в том, что модуль mod1 может обращаться к переменным X во всех трех файлах и, следовательно, имеет доступ ко всем трем глобальным областям видимости:
% python mod1.py
2 3
1 2 3
Однако обратное утверждение неверно: модуль mod3 не имеет доступа к именам в mod2, а модуль mod2 не имеет доступа к именам в mod1. Возможно, этот пример будет проще понять, если отвлечься от пространств имен и областей видимости и сосредоточиться на объектах, задействованных в примере. mod2 внутри модуля mod1 – это всего лишь имя, которое ссылается на объект с атрибутами, некоторые из которых могут ссылаться на другие объекты с атрибутами (инструкция import выполняет операцию присваивания). Для таких путей, как
mod2.mod3.X, интерпретатор Python выполняет вычисления слева направо, извлекая атрибуты из объектов.
Обратите внимание: в mod1 можно вставить инструкцию import mod2 и затем использовать обращение mod2.mod3.X, но нельзя записать import mod2.mod3 – такой синтаксис используется для операции импортирования пакетов (каталогов), которая будет описана в следующей главе. При импортировании пакетов также создаются вложенные пространства имен, но в этом случае инструкция import воспринимает свой аргумент как дерево каталогов, а не как цепочку модулей.
Автор: Няшный Человек
Дата публикации: 2015-11-11T22:57:00.000+02:00













Обычно проблемы с суставами ассоциируются с пожилым возрастом, и зачастую мы не обращаем внимание на боль или хруст в суставах, полагаясь «на авось». А ведь за их здоровьем надо следить смолоду. Наш скелет в течение жизни выдерживает большие нагрузки, складывающиеся из веса нашего тела и всех тех тяжестей, которые мы на себе носим. Максимальная нагрузка приходится на подвижные части скелета — суставы и позвоночник. Любые травмы, активные занятия спортом, чрезмерная растяжка и упражнения с большим весом в тренажерном зале — все это стачивает суставы и может привести к артриту (воспалению сустава), либо бурситу (воспалению суставной сумки со скоплением в ней жидкости), а в дальнейшем, если вовремя не предпринять необходимые меры, уже и к необратимым последствиям — артрозу (разрастание костной ткани в суставе).