如何在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,看看它如何帮助您调试代码。
光子力学研究取得进展近日,中国科学院西安光学精密机械研究所瞬态光学与光子技术国家重点实验室研究员姚保利团队,联合暨南大学李宝军团队新加坡国立大学教授仇成伟西班牙国家研究委员会教授NietoVesper
李少莉事件最新进展,官媒首次发声,原来事情和我们想象的不一样李少莉事件最新进展,官媒首次发声,原来事情和我们想象中的不一样一波未平,一波又起。56岁的李少莉,恐怕做梦都不会想到,一个新闻发布会,两个小插曲,竟然会让她的事业走到尽头。真是祸不
OriginOS3深度体验再一次把主动权交给用户在内卷严重的手机行业,硬件趋于同质化,堆料取胜的年代已然成为过去式,手机厂商急需开辟一片新大陆来冲破硬件的桎梏。为此,大厂们纷纷在操作系统上发力赢得了软件体验,或许就赢得了未来。初
樊小慧离婚事件最新进展!出轨男和小三做诀别,却饱含不舍与无奈千万粉丝网红樊小慧的离婚事件,可以说造成的网络影响真是太大了但小慧还是个识大体的人,她称对这件事情继续下去会被那些有心人利用,会对相关人员的名誉带来负面影响。而咋樊小慧发文表态了之
从3件到25件台北故宫言称两个月内会给大家有所交代台北故宫(资料图)华夏经纬网综合台媒报道台北故宫不久前刚被曝出一年多来毁损3件文物,6日再度被爆馆藏清代文物黄河兰州浮桥图遭故意裁切,8日台北故宫博物院院长吴密察证实,博物院内瓷器
国德访谈录丨我的青春献给党,88岁老党员军工记忆(下)三线军工厂是多少人的共同往事,在那个特殊的年代,多少军工人贡献了青春,一个个在深山之中的军工厂,沧海桑田,恍如隔世,那一段激情岁月和数以万千的三线人的跌宕历史,至今少有人知60年代
俞大猷戎马传奇,始于武所明朝一代名将俞大猷,大凡世人对他的印象评价,通常只有四个字抗倭英雄。顶多再加上一句,与戚继光齐名。其他的印象,近于寥寥。但笔者觉得,在人物气质上,俞大猷是明代最接近宋将气质的武将。
皇城根下的开封人,是怎样变成市井小民的?我是后京城开封的子民,生活在距它鼎盛时期的一千年后。一千年前,北宋最了不起的文人科学家良吏商人手艺人云集这里,就像今天的上海和北京。开封的繁荣源于京城,掌握各种资源,官府创造了市场
准儿媳变成姨太太袁克文是袁世凯的二儿子。有一次被袁世凯派到南京去办事。袁克文生性好玩,尤爱昆曲,到了金陵繁华之地,犹如鱼入池塘,龙归大海,到处吃喝玩乐,美丽的秦淮河畔,让他流连忘返。妓院云集的钓鱼
无所谓我会出手!鸿海董事长谈歌尔丢单优势在我最近有传闻称歌尔股份被苹果公司踢出了供应链,有分析师指出,很有可能是歌尔股份生产的AirPods等产品没有达到苹果的要求,因此苹果想另外找制造商。既然是代工产品,苹果会不会考虑近在
羊了个羊实控人拿走3亿后回应华为起诉亚马逊一商业圈1。羊了个羊实控人拿走3亿,背后公司回应清仓式分红近日,吉比特发布公告,披露今年前三季度收入38。30亿元,同比增长9。89归属上市公司股东净利润10。12亿元,同比下降1