Python对常见模块的多重导入

11 投票
2 回答
7623 浏览
提问于 2025-04-16 09:56

我正在做一个项目,需要在不同的项目文件(.py 文件)中使用一个第三方模块。情况是这样的:

我有一个文件叫“abc.py”,它导入了一个第三方模块“common.py”。还有其他几个文件也导入了“common.py”。这些文件都被主项目文件“main.py”导入了。

在不同的文件中多次导入同一个模块似乎有点多余,因为“main.py”已经导入了所有的项目文件。

我也不太确定多次导入语句会对项目的大小产生什么影响。

有没有人能帮我把事情弄得简单一点。

2 个回答

3

没错,你说得对,这种情况在Python中确实存在。具体来说,如果用户的代码尝试用不同的方式导入同一个模块,比如用 import aimport A.a(这里的 a.py 文件放在 A 包里,第一个 import 是在 A 包内部进行的,而第二个 import 是从外部进行的),就会出现这种情况。

在实际生活中,这种情况很容易发生,特别是在多层次的Python项目中。

我遇到过这种行为带来的副作用,也就是当用 isinstance 命令检查一个对象是否属于某个类时,如果这个类是在以这种方式导入的模块中定义的,isinstance 就会失效。

我想到的解决办法是重新定义 __builtin__.__import__ 函数,让它更智能地执行导入操作。

20

导入模块的时候,只会加载一次。之后再导入同一个模块,只是把它添加到当前的命名空间里。

只在需要用到的文件里导入东西,让Python来处理模块的加载工作。

撰写回答