Модули, imports и пакеты
Что это и зачем
Модуль — файл Python с собственной областью имён. Пакет объединяет модули; обычный пакет содержит __init__.py, namespace package может обходиться без него.
Как это работает
import math связывает имя модуля, from math import sqrt связывает отдельный объект. При первом импорте верхний уровень модуля выполняется; последующие обращения обычно используют sys.modules. python -m package.module запускает модуль с корректным контекстом пакета.
import math
print(math.sqrt(16))
Когда применять
Разделяйте код по ответственности. Держите imports в начале файла, используйте явные имена. if __name__ == '__main__' отделяет запуск CLI от импорта библиотечного поведения.
Границы применения
Не используйте import *: он скрывает происхождение имён. Избегайте циклических импортов и тяжёлых побочных эффектов на верхнем уровне. Не называйте свои файлы именами стандартных модулей.
Ошибки и лучшие практики
Путь поиска модулей не равен любой папке компьютера. alias меняет локальное имя, не модуль. Импорт объекта не создаёт автоматическую связь с будущим повторным присваиванием исходного имени.
Понятна идея? Теперь проверим её в действии.