如果我导入模块,则模块名称将显示在sys.modules
和globals()
之间。如果我再次删除它,它将从globals()
中删除,但仍位于sys.modules
。为什么这样?sys.modules和globals中的模块名称()
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']'中删除模块,这有时很有用。 – SingleNegationElimination