Особенностью языка программирования Python является встроенная системная переменная __name__. Эта переменная имеет особую ценность для разработчиков, поскольку она позволяет проверить, выполняется ли модуль как основная программа.
Переменная __name__ в Python автоматически устанавливается в значение __main__, когда текущий файл скрипта выполняется напрямую - то есть, когда вы выбираете файл для запуска в вашей IDE или через командную строку. Если же скрипт импортируется в качестве модуля в другой скрипт, значение переменной __name__ устанавливается в имя этого файла скрипта (без расширения).
Предположим, у вас есть два файла Python: script1.py и script2.py. В script1.py находится следующий код:
def func():
print("Функция 'func' из script1 была вызвана")
if __name__ == "__main__":
func()
Во втором файле script2.py находится следующий код:
import script1
script1.func()
Когда вы запускаете script1.py напрямую, __name__ равно __main__, следовательно, условие if __name__ == "__main__": является истинным, и функция func() вызывается.
Однако, когда вы запускаете script2.py, функция func() вызывается через модуль script1. __name__ в данном случае равняется script1, и блок кода под условием if __name__ == "__main__": в модуле script1 игнорируется.
Использование if __name__ == "__main__": в Python является общепринятой практикой, поскольку это позволяет разработчику контролировать поведение его кода в зависимости от того, используется ли скрипт в качестве модуля или выполняется как основная программа. Это делает ваш код более модульным и гибким для повторного использования.