Найти в Дзене
Машинное обучение

⚡️ Что такое __name__ в Pytthon

Эта переменная хранит название модуля, который импортируется. А если это прямой запуск (python3 foo.py), то его значение будет __main__.

Теперь поговорим про __name__ == "__main__". При импорте модуля весь код выполняется. Чтобы избежать странного поведения (см. пример), стоит делать проверку.

-2

Пример переменной 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.

-3

Таким образом, переменная __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/ django

#python #coder #ml #innovation #robotics #linux #analytics #webdevelopment #bhfyp

#теория

Наука
7 млн интересуются