Автор оригинала: Bert Carremans.
Введение в _ _Name_ _ переменную и его использование в Python
Вы, скорее всего, видели __name__
Переменная, когда вы проходили через код Python. Ниже вы видите пример фрагмента кода, как это может выглядеть:
if __name__ == '__main__': main()
В этой статье я хочу показать вам, как вы можете использовать эту переменную для создания модулей в Python.
Почему используется переменная _ _Name_ _ _?
__name__
Переменная (два подчеркивания до и после) представляет собой специальную переменную Python. Это получает его значение в зависимости от того, как мы выполняем содержащий сценарий.
Иногда вы пишете скрипт с функциями, которые также могут быть полезны в других сценариях. В Python вы можете импортировать этот скрипт в виде модуля в другом скрипте.
Благодаря этой специальной переменной вы можете решить, хотите ли вы запустить скрипт. Или что вы хотите импортировать функции, определенные в скрипте.
Какие значения могут содержать переменную __name__?
Когда вы запускаете свой скрипт, __name__
Переменная равен __main__
Отказ При импорте содержащего сценарий он будет содержать имя сценария.
Давайте посмотрим на эти два случая использования и опишите процесс с двумя иллюстрациями.
Сценарий 1 – Запустите скрипт
Предположим, мы написали сценарий namescript.py
следующим образом:
def myFunction(): print 'The value of __name__ is ' + __name__
def main(): myFunction()
if __name__ == '__main__': main()
Если вы запустите NameScript.py, следующий ниже.
Прежде чем все остальный код работает, __name__
Переменная установлена на __main__. После этого Главная
и Myфункция
Записываются операторы. Поскольку состояние оценивается к True, называется основной функцией. Это, в свою очередь, называет myфункцию. Это отпечатывает значение __main__
Отказ
Сценарий 2 – Импортируйте скрипт в другом скрипте
Если мы хотим повторно использовать мою регистрацию в другом скрипте, например Importingscript.py
мы можем импортировать namescript.py
как модуль.
Код в Importingscript.py
может быть следующим:
import nameScript as ns
ns.myFunction()
У нас тогда два сфера: один из Importingscript
и второй объем TeamScript
Отказ На рисунке вы увидите, как он отличается от первого случая использования.
В Importingscript.py __name__
Переменная установлена на __main__. Импортируя Teamscript, Python начинает искать файл, добавив .py
на имя модуля. Затем он запускает код, содержащийся в импортированном файле.
Но на этот раз это устанавливается на INTESPRIST. Снова операторы DEF для основной и справедливой регистрации. Но теперь состояние оценивает ложь и главное не вызывается.
В Importingscript.py мы называем myфункцию, которая выводит INTEScript. INTEScript известен к моей функции, когда эта функция была определена.
Если вы будете печатать __name__
В ImportingScript это выводило бы __main__
Отказ Причиной этого является то, что Python использует значение, известное в объеме импортных групп.
Заключение
В этой короткой статье я объяснил, как вы можете использовать __name__
Переменная для записи модулей. Вы также можете запустить эти модули самостоятельно. Это может быть сделано путем использования того, как значения этих переменных изменяются в зависимости от того, где они происходят.