Python 模块重新加载后的反射

Python reflection after module reloading

我试图在重新加载后反映一个模块。每次更改模块时,我都需要反映它以查看其当前状态。问题是它会记住所有以前的状态。这是我的代码。

main.py

from tkinter import *
from importlib import reload

def fun():
    import second
    reload(second)
    print(dir(second))

root=Tk()
Button(root,text='reload',command=fun).pack()
root.mainloop()

second.py

var1='hello'

例如,当我将 'second.py' 中的变量名从 'var1' 更改为 'var2' 时,它会打印变量 'var1' 和 'var2'。 我只需要最新版本的模块(仅'var2')。

感谢帮助

importlib.reload updates the module's global namespace, i.e. it retains the old name bindings. If you want a fresh module object, you can remove the old one from sys.modules 导入前:

def fun():
    sys.modules.pop('second', None)
    import second
    ...