python学习-代码调试(通过print调试、通过pdb调试、通过编译器调试(断点调试))

本文介绍了三种常用的代码调试方法:print调试、pdb调试和编译器断点调试。通过具体示例,详细展示了如何定位并解决代码错误,帮助读者提高调试效率。

通过print调试

首先我这里写了一段代码,保存列表中的偶数,然后返回列表,在函数执行后,我对函数结果进行打印。
见代码:


lst1 = [1, 2, 3, 4, 5, 6, 6, 6, 345, 3, 543, 53, 245, 3245, 23, 45]


def printEven(lst):
    evenLst = []
    for item in lst:
        if 0 == item % 2:
            # 使用了三种方式向lst添加元素
            evenLst.append(item)
            evenLst.insert(len(evenLst) - 1, item)
            evenLst.extend(item)
    return evenLst


print("printEven函数的返回值:", printEven(lst1))


但是呢,运行却会报错。
在这里插入图片描述

遇到问题,我们怎么入手去修改呢?
首先,能看到报错是11行。extend方法的参数类型错误。我把item打印出来看看呢。


print("item = {}, type = {}".format(item, type(item)))
evenLst.extend(item)
            

运行结果:
在这里插入图片描述
插入对象的类型为int,并不是iterable,接下来看看extend函数的参数说明:
在这里插入图片描述
既然知道了问所在,那修改参数传入方式,即可解决问题。


print("item = {}, type = {}".format(item, type(item)))
evenLst.extend([item])

运行结果:
在这里插入图片描述
因为我循环里面对列表插入了3次值,所以会有重复。
使用print打印,是比较常用的一种方式,当然问题也有,就是需要修改代码,并且修改完成后还需要删除print语句。

通过pdb调试

通过pdb调试,需要引入pdb模块


import pdb
pdb.set_trace()

在代码开头添加这两句,然后执行:
在这里插入图片描述
然后输入?,就能查看所有命令。
然后输入list(简写l)
在这里插入图片描述
会把执行到的语句的前后几行列出来,并且有一个箭头显示到当前执行的那一行。
我们使用step(简写s)命令,逐步执行代码
在这里插入图片描述
上一步执行到extend那一行,然后执行,报错,类型错误。说明是这一句代码执行错误。并且打印出来,参数类型不对。这样我们就能针对性修改了。

通过编译器调试(断点调试)

使用编译器的调试功能,设置断点的方式进行调试。
如图:
在这里插入图片描述
注释了引入的pdb模块,在第8行,行号后鼠标左键点击,出现一个红点,这就是断点。
使用shift + F9 组合键进行代码的运行
运行结果:
在这里插入图片描述
我们能看到输入的lst的值,以及执行到了第8行,行背景色有变化。
然后执行方式:
在这里插入图片描述
想要进入函数内部,使用F7, 想要直接一步步执行,使用F8
这样就能一步步调试代码,大家多调试几次,就熟练了,很容易就定位到错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值