Должен ли я создавать новые пакеты Python по умолчанию в качестве пакетов пространства имен?

В Python 3.3 имеются неявные пакеты пространства имен (PEP420), а в Python 2.7 пакеты можно пометить как пакеты пространства имен, добавив две строки в __init__py. Смотрите Как мне создать пакет пространства имен в Python.

С учетом возможностей, которые позволяют пакеты, похоже, что новые пакеты должны создаваться как пакеты пространства имен по умолчанию.

Обычные пакеты Python должны использоваться только в исключительных случаях, когда необходимость в "закрытом" пакете очевидна.

В чем был бы недостаток этого подхода?

0 ответов

PEP 420 отмечает, что обычные пакеты имеют преимущество в производительности:

Нет намерения убирать поддержку обычных пакетов. Если разработчик знает, что его пакет никогда не будет частью пакета пространства имен, то это дает преимущество в производительности, если он является обычным пакетом (с__init__.py). Создание и загрузка обычного пакета может происходить сразу же после его расположения по пути. С пакетами пространства имен все записи в пути должны быть просканированы перед созданием пакета.

Другие вопросы по тегам