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

Зачем if __name__ == "__main__"

Вопрос

Что делает блок if __name__ == "__main__": в модуле?

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

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

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

Коротко

Правильный ответ: Выполняет код только при прямом запуске, а не при импорте. У запущенного файла name равен "main", а у импортированного это имя модуля.

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

  1. Выполняет код только при прямом запуске, а не при импортеправильный ответ
  2. Объявляет точку входа, без которой файл нельзя запустить
  3. Ускоряет импорт модуля, пропуская код верхнего уровня
  4. Запрещает импортировать модуль из других файлов

Разбор

У запущенного файла __name__ равен "__main__", а у импортированного это имя модуля. Так один файл служит и библиотекой, и скриптом: тесты или другие модули импортируют функции, не запуская побочный код. Без блока файл тоже запускается, на скорость и права импорта он не влияет.

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

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

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