Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
03 Авг 2023
2 мин
8777

Разбираемся с конструкцией if __name__ == «__main__» в Python

Часто в программах на Python можно встретить следующую конструкцию: Возникает вопрос, что же делает эта конструкция и почему она так часто используется.

Часто в программах на Python можно встретить следующую конструкцию:

if __name__ == "__main__":
    print("Hello, World!")

Освойте Python на курсе от Skypro. Вас ждут 400 часов обучения и практики (достаточно десяти часов в неделю), подготовка проектов для портфолио, индивидуальная проверка домашних заданий и помощь опытных наставников. Получится, даже если у вас нет опыта в IT.

Возникает вопрос, что же делает эта конструкция и почему она так часто используется.

В Python, при выполнении скрипта, этот скрипт получает специальное имя — __main__. Фактически, это означает, что при запуске скрипта из командной строки или при его вызове из другого скрипта, Python автоматически присваивает ему имя __main__.

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

Таким образом, конструкция if __name__ == "__main__": позволяет определить, как именно был запущен скрипт — непосредственно или через импорт в другой скрипт.

Рассмотрим пример:

# test.py
def function():
    print("Function is called")

if __name__ == "__main__":
    print("Script is run directly")
    function()
else:
    print("Script is imported")

Если запустить скрипт test.py напрямую, в консоль будет выведено следующее:

Script is run directly
Function is called

Но если импортировать этот скрипт в другой, то будет выведено только «Script is imported». При этом функция function() не будет вызвана.

# main.py
import test
Script is imported

Изучайте Python на онлайн-курсе от Skypro «Python-разработчик». Программа рассчитана на новичков без опыта программирования и технического образования. Курс проходит в формате записанных коротких видеолекций. Будет много проверочных заданий и мастер-классов. В конце каждой недели — живая встреча с экспертами в разработке для ответов на вопросы и разбора домашек.

Таким образом, благодаря конструкции if __name__ == "__main__":, можно контролировать поведение скрипта в зависимости от того, как он был запущен.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий