如何处理Python模块中的冗余/重复导入?

时间:2018-08-03 20:55:11

标签: python python-3.x python-import python-module

我正在编写一个包含多个文件和子目录中文件的python模块。

例如,假设基本目录为./package,子目录./package/sub以及文件./package/sub/file1.py./package/file2.py

./package/sub/file1.py中,我导入了以下第三方模块:

import pickle
import numpy as np

./package/file2.py中,我导入了较早版本的相同模块,以及子文件夹中存在的模块,如下所示:

import pickle
import numpy as np
import sub.file1 as sub

现在,事实证明subpickle下有自己的sub.pickle版本,然后file1和file2有他们自己的pickle版本。有什么办法可以消除这种冗余?

如果这不是问题,有谁知道这两次导入的泡菜是否都指向相同的内存区域?

是否有更好的方法可以围绕导入设计代码?

1 个答案:

答案 0 :(得分:4)

您无需执行任何操作。 Python导入系统使用缓存(在sys.modules词典中)来防止模块两次导入。在代码中的任何地方调用具有相同名称的import会从第一次产生相同的模块对象,因此使模块对象有点像“单个子集”。