Ответ
Конструкция if __name__ == "__main__" позволяет выполнить блок кода только в том случае, если Python-файл запускается как основной скрипт, а не импортируется как модуль в другой файл.
Это работает благодаря специальной переменной __name__, которую Python устанавливает автоматически:
- При прямом запуске файла (например,
python my_script.py), значение__name__равно"__main__". - При импорте файла (например,
import my_script), значение__name__равно имени модуля (в данном случае,"my_script").
Основные сценарии использования:
- Создание исполняемых скриптов: Размещение точки входа в приложение, которая не должна срабатывать при импорте.
- Тестирование: Написание тестов или демонстрационного кода для функций модуля прямо в этом же файле.
- Разделение логики: Четкое отделение переиспользуемой логики (функции, классы) от кода, который ее запускает.
Пример:
# my_module.py
def reusable_function():
"""Эта функция может быть импортирована и использована в других модулях."""
print("Вызвана переиспользуемая функция.")
def main():
"""Основная логика, которая выполняется только при прямом запуске."""
print("Скрипт запущен напрямую.")
reusable_function()
# Этот блок выполнится, только если запустить: python my_module.py
if __name__ == "__main__":
main()