断言是什么
断言(assert)在很多语言中都存在,它主要为调试程序服务,能够快速方便地检查程序的异常或者发现不恰当的输入等,可防止意想不到的情况出现。
python中的断言语句
python自1.5版本开始引入断言语句,其基本语法如下:
assert expression [“”, expression2]
其中计算expression1的值会返回Ture或者False,当值为False的时候会引发AssertionError,而expression2是可选的,常用来传递具体的异常信息。
对Python中使用断言需要说明如下:
1、__debug__的值默认设置为True,且是只读的,在Py中还无法修改该值。
2、断言是有代价的,它会对性能产生一定的影响,对于编译型的语言,如C/C++,这也许并不那么重要,因为断言只在调试模式下启用。但Python并没有严格定义调试和发布模式之间的区别,通常禁用断言的方法是在运行脚本的时候加上-O标志,这种方式带来的影响是它并不优化字节码,而是忽略与断言相关的语句。
如:
运行python a会报AssertionError错误。
加上-O的参数:python -O a便可以禁用断言。
使用断言需要注意的点
断言实际上是被设计用来捕获用户所定义的约束的,而不是用来捕获程序本身错误的,因此使用断言需要注意以下几点:
不要滥用,这是使用断言最基本的原则。若由于断言引发了异常,通常代表程序中存在bug。因此断言应该使用在正常逻辑不可到达的地方或正常情况下总是为真的场合。
如果Python本身的异常能够处理就不要再使用断言。如对于类似于数组越界、类型不匹配、除数为0之类的错误,不建议使用断言来进行处理。
不要使用断言来检查用户的输入。如对于一个数字类型,如果根据用户的设计该值的范围应该是2—10,较好的做法是使用条件判断,并在不符合条件的时候输出错误提示信息。
在函数调用后,当需要确认返回值是否合理时可以使用断言。
当条件是业务逻辑继续下去的先决条件时可以使用断言。