Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否将所有外部模块导入一个文件?_Python_Django - Fatal编程技术网

Python 是否将所有外部模块导入一个文件?

Python 是否将所有外部模块导入一个文件?,python,django,Python,Django,我正在考虑在一个文件中导入所有外部模块,然后从该文件导入。这样,如果/当我想交换一个外部模块时,我可以简单地编辑一个文件 示例目录: # django project ... app1 imports.py app2 utils.py app3 utils.py 所以在app1.imports.py中 from app2 import utils as ALIAS 然后,app1中的所有模块都将从app1.imports.py导入别名。这样,如果/当我想使用app3.

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

示例目录:

# django project
...
app1
    imports.py
app2
    utils.py
app3
    utils.py
所以在app1.imports.py中

from app2 import utils as ALIAS
然后,app1中的所有模块都将从app1.imports.py导入别名。这样,如果/当我想使用app3.utils时,我只需在app1.imports.py中做一个更改

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

来自Python文档:

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

完全可以将所有可能模块的名称空间作为别名导入单个模块(别名_1、别名_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
只要您没有将导入模块的名称空间合并到导入模块的名称空间中,我就看不到任何副作用