




Руководящий комитет Python единогласно одобрил предложение по улучшению языка «PEP 810 — Явный ленивый импорт»
В этом Предложении по улучшению Python (Python Enhancement Proposal, PEP) синтаксис ленивого импорта вводится как явная языковая функция:
Ленивый импорт откладывает загрузку и выполнение модуля до первого использования импортируемого имени, в отличие от обычного импорта, который сразу загружает и выполняет модуль в точке указания импорта.
Позволяя разработчикам отмечать отдельные импортируемые операции как ленивые с помощью явного синтаксиса, программы на Python могут сократить время запуска, потребление памяти и объем ненужной работы. Это особенно полезно для инструментов командной строки, наборов тестов и приложений с большими графами зависимостей.
Это предложение сохраняет полную обратную совместимость: обычные операторы импорта остаются неизменными, а ленивый импорт включается только при явном запросе.
Общепринятое соглашение в коде Python - размещать все импортируемые операции на уровне модуля, обычно в начале файла. Это позволяет избежать повторений, делает зависимости импорта понятными и минимизирует накладные расходы во время выполнения, поскольку оператор импорта вычисляется только один раз для каждого модуля.
Основным недостатком такого подхода является то, что импорт первого модуля для выполнения Python («главного» модуля) часто запускает немедленный каскад импортов и, как ни странно, загружает множество зависимостей, которые могут никогда не понадобиться. Этот эффект особенно дорого обходится для инструментов командной строки с несколькими подкомандами, где даже запуск команды с опцией --help может загрузить десятки ненужных модулей и занять несколько секунд. Этот простой пример демонстрирует, что нужно загрузить только для того, чтобы получить пользователю полезную обратную связь о том, как вообще запустить
Читать на habr.com