【发布时间】:2011-04-27 22:35:49
【问题描述】:
我正在更改一堆旧的 python 代码,这些代码偶尔会遇到包之间的名称冲突。我有一个关于何时应该使用绝对导入以及仅按名称导入同级模块是否合适的问题。
/package/
/package/__init__.py
/package/subA
/package/subA/__init__.py
/package/subA/moduleA.py
/package/subA/moduleB.py
/package/subB
/package/subB/__init__.py
/package/subB/moduleA.py
/package/subB/moduleB.py
包中的每个 import 语句是否应该如下所示:
import package.subX.moduleX
或
from package.subX import moduleX
在子包__init__.py 文件中怎么样。简单的说会不会错
import moduleA
import moduleB
或者,在/package/subA/moduleA.py中,简单的说:
import moduleB
【问题讨论】:
-
如果你想在整个代码中保存一些字符,你也可以使用别名,如
from package.subA import moduleA as a_moduleA和from package.subB import moduleA as b_moduleA,对我来说似乎有点乱,但这是另一种选择...