Использование if __name__ == «__main__» в Python

Использование if __name__ == "__main__" в Python Статьи

Подпишись на мой канал в Telegram

В данном руководстве мы рассмотрим для чего используется условие if name == «__main__» в Python, и в каких случаях оно нам может пригодиться.

Введение

Это стандартный код, который защищает пользователей от случайного вызова сценария, когда они не собирались этого делать, и его применение является хорошей практикой.

Это имеет значение для этих двух случаев использования:

  • Мы запускаем его как основную программу с помощью python filename.py
  • Импортируем файл в другой файл с помощью import filename

В последнем случае обычно мы хотим только импортировать модуль, а затем позже в коде выполнить некоторые функции или использовать класс из этого файла. Именно здесь вступает в игру оператор if __name__ == «main», который работает как защитник.

Давайте выясним, почему и как это работает.

Специальная переменная

Когда интерпретатор Python читает исходный файл, он делает две вещи:

  • Во-первых, он устанавливает несколько специальных переменных, таких как __name__.
  • Затем он выполняет весь код, который находит в файле.

Давайте посмотрим на следующий пример, где мы правильно используем оператор if __name__ == «main»:

# This is testa.py


def func_one():
    print("Function One")


if __name__ == "__main__":
    print("Running testa")
    func_one()

Первый случай использования

Запустите его как основную программу с помощью python testa.py.

Интерпретатор Python присвоит переменной __name__ жестко закодированную строку «main», и таким образом код в операторе if будет выполнен:

python testa.py

Running testa
Function One

Второй случай использования

Импортируйте testa в качестве модуля.

Интерпретатор присвоит «testa» переменной __name__ в модуле testa. Таким образом, код в операторе if не будет выполнен, и func_one не запустится.

# This is testb.py
import testa

if __name__ == "__main__":
    print("Running testb")
python testb.py

Running testb

Без if __name__ == «main» в testa.py вывод был бы следующим:

python testb.py

Running testa
Function One
Running testb

Обычно это не то, что нам нужно. Поэтому, если вы хотите запустить код в файле, хорошей практикой будет обернуть весь этот код в оператор if __name__ == «main».

Заключение

В этой статье мы рассмотрели различные способы использования инструкции if __name__ == «main». Научились применять их на практики и теперь знаем как использовать их у себя в проекте.

close

Бесплатная подписка

Введи свой адрес электронной почты и получай моментальный доступ к новым публикациям на сайте

Вступи в мою группу ВКонтакте

Егор Егоров

C 2017 года сижу на игле Python. Люблю создавать контент, который помогает людям понять сложные вещи. Не представляю жизнь без спорта и чувства юмора.

Если не сложно, напиши комментарий, как тебе статья.

Оцените автора
Егоров Егор
Добавить комментарий