Каково задокументированное поведение (если таковое имеется), когда кто-то импортирует `pkg.__init__[ as pkg]` вместо `imPython

Программы на Python
Ответить
Anonymous
 Каково задокументированное поведение (если таковое имеется), когда кто-то импортирует `pkg.__init__[ as pkg]` вместо `im

Сообщение Anonymous »

Чтобы внести ясность: я не предлагаю кому-либо импортировать pkg.__init__ напрямую. Это сделано для того, чтобы понять возможные подводные камни, если кто-то решит преобразовать дистрибутив, состоящий только из модулей, в пакет, поскольку текущие спецификации типизации не могут объединять статическую информацию о типизации с дистрибутивами, состоящими только из модулей.
Итак, когда кто-то конвертирует

Код: Выделить всё

project/
distributed.py
в

Код: Выделить всё

project/
distributed/
__init__.py
это может сделать сторонний пользователь:

Код: Выделить всё

import distributed.__init__
# and/or
import distributed.__init__ as distributed
Если вы импортируете распределенный.__init__, мне уже известно следующее:
  • Как распределенный, так и распределенный.__init__ появляются в sys.modules.
  • Код: Выделить всё

    distributed.__init__
    выполняется дважды, и Python будет создавать новый объект модуля при каждом запуске. Таким образом, sys.modules["distributed"] не является sys.modules["distributed.__init__"], и большинство объектов, определенных непосредственно в распределенном.__init__, не будут сравнивать идентичность между этими двумя версиями модуля.
Я ищу другие различия, которые могли бы заставить распределенный вести себя иначе, чем распределенный.__init__ (например, различия в доступных __dunder__ имена, различия в поведении относительного импорта). Кажется, я не могу найти никаких упоминаний (не говоря уже об официальных) по этому поводу.
Если ответ очевиден "

Код: Выделить всё

distributed.__init__
на самом деле не является чем-то особенным, рассматривайте его как любой другой файл с именем .py", я доволен этим ответом.
Если ответ, специфичный для CPython, можно найти в его исходном коде, это также будет полезно.
(Я не ищу альтернативы информации о типизации пакета, например распространение одной заглушки .pyi и/или публикацию в typeshed - я уже знаю таких альтернатив.)

Подробнее здесь: https://stackoverflow.com/questions/798 ... kg-init-as
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»