В Python нет какой-то специально выделенной функции main()
, вы можете создать любую функции сами и вызвать ее где-то на верхнем уровне кода (это значит с нулевым отступом слева). Когда Python читает файл py, он выполняет весь код, который в нем содержится (за исключением тел методов и функций, конечно). Причем код выполняется в обоих случаях: а) если файл запущен напрямую б) если импортирован из другого скрипта.
Иногда некоторые скрипты могут играть роль и подключаемого модуля, и отдельно исполняемого файла. Поэтому из соображений безопасности следует делать проверку, чтобы код неожиданно не выполнился, если кто-то импортирует скрипт как модуль.
В процессе исполнения файла интерпретатор сам устанавливает особую строковую переменную __name__
, которая будет равна "__main__"
, когда этот скрипт запущен непосредственно и будет равна названию модуля, если он импортирован из другого файла.
Рассмотрим пример. Файл one.py:
# one.py def func(): print("какая-то функция func() из one.py") print("one.py: всегда") if __name__ == "__main__": print("one.py запущен напрямую") else: # здесь __name__ == "one" print("one.py импортируется из другого скрипта")
При запуске python one.py
будет:
one.py: всегда one.py запущен напрямую
Пусть в другом файле two.py импортируем one:
# two.py import one one.func()
Запуск python two.py
даст:
one.py: всегда one.py импортируется из другого скрипта какая-то функция func() из one.py
Вывод такой: эта конструкция не является чем-то обязательным, а скорее правилом хорошего тона, чтобы ваш код не делал неожиданных вещей. Старайтесь ей пользоваться.
Специально для канала @pyway. Подписывайтесь на мой канал в Телеграм @pyway 👈