我正在编写一个包含多个文件和子目录中文件的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
现在,事实证明sub
在pickle
下有自己的sub.pickle
版本,然后file1和file2有他们自己的pickle版本。有什么办法可以消除这种冗余?
如果这不是问题,有谁知道这两次导入的泡菜是否都指向相同的内存区域?
是否有更好的方法可以围绕导入设计代码?
答案 0 :(得分:4)
您无需执行任何操作。 Python导入系统使用缓存(在sys.modules
词典中)来防止模块两次导入。在代码中的任何地方调用具有相同名称的import
会从第一次产生相同的模块对象,因此使模块对象有点像“单个子集”。