学习笔记31Python中的断言
Posted SAP剑客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学习笔记31Python中的断言相关的知识,希望对你有一定的参考价值。
Python中的断言
一 、初识断言
功能:Python内置的assert语句(断言)可以用来自动检测Python程序中的错误,让程序更可靠更易于调试。
含义:断言语句是一种调试工具,用来测试某个断言条件,如果断言条件为真,则程序将继续正常执行;如果条件为假,则会引发AssertionError异常并显示相关错误信息。
例子:
上面的例子是商店某商品的打折功能,其中的assert语句是为了确保在任何情况下,通过该函数计算的折后价都在0到原价之间。例子中是打8折,返回折扣价24元,那么要是尝试输入“折扣”是200%呢?
这时候程序会停止并触发一个AssertionError的异常,因为违反了程序中设置的断言条件。这里还可以得知断言验证失败的具体位置,可以更加轻松的追溯问题所在,极大的加快了调试工作的速度。
为什么不用普通的异常来处理?
断言是为了告诉开发人员程序中发生了不可恢复的错误,对于可以预料的错误,用户可以予以纠正或重试。
断言用户程序内部自检,如声明一些代码中不可能出现的条件,如果触发了某个条件,即意味着程序中存在相应的Bug。
断言是一种调试辅助功能,并不是用来处理运行时错误的机制。
二、断言的语法
assert expression1 [, expression2]
其中expression1是需要测试的条件,可选的expression2是错误消息,如果断言条件为假,则会显示expression2的消息。
If __debug__:
If not expression1:
raise AssertionError(expression2)
三、注意事项
1、不要使用断言验证数据。
有些情况下设置Python解释器会全局禁用断言,那么所谓的条件会被忽略,条件下面的语句会被执行,从而造成不可预知的风险。
2、不要使用永远为真的断言。
若将一个元组作为断言语句中的第一个参数传递时,断言条件总为真,因为只要非空元组,那么结果一定是为真的,所以断言语句毫无意义。
以上是关于学习笔记31Python中的断言的主要内容,如果未能解决你的问题,请参考以下文章
学习笔记 5月31日(周一):内容3 - 4 申明和访问控制 && 流程控制异常处理和断言