Должен ли я создавать новые пакеты Python по умолчанию в качестве пакетов пространства имен?
В Python 3.3 имеются неявные пакеты пространства имен (PEP420), а в Python 2.7 пакеты можно пометить как пакеты пространства имен, добавив две строки в __init__py. Смотрите Как мне создать пакет пространства имен в Python.
С учетом возможностей, которые позволяют пакеты, похоже, что новые пакеты должны создаваться как пакеты пространства имен по умолчанию.
Обычные пакеты Python должны использоваться только в исключительных случаях, когда необходимость в "закрытом" пакете очевидна.
В чем был бы недостаток этого подхода?
0 ответов
PEP 420 отмечает, что обычные пакеты имеют преимущество в производительности:
Нет намерения убирать поддержку обычных пакетов. Если разработчик знает, что его пакет никогда не будет частью пакета пространства имен, то это дает преимущество в производительности, если он является обычным пакетом (с
__init__.py
). Создание и загрузка обычного пакета может происходить сразу же после его расположения по пути. С пакетами пространства имен все записи в пути должны быть просканированы перед созданием пакета.