在编写或调试Python程序时,我喜欢使用-i
命令行开关,以便直接检查我的函数,而不必从头到尾地运行所有内容。
但是,每当我更改代码时,我必须关闭和重新启动交互式会话,从而丢失可能定义的所有临时变量。我该如何在Python解释器中重新加载源文件?
内置函数reload
看起来就是为此而生,但我只能使用它与命名模块一起使用:
>> import my_prog
>> print my_prog.x
-- prints an error, because x is not defined --
-- edited my_prog.py to add the x global now...
>> reload(my_prog)
>> print my_prog.x
-- prints x
然而,如果我在一开始使用from my_prog import *
,那么重新加载无法起作用,再次进行导入也没有效果。
bar()
的函数foo()
,并且你决定将bar
重命名为baz
。 只是你忘记编辑foo
的主体,所以它仍然调用bar()
(在重新加载后仍然有效)。 在你意识到之前,你已经花了半天时间进行调试。 - wildekat