Найти в Дзене
Пушистый код

if __name__ == "__main__"

Довольно часто, начинающие разработчики Python, при чтении чужого кода, встречают конструкцию примерно похожую на эту: Давайте разберемся, что же это за конструкция и для чего она используется. Представьте такую ситуацию: У вас есть самодостаточный модуль, который решает какую-то задачу по автоматизации вашей работы. Внутри него находятся очень полезные функции, классы или объекты, которые хотелось бы импортировать в другой ваш модуль. Например, из модуля выше нам нужна функция sum_list_values. При импортировании этой функции в другом модуле, интерпретатор также выполнит вызовы, на 11 и 12 строке, функций sum_list_values и print (импорт работает таким образом, что выполняет весь код импортированного модуля). Этого можно избежать, проверив запущен ли модуль как программа или импортирован. Здесь нам пригодится переменная __name__. Она определяется в каждом модуле который мы используем автоматически, без нашего участия. Дело в том, что, в зависимости от сценария использования модуля, п
Оглавление

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

some_module.py
some_module.py

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

Представьте такую ситуацию:

У вас есть самодостаточный модуль, который решает какую-то задачу по автоматизации вашей работы. Внутри него находятся очень полезные функции, классы или объекты, которые хотелось бы импортировать в другой ваш модуль.

my_module.py
my_module.py

Например, из модуля выше нам нужна функция sum_list_values.

При импортировании этой функции в другом модуле, интерпретатор также выполнит вызовы, на 11 и 12 строке, функций sum_list_values и print (импорт работает таким образом, что выполняет весь код импортированного модуля). Этого можно избежать, проверив запущен ли модуль как программа или импортирован. Здесь нам пригодится переменная __name__. Она определяется в каждом модуле который мы используем автоматически, без нашего участия.

Дело в том, что, в зависимости от сценария использования модуля, переменная __name__ может содержать различные значения.

  1. При запуске модуля как программы, значение __name__ будет равняться "__main__".
  2. При импортировании модуля, значение __name__ установится как строка с его именем. Например в модуле my_module.py, __name__ будет "my_module".

Резюмируя.

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

-3