程序编写完成或在编写过程中,需要对程序进行测试,根据测试发现的错误,进一步诊断,找出发生错误的原因和具体代码位置进行修改,这个过程称为程序调试。在一些情况下,可能需要查看或跟踪程序的运行状态,这种情况也属于程序调试。

在Python中,程序调试有多种方式可以使用:可以使用print函数在怀疑出错的代码位置输出调试信息,例如输出变量的内容等;也可以使用assert语句(断言语句)输出调试信息;还可以将调试信息输出到log文件,通过log文件了解程序的运行状况,定位发生错误的代码位置;还可以在代码中设置断点,跟踪程序的运行状态,定位发生错误的代码位置。

python修改系统运行的进程名 python修改程序_调试程序

 

 

使用print函数调试程序

使用print函数调试程序,是最容易掌握,也最方便使用的一种程序调试方法。

在怀疑出错的代码位置,使用print函数输出调试信息,根据输出的调试信息来发现错误原因,或查看程序的运行状态。

案例1:查看程序的运行状态

# 定义计算X平方的函数def squre(x):x = x ** 2# 输出调试信息,了解程序运行状况print(x)return xs = [1,2,3,4,5,6]# 使用map函数计算列表s所有项的平方a = map(squre,s)print(list(a))

案例2:发现程序出现异常的原因

# 定义两数相除函数def div(a,b):# 输出a、b的值,发现发生异常的原因print("a=%d:b=%d" % (a,b))temp = a / breturn tempif __name__ == '__main__':a = int(input("请输入一个整数:"))b = int(input("请输入一个整数:"))print(div(a,b))

案例2代码使用print函数输出a和b的值,当程序发生异常时,可以查看a和b的值,找到程序发生异常的原因。在案例2中,当b为0就会发生程序异常。

案例2语句“if __name__ == '__main__'”,用于表示该模块为直接执行模块,也可以说是主模块,只有该模块为主模块时,才会执行if内的语句。

使用assert断言语句调试程序

assert语句允许开发者在程序代码插入调试性断言,assert语句用于判断一个表达式,该表达式返回布尔值,若表达式返回False,则触发AssertionError异常,程序终止。

assert语句的语法如下:

assert expression [, expression]

其中assert是Python关键字,expression是Python表达式,该表达式返回布尔值,在assert关键字后面可以有多个表达式,每个表达式用英文逗号分隔。

案例3:使用assert断言语句调试程序

# 使用assert语句断言b不为0assert b != 0

在程序执行过程中,若b=0,当程序执行到assert b != 0语句时,表达式b != 0返回False,assert语句触发AssertionError异常,程序停止执行。

下面是程序的执行过程:

请输入一个整数:10请输入一个整数:

0Traceback (most recent call last):File "D:/pythoncode/test2.py", line 12, in <module>File "D:/pythoncode/test2.py", line 4, in divAssertionError>>>