Python调试

python的调试包括:代码调试,单元测试,文档测试。


异常,错误处理:

在程序运行中,总会遇到各种各样的错误,有的错误时编程代码有问题造成的,这种错误我们通常称为BUG,BUG是必须修复的,

还有的错误时用户输入造成的,这种能够错误可以通过检查用户的输入来做相应的处理。

还有一种错误是完全无法唉程序运行过程中预测的,比如写文件,磁盘满了写不进去了,比如从网络中抓取数据,突然断网了,

通常这种错误称为异常,在程序中这种必须要处理的,否则程序会因为问题而退出。

遇到错误最原始的方式结局方法是实现约定一个错误代码,这样就知道是否有错,在操作系统提供的调用中非常常用

缺点:

1.函数本身返回的数据与错误码会混在一起,需要大量的判断是否出错,

2.一旦出错,需要一级一级上报,知道讴歌函数可以处理。

try……except……else 语句

格式:

try:

    语句

expect 错误表示码 as e:

    语句1

……

expect 错误表示码 as e:

    语句N

else:

    语句e

作用:

用来将检测try语句块中的错误,如果有错误让except语句捕获异常并处理。

逻辑:

    1.如果try后的语句执行时发生了异常,就调回到执行try并执行第一个匹配该异常的except语句,异常处理结束

就结束整个try语句(除非处理异常时引发新的异常)

    2.如果try后的语句执行时发生了异常,但是没有匹配的except子句,异常提交到上一层try,或者到程序的最上层,

到最上层就结束了。

    3.如果try后的语句执行时没有发生异常,就不会匹配expect,如果有else语句就执行else 最后结束整个try语句。

特殊的使用:

1.使用except不带任何错误类型,捕获任何异常,

2.使用except而带有多种异常类型,同时匹配多种异常,用元组扩起来。

使用注意项

1.python中的错误实际上是类,所有的错误类型都继承自BaseExpectionn,在使用时注意父类会将子类异常一网打尽。

2.如果我们跨越多层调用,最后错误会被传上来。

try……except……finally 语句

无论try语句块是否发生异常 都会处理最后的finmlly代码

调试:

写好代码能直接运行的概率非常小,总会在不经意之间出现很多的BUG,有的bug很简单,但是有的bug非常难。

print:

缺点:

将来得删除调试的print,运行结果也会包含一些垃圾信息

断言:    assert

使用:

凡是可以用print调试的地方,都可以通过断言来代替。

assert 语句, "输出"

逻辑:

当程序执行到assert语句时,首先执行语句内的表达式,如果为真继续向下执行,否则断言失败,assert会抛出

AssertionError异常,异常的信息为第二个表达式的值。

缺点:

也是臃余

优点:

在启动程序时可以通过命令关闭assert   在运行之前加-O就取消了

logging:

不会抛出异常 但是能写到文件里

import logging

logging.basicConfig(level=logging.INFO)

pdb

使用:python的调试器,让程序能单步方式,可以随时查看运动动态

python -m pdb xxx.py

调试命令:

n: 单步执行代码

p 变量名:查看变量

q:退出调试

缺点:麻烦,只能一行一行的执行

自定义开始断点

pdb.set_trace() 设置在要调试 的前边  调试是 直接python xxx.py

 

IDE断点

Debug

print("-------------1")

a = 1

print("-------------2")

print("-------------3")

b = 2

print("-------------4")

print("-------------5")

print("-------------6")

print("-------------7")

c = 3

n = "0"

n = int(n)

print(10 / n)

print("-------------8")

print("-------------9")

单元测试:

作用:

用来对一个函数、一个类或者一个模块来进行正确性检测的测试工具。

结果:

    1.单元测试通过:说明这个函数或者类能够正常通过,

    2.单元测试不通过:要么有BUG,要么测试的条件输入不正确。

意义:

    1.假设对函数的代码进行了修改,只需再跑一次单元测试,如果通过说明此时的修改不会对函数的原有行为造成影响。

    2.确保一个程序模块的行为符合设计的测试用例,在姜凯修改的时候,可以极大的保证该模块依然正确

文档测试:

 把注释当做代码执行 格式按照python交互式格式进行

你可能感兴趣的:(python)