有没有Python环境支持editandcontinue?

2024-04-23 18:13:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,是否可以对当前正在调试的代码进行更改并继续而不必重新启动所有代码?(例如,我在C#中可以使用的方式。)


Tags: 代码方式
2条回答

可以为名称指定新值,但仍可能有引用旧值的位置。在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时,这个值不会改变。在

你在寻求编辑的支持吗?Python-mode in Emacs可以运行一个“低级python进程”,您可以在使用代码块时向其发送代码块。或者可以直接在pythonshell中执行此操作,如上所示。在

使用pdb就可以完全掌握解释器的功能,使用

import pdb
pdb.set_trace()

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

相关问题 更多 >