我正在考虑将所有外部模块导入一个文件,然后从该文件导入。这样,如果/当我想换出外部模块时,我可以简单地编辑一个文件。
示例目录:
# 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,知道这是不是一个好主意。这样做的优点和缺点是什么?我根本没有看到人们这样做,所以我猜这不是一个好主意?为什么呢?
答案 0 :(得分: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
只要您没有将导入模块的命名空间合并到导入模块的命名空间中,我就看不到任何副作用。