Главная функция в Python
Что такое функция main() в Python?
В некоторых языках программирования есть специальная функция main(), которая является точкой входа для файла программы. Однако интерпретатор Python запускает каждую строку последовательно с начала файла и не имеет явной функции main().
Python предлагает другие соглашения для определения точки входа. Одно из них — использование функции main() и свойства __name__ файла Python.
Что такое __name__ в Python?
Переменная __name__ — это специальная встроенная переменная Python, которая показывает имя текущего модуля.
Она имеет разные значения в зависимости от того, где мы запускаем файл Python. Рассмотрим пример.
Запуск файла Python как скрипта
Предположим, у нас есть файл Python с именем helloworld.py со следующим содержимым:
print(__name__)
Если мы запустим helloworld.py из командной строки, то он запустится как скрипт Python. Мы можем запустить программу Python с помощью следующей команды:
$ python helloworld.py
Когда мы запускаем программу как скрипт, значение переменной __name__ устанавливается в __main__. Поэтому вывод следующей программы будет:
__main__
Запуск файла Python как модуля
Мы также можем запустить файл Python как модуль. Для этого мы должны импортировать этот файл в другую программу Python. Рассмотрим пример.
Предположим, у нас есть файл Python с именем main.py в том же каталоге, что и файл helloworld.py. Он имеет следующее содержимое:
import helloworld
Когда мы запускаем этот файл, мы получаем следующий вывод:
helloworld
Здесь видно, что импорт модуля также запускает весь код в файле модуля.
Но мы видим, что вместо отображения __main__ программа отображает имя модуля, т.е. helloworld.
Это потому, что в контексте запуска файла Python как модуля имя самого модуля присваивается переменной __name__.
Использование условия if с __name__
Теперь, когда мы поняли, как переменной __name__ присваиваются значения, мы можем использовать условную конструкцию if, чтобы запускать один и тот же файл Python по-разному в разных контекстах.
Рассмотрим пример.
Предположим, мы изменили содержимое файла helloworld.py на следующее:
def main():
print("Hello World")
if __name__=="__main__":
main()
Теперь, когда мы запускаем его как скрипт через командную строку, вывод будет:
Hello World
Однако, когда мы запускаем его как модуль, импортируя в файл main.py, никакой вывод не отображается, так как функция main() не вызывается.
Здесь мы создали пользовательскую функцию main() в файле helloworld.py. Она выполняется только тогда, когда программа запускается как отдельный скрипт, а не как импортированный модуль.
Это стандартный способ явно определить функцию main() в Python. Это один из самых популярных вариантов использования переменной __name__ файла Python.
Смотрите также: