Почему считается плохой практикой выполнять тяжёлую или побочную работу (создание соединений, чтение больших файлов) на уровне модуля при импорте? Как лучше организовать подобную инициализацию?
Побочные эффекты при импорте
Ответ 1 / 1
Импорт модулей должен быть по возможности лёгкой операцией. Тяжёлый код при импорте:
- замедляет старт приложения;
- затрудняет тестирование (мокать сложнее);
- создаёт неожиданные сайд-эффекты при любом импорте.
Лучше делать ленивую инициализацию:
- через функции `init()`;
- через ленивые синглтоны;
- в точке входа приложения (например, в `if __name__ == '__main__':`) или `startup`-хуках фреймворка.