Выбор ответа Junior Модули, пакеты и окружения спрашивают часто обновлено

Сколько раз выполняется код модуля

Вопрос

Модуль config импортируют из десяти разных файлов одного процесса. Сколько раз выполнится его код верхнего уровня?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Один раз: дальше модуль берётся из sys.modules. При первом импорте Python выполняет код модуля и кладёт объект в sys.modules.

Варианты ответа

  1. Десять раз, по разу на каждый import
  2. Ни разу, пока не обратились к атрибуту модуля
  3. Один раз: дальше модуль берётся из sys.modulesправильный ответ
  4. Зависит от того, абсолютный импорт или относительный

Разбор

При первом импорте Python выполняет код модуля и кладёт объект в sys.modules. Все следующие import просто возвращают этот объект. Поэтому модуль годится как простой синглтон. Ленивой загрузки по обращению к атрибуту по умолчанию нет, а вид импорта на кеширование не влияет.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме