Ничто из этого не относится.
Импорт делает две вещи. Во-первых, если запрошенный модуль ранее не был загружен, импорт загружает модуль. Это в основном сводится к созданию новой глобальной области и выполнению кода модуля в этой области для инициализации модуля. Новая глобальная область используется в качестве атрибутов модуля, а также для поиска глобальной переменной для любого кода в модуле.
Во-вторых, импорт связывает любые запрошенные имена. import whatever
привязывает имя whatever
к объекту модуля whatever
. import whatever.thing
также привязывает имя whatever
к объекту модуля whatever
. from whatever import somefunc
ищет атрибут somefunc
на объекте модуля whatever
и связывает имя somefunc
с тем, что найдет поиск атрибута.
Невозможно оптимизировать неиспользуемый импорт, так как загрузка модуля и привязка имени имеют эффекты, на которые может опираться какой-то другой код.