是否有可能在Python中更改您当前正在调试的代码并继续而不必重新启动所有内容? (例如我在C#中的方式。)
答案 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中执行此操作,如上所示。