Основная функция Python

В этом руководстве мы узнаем, как использовать атрибут __name__ программы 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__. Таким образом, на выходе следующая программа будет:

 __основной__ 

Запуск файла Python как модуля

Мы также можем запустить файл Python как модуль. Для этого мы должны импортировать этот файл в другую программу Python. Давайте посмотрим на пример.

Предположим, у нас есть файл Python с именем main.py в том же каталоге, что и файл heloworld.py. Он имеет следующее содержание:

 import helloworld 

Когда мы запустим этот файл, мы получим следующий результат:

 Привет мир 

Здесь мы видим, что при импорте модуля также выполняется весь код в файле модуля.

Но мы видим, что вместо отображения __main__ программа отображает имя модуля, то есть helloworld.

Это потому, что в контексте запуска файла Python как модуля имя самого модуля присваивается переменной __name__.

Использование условного if с __name__

Теперь, когда мы поняли, как переменной __name__ присваиваются значения, мы можем использовать ifусловное предложение для запуска одного и того же файла Python по-разному в разных контекстах.

Давайте посмотрим на пример.

Предположим, мы изменили содержимое файла helloworld.py на следующее:

 def main(): print("Hello World") if __name__=="__main__": main() 

Теперь, когда мы запускаем его как сценарий через командную строку, вывод будет следующим:

 Привет мир 

Однако, когда мы запускаем его как модуль, импортировав его в файл main.py , вывод не отображается, поскольку main()функция не вызывается.

Здесь мы создали специальную main()функцию в файле helloworld.py . Он выполняется только тогда, когда программа запускается как отдельный сценарий, а не как импортированный модуль.

Это стандартный способ явного определения main()функции в Python. Это один из самых популярных вариантов использования переменной __name__ файла Python.

Интересные статьи...