Python对常见模块的多重导入
我正在做一个项目,需要在不同的项目文件(.py 文件)中使用一个第三方模块。情况是这样的:
我有一个文件叫“abc.py”,它导入了一个第三方模块“common.py”。还有其他几个文件也导入了“common.py”。这些文件都被主项目文件“main.py”导入了。
在不同的文件中多次导入同一个模块似乎有点多余,因为“main.py”已经导入了所有的项目文件。
我也不太确定多次导入语句会对项目的大小产生什么影响。
有没有人能帮我把事情弄得简单一点。
2 个回答
3
没错,你说得对,这种情况在Python中确实存在。具体来说,如果用户的代码尝试用不同的方式导入同一个模块,比如用 import a
和 import A.a
(这里的 a.py
文件放在 A
包里,第一个 import
是在 A
包内部进行的,而第二个 import
是从外部进行的),就会出现这种情况。
在实际生活中,这种情况很容易发生,特别是在多层次的Python项目中。
我遇到过这种行为带来的副作用,也就是当用 isinstance
命令检查一个对象是否属于某个类时,如果这个类是在以这种方式导入的模块中定义的,isinstance
就会失效。
我想到的解决办法是重新定义 __builtin__.__import__
函数,让它更智能地执行导入操作。
20
导入模块的时候,只会加载一次。之后再导入同一个模块,只是把它添加到当前的命名空间里。
只在需要用到的文件里导入东西,让Python来处理模块的加载工作。