Python: напечатайте __name__ и импортируйте его в разные скрипты - PullRequest
0 голосов
/ 18 декабря 2018

сильный текст Когда я изучил атрибут __name__ в Python, я создал два простейших сценария для его проверки.

Сценарий 1 (Имя сценария: test1.py )

print __name__

Когда я запускаю сценарий 1, он возвращает __main__, как и ожидалось.

Script 2

import test1

Когда я запускаю Script 2, он возвращает test1, который является именем файла test1.py, и это также ожидаемый результат.

Однако, если я переименую script1 из test1.py в abc.py , обновите сценарий 2 до import abc и снова запустите сценарий 2, он ничего не показывает.

Я пробовал другие случайные имена файлов для сценария 1, такие как abcdefg.py , xyz.py , blabla.py и обновите код сценария 2 соответственно, и каждый раз, когда я могу получить правильный вывод, такой как abcdefg, xyz, blabla, но всякий раз, когда имя файла сценария 1 равно abc.py , запуск сценария 2 вообще ничего не показывает, почему это так?

1 Ответ

0 голосов
/ 18 декабря 2018

abc - это имя встроенного модуля.Когда вы делаете import abc, вы импортируете это , а не abc.py.

import abc

print(abc)
# <module 'abc' from '\python-path\lib\abc.py'>

Его документация , если вам интересно.

Как правильно заметил @ user2357112 в комментариях, abc кажется немного особенным в этом аспекте.Присвоение имени сценарию имени встроенного модуля (random, json и т. Д.) Обычно импортирует этот сценарий и скрывает встроенный модуль.Однако abc показывает другое поведение, которое, вероятно, является результатом того, как скоро он загружается во время выполнения интерпретатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...