В данном руководстве мы рассмотрим для чего используется условие 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». Научились применять их на практики и теперь знаем как использовать их у себя в проекте.
Егор, спасибо, наглядно!)
Ерунда. Нормально там все запускается.
кажется мы не поняли друг друга)
Спасибо, что даёте полезную информацию. Но, когда применяешь это ещё и на практике, то вырабатываются хорошие навыки.
пожалуйста
Егор Егоров, благодарю за такое подробное описание вариантов использования if __name__ == «main». Буду практиковать. Твои статьи всегда очень полезны! 🙂
спасибо)