重新导入模块
使用交互式解释器时,你可能需要重新加载模块。如果你正在编辑模块并想要导入最新版本,或者你已修补现有模块的元素并想要还原更改,则此功能非常有用。
请注意,你不能仅仅重新启动模块以恢复:
import math
math.pi = 3
print(math.pi) # 3
import math
print(math.pi) # 3
这是因为解释器会注册你导入的每个模块。当你尝试重新导入模块时,解释器会在寄存器中看到它并且什么都不做。所以重新导入的难点是从寄存器中删除相应的项目后使用 import
:
print(math.pi) # 3
import sys
if 'math' in sys.modules: # Is the ``math`` module in the register?
del sys.modules['math'] # If so, remove it.
import math
print(math.pi) # 3.141592653589793
但更简单明了。
Python 2
使用 reload
功能:
Python 2.x >= 2.3
import math
math.pi = 3
print(math.pi) # 3
reload(math)
print(math.pi) # 3.141592653589793
Python 3
reload
功能已经转移到了 importlib
:
Python 3.x >= 3.0
import math
math.pi = 3
print(math.pi) # 3
from importlib import reload
reload(math)
print(math.pi) # 3.141592653589793