【发布时间】:2018-01-14 04:15:25
【问题描述】:
如果您在重新加载之前在模块中删除它,“重新加载”函数无法删除已加载到内存中的变量。换句话说,即使你在重新加载之前删除了变量,它仍然存在。
根据(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 中?
【问题讨论】:
-
你到底想做什么?通常不建议在普通代码中使用
reload()。 -
这是XY吗?
-
如果
ex1中有x, y的值,当然每次重新加载ex1时x, y都会再次出现。但是,如果您del ex1.x并且没有重新加载,那么ex1.x将从您的命名空间中消失。 -
@Idlehands 谢谢你的回答,是的,它可以做到。但我不想更改
ex1中的代码。 -
@StephenRauch
ex1模块只有x和y。这只是解释我的问题的小例子。所以实际上我有更多的变量、函数和类