English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Управление потоком Python

Функции Python

Типы данных Python

Файловые операции Python

Объекты и классы Python

Даты и время Python

Продвинутые знания Python

Руководство Python

Функция main() в Python

В этом руководстве мы будем учиться использовать атрибут __name__ программы Python для динамического выполнения ее в различных контекстах.

Что такое функция main() в Python?

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

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

Что такое __name__ в Python?

Переменная __name__ — это особая встроенная переменная Python, которая显示了 текущее имя модуля.

В зависимости от места выполнения Python-файла, у него может быть разное значение. Давайте посмотрим на пример.

Запуск Python-файла как скрипта

Предположим, что у нас есть файл с именемhelloworld.pyСодержимое Python-файла, например:

print(__name__)

Если мы запускаем из командной строкиhelloworld.pyЕсли это так, то он будет запущен как скрипт Python. Мы можем запустить Python-программу с помощью следующих команд:

python helloworld.py
def foo():
    str="__main__"
    print(str);
if __name__ == "__main__":
    foo()

Когда мы запускаем программу как скрипт, значение переменной __name__ установлено в__main__. Поэтому следующий вывод программы будет следующим:

__main__

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

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

Предположим, что у нас есть файлmain.pyPython файла. Он содержит следующее:

import helloworld

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

helloworld

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

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

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

Условие if с __name__

Теперь, когда мы знаем, как переменная __name__ assigns значения, мы можем использовать условные предложения 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.