Что происходит во время импорта модуля / пакета
Может ли кто-нибудь помочь мне понять, что происходит за кулисами, когда я импортирую модуль в Python? Есть ли какие-либо накладные расходы на память или обработку, связанные с импортом? Или это больше похоже на открытие двери для расширения локального пространства имен? Мне не нужна конкретика, просто общее представление.
Я также надеюсь понять, что происходит при импорте полного пакета, когда нет __init__.py
внутри папки пакета (я думаю, только Python 3+).
Кроме того, что меняется, когда этот пакет импортируется в модуль, который является частью импортируемого пакета? Автоматизирует ли Python__init__.py
в зависимости от того, куда импортируется пакет? Если он действительно делает что-то вроде этого, значит ли это, что на самом деле лучше избегать написания пакета__init__.py
?
Основная причина, по которой я задаю эти вопросы, - это знать, что мне следует и что не следует делать при импорте. Кажется удобным просто импортировать пакет и использовать от него все, что я хочу, не беспокоясь о том, какие именно модули мне нужны. Но я не знаю, какое влияние окажет подобное действие.
Изменить: я просто хотел добавить важную деталь, что все мои модули уже загружены в память.