Эта переменная хранит название модуля, который импортируется. А если это прямой запуск (python3 foo.py), то его значение будет __main__.
Теперь поговорим про __name__ == "__main__". При импорте модуля весь код выполняется. Чтобы избежать странного поведения (см. пример), стоит делать проверку.
Пример переменной Python __name__
Во-первых, создайте новый модуль под названием Billing, который имеет две функции: calculate_tax() и print_billing_doc(). Кроме того, добавьте оператор, который выводит на экран переменную __name__:
Во-вторых, создайте новый файл с именем app.py и импортируйте модуль billing:
import billing
Когда вы запустите app.py:
> python app.py
Язык кода: CSS (css)
переменная __name__ показывает следующее значение:
billing
Язык кода: Python (питон)
Это означает, что Python выполняет файл billing.py, когда вы импортируете модуль billing в файл app.py.
Если вы запускаете скрипт billing.py скрипт напрямую:
> python billing.py
вы увидите следующий вывод:
__main__
В этом случае значение переменной __name__ равно '__main__' внутри billing.py.
Таким образом, переменная __name__ позволяет проверить, выполняется ли файл напрямую или импортируется как модуль.
Например, чтобы выполнить функцию print_billing_doc(), когда billing.py выполняется непосредственно как скрипт, вы можете добавить следующий оператор в модуль billing.py:
Однако при выполнении app.py вы не увидите выполненный блок if, потому что переменная __name__ имеет значение не __main__, а 'billing'.
Резюме
Python присваивает «__main__» переменной __name__, когда вы запускаете скрипт напрямую, и имени модуля, если вы импортируете скрипт как модуль.
Однако при запуске app.py вы не увидите выполненный блок if, потому что переменная __name__ имеет значение не __main__, а 'billing'.
Итог
Python присваивает «__main__» переменной __name__, когда вы запускаете скрипт напрямую, и имени модуля, если вы импортируете скрипт как модуль.
#python #coder #ml #innovation #robotics #linux #analytics #webdevelopment #bhfyp
#теория