Почему вы можете ссылаться на импортированный модуль, используя модуль импорта в Python - PullRequest
0 голосов
/ 09 марта 2010

Я пытаюсь понять, почему на любой импорт можно ссылаться с помощью модуля импорта, например,

#module master.py
import slave

, а затем

>>>import master
>>>print master.slave

дает <module 'slave' from 'C:\Documents and Settings....'>

Какова цель функции? Я вижу, как это может быть полезно в файле __init__.py пакета, но больше ничего. Является ли это побочным эффектом того факта, что каждый импорт добавляется в пространство имен модуля и что пространство имен модуля видно снаружи? Если так, то почему они не сделали исключение для данных, импортированных из других модулей (например, не отображать их как часть пространства имен модуля для других модулей)?

1 Ответ

1 голос
/ 09 марта 2010

Это побочный эффект, но его можно использовать целенаправленно, например, os.py импортирует posixpath или ntpath как path, чтобы создать os.path.

...