Главная функция в 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.

Смотрите также:

Видео: Python if __name__ == „__main__“