在处理模块时,我使用 repl(python 控制台)来测试功能。
我试图解决的问题是很容易重新加载模块并在修改后重新导入模块对象。
一个例子说明了这个问题。
在控制台中,我开始测试包 abc 中的函数
>>> from a.b.c import *
>>> myFunction(1)
wrong answer
我回到文本编辑器并修复 myFunction 现在我想重新测试它(我不想杀死 repl 并重新启动它,因为我可能有一些我想重用的测试变量)
所以我必须做这样的事情:
>>> import a.b.c
>>> from importlib import reload
>>> reload(a.b.c)
>>> from a.b.c import *
>>> myFunction(1)
hopefully the right answer
我想编写一个函数来一次性完成重新加载和重新导入 *。
理想情况下,我想用类似的东西替换上一个会话
>>> myTestReload(a.b.c)
>>> myFunction(1)
hopefully the right answer
在 myTestReload() 函数中,我可以reload(a.b.c)
用来重新加载修改后的模块,但我没有找到一种方法来做等效的from a.b.c import *
这将重置globals
这里是一个示例itertools
。
import itertools
from itertools import *
from importlib import reload
itools = reload(itertools)
for k, v in itools.__dict__.items():
if k in globals():
globals()[k] = v
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句