2024-04-23 18:13:58 发布
网友
在Python中,是否可以对当前正在调试的代码进行更改并继续而不必重新启动所有代码?(例如,我在C#中可以使用的方式。)
可以为名称指定新值,但仍可能有引用旧值的位置。在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时,这个值不会改变。在
call
foo
bar
你在寻求编辑的支持吗?Python-mode in Emacs可以运行一个“低级python进程”,您可以在使用代码块时向其发送代码块。或者可以直接在pythonshell中执行此操作,如上所示。在
使用pdb就可以完全掌握解释器的功能,使用
pdb
import pdb pdb.set_trace()
从那里你可以定义和创建新的对象,重新定义现有的对象,修改和重新加载模块等等。语法是simalar to gdb。如果您正在使用ipython,ipdb可能是一个更好的选择,或者您可以使用ipython魔术函数%debug自动调用调试器。在
gdb
ipdb
%debug
可以为名称指定新值,但仍可能有引用旧值的位置。在python shell上检查下面的会话:
函数
call
引用了新的foo
,但是bar
被赋予了旧的foo
的值,当您重用名称foo
时,这个值不会改变。在你在寻求编辑的支持吗?Python-mode in Emacs可以运行一个“低级python进程”,您可以在使用代码块时向其发送代码块。或者可以直接在pythonshell中执行此操作,如上所示。在
使用
pdb
就可以完全掌握解释器的功能,使用从那里你可以定义和创建新的对象,重新定义现有的对象,修改和重新加载模块等等。语法是simalar to
gdb
。如果您正在使用ipython,ipdb
可能是一个更好的选择,或者您可以使用ipython魔术函数%debug
自动调用调试器。在相关问题 更多 >
编程相关推荐