1

我正在考虑将所有外部模块导入一个文件中,然后从该文件中导入。这样,如果/当我想换出一个外部模块时,我可以简单地编辑一个文件。

示例目录:

# django project
...
app1
    imports.py
app2
    utils.py
app3
    utils.py

所以在 app1.imports.py 我有

from app2 import utils as ALIAS

然后我在 app1 中的所有模块将从 app1.imports.py 导入 ALIAS。这样,如果/当我想使用 app3.utils 时,我可以简单地在 app1.imports.py 中进行一次更改

问题是我对 python 的了解不够好,无法知道这是否是个好主意。这样做有什么好处和坏处?我根本没有看到人们这样做,所以我猜这不是一个好主意?为什么?

4

1 回答 1

0

从 Python 文档http://docs.python.org/2/tutorial/modules.html#more-on-modules

模块可以导入其他模块。... 导入的模块名称放置在导入模块的全局符号表中。

完全可以将所有可能模块的命名空间作为别名(ALIAS_1、ALIAS_2、...)导入单个模块,然后在需要时导入后一个模块的命名空间。

举个例子:

x.py    # Contains nothing

y.py    # Contains a single line which imports x as ALIAS
    import x as ALIAS

# Inside an interpreter session
>>> import x, y
>>> dir(x)
['__builtins__', '__doc__', '__file__', '__name__', '__package__']
>>> dir(y)
['ALIAS', '__builtins__', '__doc__', '__file__', '__name__', '__package__']
>>> dir(x) == dir(y.ALIAS)
True

只要您不将导入模块的名称空间合并到导入模块的名称空间中,我就看不到任何副作用。

于 2013-03-08T07:35:26.613 回答