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

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

В данном руководстве мы рассмотрим для чего используется условие 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». Научились применять их на практики и теперь знаем как использовать их у себя в проекте.

Егор Егоров

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

Ссылка на мой github есть в шапке. Залетай.

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

  1. Сергей

    Егор, спасибо, наглядно!)

    Ответить
  2. Вася

    Ерунда. Нормально там все запускается.

    Ответить
    1. Егор Егоров автор

      кажется мы не поняли друг друга)

      Ответить
  3. Вероника

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

    Ответить
    1. Егор Егоров автор

      пожалуйста

      Ответить
  4. Lina2021

    Егор Егоров, благодарю за такое подробное описание вариантов использования if __name__ == «main». Буду практиковать. Твои статьи всегда очень полезны! 🙂

    Ответить
    1. Егор Егоров автор

      спасибо)

      Ответить