Вы, наверное, видели if __name__ == '__main__': в шаблонном коде IDE или в некоторых учебниках и задавались вопросом — что это за странный код?

Что ж, давайте погрузимся в тайны Python:

При выполнении кода Python интерпретатор Python сначала читает исходный файл (наш код Python) и определяет некоторые глобальные и специальные переменные.

Когда мы запускаем исходный файл (назовем его main.py), интерпретатор Python устанавливает для переменной __name__ значение «__main__».
Если мы импортируем модуль в наш исходный файл, его переменная __name__ будет установлена ​​на имя модуля.

Почему это важно?

Если вы пишете скрипт Python, который предназначен для использования в качестве модуля, вам лучше не вызывать функцию для проверки, работает ли она (во внешней области), вместо этого — ее вложение в __name__ == "__main__" — это подход, который следует использовать. . Давайте посмотрим на неправильный путь:

# Wrong way
# script.py
def func(): # our function
    print(“Hello”)
func() # testing the function
# main.py
import script
if __name__ == "__main__":
    script.func()
## Output
Hello
Hello

Этот (неправильный) способ вызова функции заканчивается нежелательным поведением — печать «Hello» происходит дважды. Это связано с тем, что наш небольшой скрипт запускается во время импорта.

Вместо этого давайте вложим вызов func() внутрь __name__ == «__main__» в модуле:

# Right way
# script.py
def func(): # our function
    print(“Hello”)
if __name__ == "__main__":
    func()
# main.py
import script
if __name__ == "__main__":
    script.func()
# Output
Hello

Если вы хотите разработать скрипт, который можно использовать как импортированный модуль и как отдельную основную программу — второй подход будет правильным! Попробуйте сами!