"重新加载"如果在重新加载之前将模块中的文件删除,则函数无法删除已加载到内存中的变量。换句话说,即使您在重新加载之前删除变量,它仍然存在。
根据(DOCS):
重新加载模块时,会保留其字典(包含模块的全局变量)。
这是一个简单的例子:
import importlib
import time
def main():
import ex1
i = 0
while True:
importlib.reload(ex1)
ex1.x = ex1.x + 1
i = i + 1
print("loop:%d" %i)
print("x:%d" %ex1.x)
print(dir(ex1))
time.sleep(5)
ex1模块重新加载前的内容:
x = 1
y = 1
然后删除x
并重新加载ex1
,我们会发现x
仍然在dir(ex1)
所以,我的问题是如何在删除并重新加载后dict
中x
不会出现dir
?
答案 0 :(得分:0)
在你引用的句子出现后,你的阅读能力不够:
名称的重新定义将覆盖旧定义,因此这通常不是问题。如果新版本的模块未定义旧版本定义的名称,则旧定义仍然存在。
因此,您引用的句子仅适用于旧版本模块中定义的变量,但未在模块的新版本中定义。
那么你的问题:
所以,我的问题是如何在删除并重新加载后
dict
中x
不会出现dir
?
答案是你不能。但是你可以这样做:
del ex1.x
重装后。