重新匯入模組
使用互動式直譯器時,你可能需要重新載入模組。如果你正在編輯模組並想要匯入最新版本,或者你已修補現有模組的元素並想要還原更改,則此功能非常有用。
請注意,你不能僅僅重新啟動模組以恢復:
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