В каждом 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__" используют, чтобы отделить «точку входа» скрипта от остального кода модуля. Код внутри этого условия выполняется только при прямом запуске файла и не выполняется при импорте, что позволяет писать модули, которые можно и переиспользовать, и запускать как отдельную программу.