当前位置: 首页 > 面试题库 >

使用IPython进行分步调试

茅华灿
2023-03-14
问题内容

根据我的阅读,有两种方法可以在Python中调试代码

  • 使用传统的调试器,例如pdbipdb。它支持诸如cfor continuenfor step-oversforstep-into等命令,但是您没有直接访问IPython shell的权限,这对于对象检查非常有用。

  • 使用 IPython的 通过嵌入代码中的一个IPython的壳。您可以这样做from IPython import embed,然后embed()在您的代码中使用。当您的程序/脚本命中一条embed()语句时,您将进入IPython shell。这允许使用所有IPython好东西对对象进行全面检查并测试Python代码。但是,使用时,embed()您将无法通过便捷的键盘快捷键 逐步 完成代码。

有什么办法可以将两全其美相结合?即

  1. 能够 使用方便的pdb / ipdb键盘快捷键 逐步 完成代码。
  2. 在任何这样的步骤(例如,在给定的语句上),都可以访问成熟的 IPython shell

MATLAB中进行IPython调试:

在MATLAB中可以找到这种“增强调试”类型的示例,在该示例中,用户 始终 可以完全访问MATLAB引擎/外壳,并且她仍可以 逐步
浏览代码,定义条件断点等。我已经与其他用户讨论过,这是人们从MATLAB迁移到IPython时最想念的调试功能。

在Emacs和其他编辑器中进行IPython调试:

我不想让这个问题过于具体,但是我主要在Emacs中工作,所以我想知道是否有任何方法可以将此功能引入其中。 理想情况下
,Emacs(或编辑器)将允许程序员在代码上的任何位置设置断点,并与解释器或调试器进行通信,以使其在您选择的位置停止,并在该位置提供完整的IPython解释器。


问题答案:

您可以使用IPython的%pdb魔力。只需调用%pdbIPython,当发生错误时,您会自动转到ipdb。尽管您没有立即迈出一步,但您却ipdb步其后尘。

这使调试单个功能变得容易,因为您可以使用加载文件%load然后运行一个功能。您可以assert在正确的位置使用来强制执行错误。

%pdb是线魔术。呼之为%pdb on%pdb 1%pdb off%pdb 0。如果在不带参数的情况下调用它,则它将作为切换。



 类似资料:
  • 问题内容: 根据我的阅读,有两种方法可以在Python中调试代码: 使用传统的调试器,例如或。它支持诸如for ,for ,for等命令,但是您没有直接访问IPython shell的权限,这对于对象检查非常有用。 使用 IPython的 通过嵌入代码中的一个IPython的壳。您可以这样做,然后在您的代码中使用。当您的程序/脚本命中一条语句时,您将进入IPython shell。这允许使用所有I

  • 我正在使用Python(IPython 我有一个3000个唯一ID的数组,可以从API中提取数据,一次只能使用一个ID调用API。 我希望以某种方式同时拨打3组1000个电话,以加快速度。 最好的方法是什么? 提前感谢任何帮助!

  • 问题内容: 假设我有一个IPython会话,从中调用一些脚本: 有没有一种方法可以引入断点,从中可以从IPython检查工作区? 我记得在以前的IPython版本中可以做到这一点: 但是该子模块似乎不再可用。 假设我已经打开了IPython会话: 如何在我选择的位置停止程序并使用IPython检查我的工作区 ? 通常,我更喜欢不需要我预先指定行号的解决方案,因为我希望上面有多个这样的调用,而不必跟

  • RestTemplate文档中的Spring注意: 注意:从5.0开始,这个类处于维护模式,只接受微小的更改请求和bug。请考虑使用org.springframework.web.reactive.client.WebClient,它具有更现代的API,支持同步、异步和流场景。 https://docs.spring.io/spring-framework/docs/current/javadoc

  • 问题内容: 有什么方法可以使用AngularJS进行同步调用吗? AngularJS文档不是很明确,也不是为了找出一些基本内容而扩展。 在服务上: 问题答案: 不是现在。如果查看源代码(从2012年10月开始),您会发现对XHR open的调用实际上是硬编码为异步的(第三个参数为true): 您需要编写自己的执行同步调用的服务。通常,由于JavaScript执行的性质,您通常不需要执行此操作,最终

  • 我搜索了许多网站和文档,但异步调用使用的代码相同。但不确定为什么它不起作用。如果我错过了什么,有人能帮我吗?