Jupyter 中的调试和 运行 模式

Debug and run mode in Jupyter

像在 matlab 中一样,Jupyter 中是否有可能 运行 调试模式下的函数在断点处暂停执行,而在 运行 模式下函数忽略断点? 在一个简单的例子中

from IPython.core.debugger import set_trace

def debug(y):
    x = 10
    x = x + y 
    set_trace()
    for i in range(10):
        x = x+i
    return x

debug(10)

是否有可能我们调用函数时忽略 set_trace 而函数通常是 运行?

我想要这个的原因是,在我的函数中,我放置了很多设置跟踪,当我只想 运行 没有跟踪时,我需要注释所有设置跟踪。有没有更简单的方法?

我不知道有什么方法可以直接用 Jupyter 做到这一点,但你可以做的是猴子补丁 set_trace() 像这样(我建议把它放在自己的单元格中,所以当你想重新打开调试时,你可以重新运行它):

from IPython.core.debugger import set_trace
debug_mode = False #switch this to True if you want debugging back on
if not debug_mode:
  def pass_func():
    pass
  set_trace = pass_func

这样做是将名称 set_trace 重新绑定为一个什么都不做的函数,因此每次调用 set_trace() 时,它只会 pass.

如果要重新打开调试,只需将 debug_mode 标志切换为 True 并重新 运行 单元格。然后,这会将名称 set_trace 重新绑定为从 IPython.core.debugger.

导入的 set_trace