07 Июл 2023
2 мин
5389

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

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

Содержание

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

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

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

В 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

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

Содержание

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

Определи профессию по рисунку