在 Python 中重新加载模块?
reload()
用于重新加载之前导入的模块或已加载的模块。这在交互式会话中反复运行测试脚本的情况下非常有用,因为它始终使用我们正在开发的模块的第一个版本,即使我们已经更改了代码。在这种情况下,我们需要确保模块已重新加载。传递给 reload()
的参数必须是之前成功导入的模块对象。
执行 reload()
时,需要了解以下几点:
Python 模块的代码将被重新编译,并且模块级代码将被重新执行,定义一组新的对象,这些对象通过重用最初加载模块的加载器绑定到模块字典中的名称。但是,模块的初始化函数不会再次加载。
只有在旧对象的引用计数降至零后,才会回收旧对象。
如果存在任何更改,模块命名空间中的名称将更改为新对象。
旧对象的其它引用(例如模块外部的名称)不一定指向新对象,如果需要,必须在每个出现的命名空间中更新它们。
如何加载模块
让我们首先看看如何在 Python 中加载模块。使用 `import` 语句加载:
import importlib
如何重新加载模块
reload()
方法用于重新加载模块。传递给 reload()
的参数必须是之前成功导入的模块对象。
import importlib importlib.reload(module)
示例
我们正在重新加载 `importlib` 模块:
import sys import importlib importlib.reload(sys)
广告