Предположим, у вас есть следующее
b
b/__init__.py
b/c
b/c/__init__.py
b/c/d
b/c/d/__init__.py
В некоторых пакетах Python, если вы import b
, вы получите только символы, определенные в b. Чтобы получить доступ к b.c, вы должны явно import b.c
или from b import c
. Другими словами, вы должны
import b
import b.c
import b.c.d
print b.c.d
В других случаях я видел автоматический импорт всех подпакетов. Это означает, что следующий код не выдает ошибку
import b
print b.c.d
потому что b/__init__.py
заботится об импорте своих подпакетов.
Я склонен отдавать предпочтение первому (явно лучше, чем неявному), и я всегда использовал его, но есть ли случаи, когда второй предпочтительнее первого?