重新匯入模組

使用互動式直譯器時,你可能需要重新載入模組。如果你正在編輯模組並想要匯入最新版本,或者你已修補現有模組的元素並想要還原更改,則此功能非常有用。

請注意,你不能僅僅重新啟動模組以恢復:

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