如何在Python中调试使用交互式python调试器ipdb进行智能调试
很多时候在使用 Python 时,你会碰壁并努力弄清楚为什么一个函数不起作用。 一种常见的基本调试方法是使用打印语句,但这可能既乏味又耗时。 幸运的是,有一种更好的调试 Python 代码的方法:交互式 Python 调试器 ipdb。
在本文中,我们将讨论 ipdb 的基础知识以及如何使用它来调试 python 代码。 什么是ipdb?
ipdb 是一个交互式 python 调试器,允许您逐行单步执行代码。 它允许您检查变量及其值、设置断点,甚至即时执行代码。 它是调试 python 代码的强大工具,可以为您节省大量时间和挫折感。 ipdb的使用方法
我将使用您可能在数据科学应用程序中遇到的示例来解释如何使用 ipdb。 想象一下,您正在尝试使用日志函数转换数据,但遇到了引发错误的情况: import math def log_transform(x): return math.log(x) log_transform(5) log_transform(0)
在这里,你会遇到像这样的math域错误: ValueError: math domain error
但您可能不会立即意识到原因。 如果我们用 pip 安装 ipdb: pip install ipdb
然后我们可以使用 ipdb 来调试我们的代码。 为此,我们将在发生错误的行插入一个断点。 我们可以通过在代码中添加以下行来做到这一点: import ipdb; ipdb.set_trace()
因此,您的脚本(我们将其命名为 test_program.py)将更改为以下内容: import math def log_transform(x): import ipdb; ipdb.set_trace() return math.log(x) log_transform(5) log_transform(0)
现在,当您使用 python test_program.py 运行代码时,您将被带到 ipdb 提示符。 在这里您可以检查变量的值并逐行执行代码。
在 ipdb 提示符下,您还可以键入 help 以获取命令列表。 最有用的命令是 list、step、next、continue、print 和 quit。
您还可以键入 help,然后键入命令来了解该命令的作用。 例如,help list 将为您提供 list 命令的说明。 让我们看看我们的例子。
我们可以键入 list 来查看断点周围的代码。 然后我们可以键入 step 进入函数,next 移动到下一行,并继续运行代码直到下一个断点。 我们还可以使用任何 python 代码来弄清楚发生了什么。 例如,我们可以使用 print 来打印出一个变量的值。 如果我们输入 print(x),我们将看到变量 x 的值。
通过使用ipdb,我们可以快速的找出错误的来源。 在这种情况下,如果我们使用 continue 命令遍历参数为 5 的第一个 log_transform,我们会看到该函数运行良好。 如果我们再次键入 continue,我们会看到当我们尝试使用参数 0 运行该函数时会发生错误。
我们还可以通过使用 python test_program.py 再次进入交互式调试器来缩小范围,第二次使用 continue 调用该函数,使用 print(x) 测试参数 x 是什么并测试 commandmath.log(x ) 以及该特定代码行中可用的所有变量(x 等于 0)。 此工作流确实有助于处理更复杂的案例和应用程序,在这些案例和应用程序中,您可能有许多可能成为问题的变量。
我们现在通过添加一行代码并交互式地使用调试器缩小了错误原因的范围。 如果我们做一些研究,或者这带来了一些日志的先验知识,我们会发现错误的原因是日志函数没有为 0 定义。然后我们可以添加一些代码,使这一点对我们来说更明显 未来或与我们一起工作的其他程序员使用智能错误检查,例如 def log_transform(x): if x == 0: raise ValueError("Log function is not defined for 0") return math.log(x)
使用 ipdb 可以节省很多时间和挫折感。 因此,下次您在使用 Python 编程时遇到困难时,请尝试使用 ipdb,看看它如何帮助您调试代码。
坐月子不能不讲究也不能瞎讲究琪琪妈妈是位新手妈妈,坐月子这几天,婆婆总是告诉她,快把空调关了快躺床上休息不要站起来,不然以后会落下病根的。来来来,快躺下,坐月子就要多喝补汤补充营养北京儿童医院顺义妇儿医院产二
趣说凉山丨零关5尺道一线通南北来源四川日报川观新闻在凉山州越西县,有一古道名曰零关,古称5尺道,是古南方丝绸之路的一个组成段。它绵延百里,贯穿越西县南北,故越西县曾有一线通南北之称。汉时,蜀人司马相如受命出使西
失眠吃酸枣仁没效果?可能是你吃法错了酸枣仁,是个好东西。书上说它养心补肝,宁心安神,敛汗,生津。适合用于治疗虚烦不眠,惊悸多梦,体虚多汗,津伤口渴等症状。针对这些情况,酸枣仁又是如何大显身手的呢?1。焦虑紧张压力大经
想用阿胶补血养颜,但又属于不适宜体质怎么办?医生助你破局用阿胶补血美容养颜深受女性朋友的追捧,然而由于对阿胶认识不够,服用后不仅达不到预期的效果,甚至出现了上火消化不良等副作用,花了很多钱却只能望胶兴叹。一阿胶都具有什么功效?其实阿胶对
情侣度假好去处,你想要的浪漫在这里都能实现最浪漫的旅行是什么样的呢?是去西藏感受最虔诚的祷告,是去土耳其坐热气球俯视大地,还是去巴厘岛感受沙滩的魅力如果去不了远方,那就去九如山吧。坐落于海拔800m的九如山度假风景区,春沐
重新认识那拉提,就从这个冬天开始吧!也许你曾见过她令人迷醉的风景有遍野的山花烂漫葱郁的碧草成茵有赤红的秋叶如火却对这里的冬日风光知之甚少这一次我们不看花不看草独看那拉提的冬形容那拉提的冬日首选的词就是水墨画随着冬的韵
72岁了,为什么还是张艺谋?这3个因素说明一切很多网友可能没有意识到,这次冬奥会开幕式的总导演张艺谋已经72岁了。中国古人有句话,叫作江山代有才人出,各领风骚数百年。可是这次冬奥会的总导演为何还是张艺谋呢?而且此时的张艺谋虽然
冬奥会只是一个开始,该结束对中国的偏见了!来源环球资讯最具活力最有趣最勤奋最有自制力最重要的贸易伙伴这些是德国新闻网站时代在线主编弗洛里安哈尔姆斯在近日发表的一篇专栏文章中赋予中国和中国人民的标签。他在文中不仅积极评价了北
穿短裤直播被骂,主持天下足球15年却离职,段暄的跌宕人生一回顾2015年11月23号的晚上七点半,这大概是所有天下足球的粉丝最伤心的一天。因为陪伴了天下足球十五年的段暄,在这一刻正式与球迷们告别了,这期节目的主题是罗纳尔多。段暄也曾在天
朱易妈妈忍无可忍!放证据证明女儿清白,质疑她拼爹的适可而止今年的冬奥会上,中国运动健儿们在赛场上奋力争夺,用自己的实力和拼搏精神为中国军团赢得荣誉,也有很多运动员因为赛场上的表现登上热搜,比如朱易。因为在赛场上出现了一些失误,就有很多网友
心理学实验对教育的启发如何培养孩子的内在发展动力系列文章心理学实验对教育的启发本文涉及的心理学定律自我效能感习得性无助归因理论在我们老家有一个非常有趣的现象,那些以前最穷的村庄,现在恰恰成为最出人才的地方。当年那批孩子没钱继续学