Каково назначение конструкции `if __name__ == ‘__main__’` в Python?

Ответ

Конструкция if __name__ == "__main__" позволяет выполнить блок кода только в том случае, если Python-файл запускается как основной скрипт, а не импортируется как модуль в другой файл.

Это работает благодаря специальной переменной __name__, которую Python устанавливает автоматически:

  • При прямом запуске файла (например, python my_script.py), значение __name__ равно "__main__".
  • При импорте файла (например, import my_script), значение __name__ равно имени модуля (в данном случае, "my_script").

Основные сценарии использования:

  1. Создание исполняемых скриптов: Размещение точки входа в приложение, которая не должна срабатывать при импорте.
  2. Тестирование: Написание тестов или демонстрационного кода для функций модуля прямо в этом же файле.
  3. Разделение логики: Четкое отделение переиспользуемой логики (функции, классы) от кода, который ее запускает.

Пример:

# my_module.py

def reusable_function():
    """Эта функция может быть импортирована и использована в других модулях."""
    print("Вызвана переиспользуемая функция.")

def main():
    """Основная логика, которая выполняется только при прямом запуске."""
    print("Скрипт запущен напрямую.")
    reusable_function()

# Этот блок выполнится, только если запустить: python my_module.py
if __name__ == "__main__":
    main()