通过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
这样就能一步步调试代码,大家多调试几次,就熟练了,很容易就定位到错误。
本文介绍了三种常用的代码调试方法:print调试、pdb调试和编译器断点调试。通过具体示例,详细展示了如何定位并解决代码错误,帮助读者提高调试效率。
)&spm=1001.2101.3001.5002&articleId=106725352&d=1&t=3&u=50a13cfcf9c247aa8c46d71df39bda38)
1万+

被折叠的 条评论
为什么被折叠?



