递归版本的'reload'
- 论坛
- 递归版本的'reload'
12 浏览
递归版本的'reload'
在开发Python代码时,我通常会在解释器中以特定的方式进行测试。我会import some_module
,进行测试,发现一个bug,修复bug并保存,然后使用内置的reload
函数来reload(some_module)
并再次进行测试。
然而,假设在some_module
中我有import some_other_module
,并且在测试some_module
时我发现了some_other_module
中的一个bug并进行了修复。现在调用reload(some_module)
不会递归地重新导入some_other_module
。我必须手动重新导入依赖项(例如通过reload(some_module.some_other_module)
或者import some_other_module; reload(some_other_module)
),或者如果我改变了一大堆依赖项并且忘记了需要重新加载哪些模块,我需要重新启动整个解释器。
更方便的做法是如果有一个recursive_reload
函数,我只需要执行recursive_reload(some_module)
,Python不仅重新加载some_module
,还递归地重新加载some_module
导入的每个模块(以及每个这些模块导入的模块,依此类推),这样我就可以确保我没有使用some_module
依赖的任何其他模块的旧版本。
我认为Python中没有内置的行为类似于我在这里描述的recursive_reload
函数,但是否有一种简单的方法来组合这样的功能?