Python Glossary English

Python 3.4+importlibфункция

importlib.reload()

перезагрузка и кэши

Заново исполняет код уже импортированного модуля и обновляет его объект на месте; нужна в REPL и Jupyter после правки файла.

Синтаксис

module = importlib.reload(module)

Обновляется только сам объект модуля: имена, взятые через from m import x, по-прежнему указывают на старые значения, а экземпляры старых классов остаются экземплярами старых классов, и isinstance с новым классом даёт False. Аргумент — модуль, а не строка: reload('m') поднимает TypeError. Имена, удалённые из файла, в модуле не исчезают — reload не очищает его словарь.

Примеры

import importlib, sys
sys.path.insert(0, '.')
with open('cfg.py', 'w') as f:
    f.write('VALUE = 1\n')
import cfg
from cfg import VALUE
with open('cfg.py', 'w') as f:
    f.write('VALUE = 200  # changed\n')
importlib.reload(cfg)
print(cfg.VALUE, VALUE)  # → 200 1 — from-импорт остался старым
try:
    importlib.reload('cfg')
except TypeError as e:
    print(e)  # → reload() argument must be a module

См. также

Частые ошибки

Открыть в полном глоссарииdocs.python.orgСообщить о неточности