Для чего нужно условие if __name__ == "__main__"?

Условие if __name__ == "__main__" позволяет отделить код, который должен выполняться только при запуске файла как программы, от кода, который должен выполняться и при импорте модуля. При импорте переменная __name__ содержит имя модуля, а при прямом запуске — строку "__main__".
Подробный ответ

В каждом Python‑файле есть служебная переменная __name__, которая говорит, как этот файл был загружен. Если файл запущен напрямую как скрипт (python script.py), то __name__ в нём равно строке "__main__". Если же файл импортирован как модуль, то __name__ равно имени модуля (например, "myapp.utils").

Зачем нужно if __name__ == "__main__"

Конструкция:

def main():
    print("Запуск основной логики")

if __name__ == "__main__":
    main()

обозначает блок кода, который должен выполняться только при прямом запуске файла, но не при импорте его как модуля из другого файла.

Это удобно, когда файл одновременно:

  • содержит функции/классы, которые ты хочешь переиспользовать через import;

  • и может запускаться как самостоятельный скрипт с «точкой входа».

Пример использования

# utils.py

def add(a, b):
    return a + b

if __name__ == "__main__":
    print(add(2, 3))  # этот код выполнится только при python utils.py

При импорте import utils функция add будет доступна, но тестовый вывод внутри if __name__ == "__main__" не сработает.

Как ответить на собеседовании

if __name__ == "__main__" используют, чтобы отделить «точку входа» скрипта от остального кода модуля. Код внутри этого условия выполняется только при прямом запуске файла и не выполняется при импорте, что позволяет писать модули, которые можно и переиспользовать, и запускать как отдельную программу.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге