我有时会注意到如果你打电话
dir()
在包/模块上,您将看到命名空间中作为实现的一部分导入的其他模块,这些模块并不适合您使用。例如,如果我从pypi安装fish包并导入它,我会看到
fish.sys
它只是指内置的
sys
模块。
我的问题是这是否明智,如果不明智,该怎么办。
我不认为
__all__
变量太相关了,因为
只有
影响的行为
from X import *
. 我看到的选项有:
-
更好地构造包,至少将名称空间混乱推入子模块中。
-
使用
import X as _X
在包中区分实现细节和包API
-
从函数内部导入内容(
布雷赫
)