Язык программирования Python

Для чего используется if __name__ == “__main__”:? В Python.

Часто можно встретить код в таком виде:

def do_something(): print("something") if __name__ == "__main__": do_something()
Code language: PHP (php)

Вместо, например:

def do_something(): print("something") do_something()
Code language: PHP (php)

Кроме того, замечаем, что переменная name не инициализируется нами, а существует в окружении.

  • В чем разница?
  • Почему стоит отдавать предпочтение одному, а не другому?
  • Что это такое и как это работает?

Ответы.

Ответ 1.

Это тесно связано с тем, как работает интерпретатор Python:

  • Когда интерпретатор читает файл кода, он выполняет весь глобальный код в нем. Это предполагает создание объектов для каждой определенной функции или класса и глобальных переменных.
  • Каждый модуль (файл кода) в Python имеет специальный атрибут __name__, определяющий пространство имен, в котором он работает. Используется для уникальной идентификации модуля в системе импорта.
  • __main__” – это имя области видимости, в которой выполняется код верхнего уровня (ваша основная программа).
  • Интерпретатор передает значение атрибута __name__ в строку ‘__main__‘, если модуль запущен как основная программа (когда вы запускаете его, вызывая интерпретатор в терминале с помощью python my_module.py, дважды щелкая по нему, запуская его в интерактивном интерпретаторе и т.д.).
  • Если модуль вызывается не как основная программа, а импортируется из другого модуля, атрибут __name__ становится именем самого файла.

То есть, если у вас есть файл с названием my_modul.py, то при запуске его в качестве основной программы атрибут __name__ будет ‘__main__‘, если вы используете его, импортируя из другого модуля (import my_module), то атрибут __name__ будет равен ‘my_module’.

В основном, используя if name == “main“:, вы проверяете, был ли модуль выполнен напрямую или нет (импортирован). Если он был выполнен как основная программа, то выполняется код внутри условного.

Одна из причин для этого заключается в том, что иногда вы пишете модуль (файл .py), который вы можете запустить напрямую. Однако в качестве альтернативы вы можете импортировать и повторно использовать его функции, классы, методы и т.д. в другом модуле.

Ответ 2.

Оператор if, типа:

if __name__ == “__main__”: # (блокировка элементов внутри)
Code language: PHP (php)

Используется для изоляции или разделения выполнения ( блокировка элементов внутри ) в пределах одной программы (условие истинно), когда эта программа полностью импортируется в другую.

Таким образом, я могу делать разные вещи с одной и той же программой.

Ответ 3.

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

В Python метод __ name__ – это имя вашего файла.

Например: calculator.py >> он примет __ name__ имя вашего .py файла и сравнит его с __main__, который всегда будет для Python главным файлом, файлом с наивысшей иерархией.

Вы, возможно, задаетесь вопросом: в чем смысл? Зачем мне тратить время на создание условия, если я просто хочу, чтобы программа выполнялась?

Ответ на этот вопрос заключается в следующем.

Давайте представим себе приложение с тысячами .py файлов, и вам поручают проект, который уже делал кто-то другой, как вы узнаете, какой файл является корневым?

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *