导入包含“导入”模块的模块有哪些好处或缺点?命令?

时间:2016-11-30 19:25:53

标签: python

如果我要创建一个名为imp_mod.py的模块,其中包含我经常使用的所有(主观使用的)相关模块。

将此模块导入我的主程序是否允许我访问imp_mod.py中包含的导入?

如果是这样,会带来什么缺点?

我认为一个主要的优势是减少导入时间,即使它只节省了几秒钟......

2 个答案:

答案 0 :(得分:2)

是的,它允许您访问它们。如果您将这些导入放在imp_mod.py

from os import listdir
from collections import defaultdict
from copy import deepcopy

然后,您可以在另一个文件中执行此操作,例如myfile.py

import imp_mod
imp_mod.listdir
imp_mod.defaultdict
imp_mod.deepcopy

关于减少进口时间你是错误的,因为恰恰相反。 Python将需要导入imp_mod,然后导入其他模块,而如果您在myfile.py本身导入这些模块,则不需要第一次导入。如果您在另一个文件中执行相同的导入,它们将已经在缓存中,因此几乎没有时间用于下一次导入。

这里真正的缺点是可读性较差。例如,无论是谁看imp_mod.listdir,都会问自己这个方法到底是什么,以及为什么它与os模块的方法具有相同的名称。当他不得不打开imp_mod.py只是为了发现它是相同的方法时,他可能不会感到高兴。我不会。

答案 1 :(得分:0)

正如lucasnadalutti所提到的,您可以通过导入模块来访问它们。

就优势而言,如果imp_mod处理所有导入,它可以使您的主程序更少关注导入的来源,但是,当您的程序变得更复杂并开始包含更多名称空间时,方法可能会变得更加混乱。您可以通过在目录中使用__init__.py处理导入来执行类似的操作来开始处理这一点,但随着事情变得越来越复杂,就个人而言,我觉得它会增加一点复杂性。我宁愿知道一个模块来自哪里来查找它。