Вы, наверное, видели 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
Если вы хотите разработать скрипт, который можно использовать как импортированный модуль и как отдельную основную программу — второй подход будет правильным! Попробуйте сами!