云栖号:https://yqh.aliyun.com

第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策!

一个好的集成开发环境(IDE)附带的调试器是开发人员能够拥有的最强大的工具之一,但并不是每个人都在使用一个带有很棒代码调试器的集成发环境(IDE)。作为程序员,在调试 Python 代码时,你觉得最好用的调试器有哪些?如果没有的话,不妨试试使用 IPython 作为调试器吧。

以下为译文:

Tenderlove(Ruby和Rails的核心开发人员之一)写了一篇很棒的文章,叫做“I am a puts debuggerer”,当我还在玩Ruby的时候,我很喜欢这篇文章。这篇文章的重点是想告诉大家:在许多情况下,你不需要一个成熟的调试器。别误会我(或者Tenderlove)的意思,我认为,一个好的集成开发环境(IDE)附带的调试器是开发人员能够拥有的最强大的工具之一!它能让你可以很轻松地在代码中放置断点、在stack trace中移动、或者动态地检查和修改变量。它也使开发人员在大型代码库上工作更加轻松,并且可以帮助新手程序员加快新项目的进度。

然而,今天的人们仍然会使用print语句来调试他们的代码。我总是这样做,因为打印出一个变量既快又容易。“我要开始调试会话”这句话听起来很沉重,而“我认为这个变量有问题。我想打印出来看看!”就轻松多了。下面就是我们用5分钟就能写出的一个print语句的例子:

print(a_varible)

...

if foo:

print(">>>>>>>>>>>>>>Inside 3rd IF")

...

print(">>>>>>>>>>>>>>Inside 37th IF")

print(">>>>>>>>>> #@!?#!!!")

上面的代码看起来很熟悉吧?使用print语句进行代码调试是毫无问题的。很多时候,你要做的只是找出Bug。有时候,这也是你能运用的调试代码的唯一方法。因为在不影响用户使用的前提下,你很难将调试代码添加到生产环境代码中。然而,仅仅添加一些print语句,然后查看日志应该不会造成什么问题。

并不是每个人都在使用一个带有很棒代码调试器的集成发环境(IDE)。2019年Stack Overflow开发者调查报告显示:30.5%的开发人员使用Notepad++,25.4%的开发人员使用Vim,23.4%的开发者使用Sublime Text。这些都是文本编辑器!尽管我看到开发人员在使用Vim时比大多数使用PyCharm或VS Code的用户更有效率,但是要记住一个文本编辑器并不会带有强大的代码调试器。要调试Python代码,你当然可以使用标准的Python调试器pdb,但是现在你有一个更好的选择:那就是使用IPython作为调试器。

我使用VS Code已经快两年了,但我不记得上次使用其内置的调试器是什么时候。我大部分的调试工作都是在IPython中完成的。以下是我的调试方法:

将IPython会话嵌入到代码中

对我而言,最常用的做法是在代码中嵌入一个IPython会话。你只需要在代码中插入以下两行就可以做到:

from IPython import embed

embed()

我喜欢把这两行代码放在同一行,像下面这样:

from IPython import embed; embed()

这样的话,我只需要敲一次键盘就能把它移除掉。而且,在Python中,将多个语句放在同一行是一种坏习惯,因此所有的code linter都会将这行作为一个问题标注出来,这样的话,当调试完成后,调试就不会忘记把它移除

揭秘python的5种最佳调试方法_揭秘 IPython 的 5 种最佳调试方法-阿里云开发者社区...相关推荐

  1. python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...

    python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...

  2. python全局变量有缩进吗_Python全局变量和局部变量的问题 400 请求报错 -问答-阿里云开发者社区-阿里云...

    # coding:utf-8 sum = 5 def add(x, y): print sum sum = x + y if __name__ == '__main__': add(7, 8) 上面的 ...

  3. python画五角星和六角星程序_python画五角星和六角星程序-阿里云开发者社区

    1.五角星 import turtle turtle.forward(100) turtle.right(144) turtle.forward(100) turtle.right(144) turt ...

  4. python 智能识别 商品_阿里云货架商品识别与管理Python SDK使用示例-阿里云开发者社区...

    概述 货架商品识别与管理(Retail Image Recognition)是基于深度学习.图像检测.图像识别等技术,为新零售品牌商/经销商提供AI商品识别能力的阿里云产品:适用于货架商品识别.陈列识 ...

  5. python 黑客工具开发_python黑客软件的搜索结果-阿里云开发者社区

    带你读<Python科学计算(原书第2版)>之一:导论 计算机科学丛书点击查看第二章点击查看第三章Python科学计算(原书第2版)Python for Scientists, Secon ...

  6. python树莓派编程 沃尔弗拉姆_《 Python树莓派编程》——3.3 Python入门-阿里云开发者社区...

    本节书摘来自华章出版社<Python树莓派编程>一书中的第3章,第3.3节,作者:[美]沃尔弗拉姆·多纳特(Wolfram Donat)著韩德强 等译,更多章节内容可以访问云栖社区&quo ...

  7. 不是python对文件的读操作方法的是-一文读懂Python对文件的各种操作方式-阿里云开发者社区...

    文件操作:Python中的文件对象不仅可以用来访问普通的磁盘文件,而且也可以访问任何其它类型抽象层面上的"文件". 通过Python程序来对计算机中的各种文件进行增删改查的操作,也 ...

  8. python string模块安装_python String模块-阿里云开发者社区

    string成员常量: ascii_letters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPQRSTUVWXYZ' ascii_lowercase  ...

  9. python与材料计算公式_《从问题到程序:用Python学编程和计算》——2.11 补充材料-阿里云开发者社区...

    本节书摘来自华章计算机<从问题到程序:用Python学编程和计算>一书中的第2章,第2.11节,作者 裘宗燕,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2 ...

最新文章

  1. 你真会IDEA的调试功能吗?这4个技巧带你起飞!
  2. searchindexer.exe占cpu使用率高
  3. .NET 6新特性试用 | System.Text.Json序列化代码自动生成
  4. KISS保持简单:纪念丹尼斯·里奇
  5. ajaxfileupload -- 一款不错的AJAX文件上传插件
  6. ArcGIS使用模型构建器批量剪裁影像
  7. 互联网和大数据是什么意思_互联网大数据是什么,求详细的解答
  8. 如何在matplotlib中使用新罗马字体
  9. 偏微分方程matlab课件,MATLAB偏微分方程求解.ppt
  10. linux之系统间的文件传输(scp,rsync以及二者之间的区别)
  11. halcon图像灰度操作
  12. 韦根Wiegand协议
  13. 融合多策略的改进麻雀搜索算法-附代码
  14. 遗留系统的技术栈迁移
  15. 嵌入式SQL数据库连接简便操作
  16. 网络3共享网络2计算机打印机,两台电脑如何共享打印机
  17. Hbase连接线程ThreadLocal
  18. lua连接 oracle 数据库,关于lua操作oracle数据库问题总结
  19. Linux 下使用杀毒软件clamav扫描木马病毒
  20. 初等几何(已知三角形三边,求外接圆直径)

热门文章

  1. EF Core 2.1路线图:视图、GROUP BY和惰性加载
  2. 从头编写 asp.net core 2.0 web api 基础框架 (2)
  3. IdentityServer4 实现自定义 GrantType 授权模式
  4. Microsoft使用.NET Core SDK遥测数据
  5. .NET的一点历史故事:招兵买马和聚义山林
  6. [Asp.Net Core轻量级Aop解决方案]AspectCore Project 介绍
  7. WebAPI前置知识:HTTP与RestfulAPI
  8. 动态规划之两个字符串的最大子序列
  9. Android之二维码扫描的总结
  10. 《假如编程是魔法之零基础看得懂的Python入门教程 》——(六)精简魔法更强大