学习笔记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 申明和访问控制 && 流程控制异常处理和断言

学习笔记 5月31日(周一):内容3 - 4 申明和访问控制 && 流程控制异常处理和断言

Jmeter学习笔记5-检查点

Python学习笔记之网络编程

Python学习笔记第八周

go语言学习笔记 — 进阶 — 接口:在接口和类型之间转换