任何Python环境都支持编辑并继续吗?

时间:2011-08-15 04:05:51

标签: python debugging

是否有可能在Python中更改您当前正在调试的代码并继续而不必重新启动所有内容? (例如我在C#中的方式。)

2 个答案:

答案 0 :(得分:12)

您可以通过pdb轻松获得翻译的全部功能,使用

import pdb
pdb.set_trace()

从那里你可以定义和创建新对象,重新定义现有对象,修改和重新加载模块等。语法是gdb的simalar。如果你正在使用ipython,ipdb可能是一个更好的选择,或者你可以使用ipython魔术函数%debug自动调用调试器。

答案 1 :(得分:1)

您可以为名称指定新值,但可能仍有引用旧值的位置。在python shell上查看下面的会话:

>>> def foo(): print 'Foo'
...
>>> bar = foo
>>>
>>> foo()
Foo
>>> bar()
Foo
>>>
>>> def foo(): print 'Bar'
...
>>> foo()
Bar
>>> bar()
Foo
>>>
>>> def call(): foo()
...
>>> call()
Bar
>>>
>>>
>>> def foo(): print 'Foo reloaded!'
...
>>>
>>> foo()
Foo reloaded!
>>> bar()
Foo
>>>
>>> call()
Foo reloaded!
>>>

函数call引用新foo,但bar已分配旧foo的值,并且在您重复使用名称时不会更改foo {1}}。

您是否要求编辑支持? Python-mode in Emacs可以运行“劣质python进程”,您可以在使用它们时发送代码块。或者您可以直接在Python shell中执行此操作,如上所示。