【发布时间】:2009-12-01 17:33:28
【问题描述】:
假设你有以下
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 负责导入其子包。
我倾向于更喜欢第一个(显式优于隐式),并且我总是使用它,但是是否存在第二个优于第一个的情况?
【问题讨论】:
-
您不必在
import b.c.d之前先import b然后import b.c。 (我倾向于写from b.c import d以在简洁和明确之间取得平衡。)