Выбор ответа Junior Модули, пакеты и окружения спрашивают часто обновлено
Зачем if __name__ == "__main__"
Вопрос
Что делает блок if __name__ == "__main__": в модуле?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Выполняет код только при прямом запуске, а не при импорте. У запущенного файла name равен "main", а у импортированного это имя модуля.
Варианты ответа
- Выполняет код только при прямом запуске, а не при импортеправильный ответ
- Объявляет точку входа, без которой файл нельзя запустить
- Ускоряет импорт модуля, пропуская код верхнего уровня
- Запрещает импортировать модуль из других файлов
Разбор
У запущенного файла __name__ равен "__main__", а у импортированного это имя модуля. Так один файл служит и библиотекой, и скриптом: тесты или другие модули импортируют функции, не запуская побочный код. Без блока файл тоже запускается, на скорость и права импорта он не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.