【发布时间】:2011-08-19 22:02:38
【问题描述】:
如果我导入一个模块,模块名称会同时出现在sys.modules 和globals() 中。如果我再次删除它,它会从globals() 中删除,但仍驻留在sys.modules 中。为什么会这样?
import mymodule
'mymodule' in globals() # True
'mymodule' in sys.modules # True
del mymodule
'mymodule' in globals() # False
'mymodule' in sys.modules # Still True, why?
我还发现了以下区别:
from mypackage import mymodule
'mypackage' in sys.modules # True
'mymodule' in sys.modules # False !
'mypackage.mymodule' in sys.modules # also True !
虽然答案与globals() 互补:
'mypackage' in sys.modules # False
'mymodule' in sys.modules # True
'mypackage.mymodule' in sys.modules # False
【问题讨论】:
-
它可以从 sys.modules 中删除模块,
del sys.modules['mymodule'],这有时很有用。
标签: python