Python常用断言函数实例汇总


Posted in Python onNovember 30, 2020

Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行;反之,Python 解释器会报 AssertionError 错误。

assert 语句的语法结构为:

assert 表达式

assert 语句的执行流程可以用 if 判断语句表示(等效),如下所示:

if 表达式==True:
程序继续执行
else:
程序报 AssertionError 错误

有读者可能会问,明明 assert 会令程序崩溃,为什么还要使用它呢?这是因为,与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃,这有利于我们对程序排错,提高程序的健壮性。
因此,assert 语句通常用于检查用户的输入是否符合规定,还经常用作程序初期测试和调试过程中的辅助工具。
下面的程序演示了 assert 语句的用法:

mathmark = int(input())
#断言数学考试分数是否位于正常范围内
assert 0 <= mathmark <= 100
#只有当 mathmark 位于 [0,100]范围内,程序才会继续执行
print("数学考试分数为:",mathmark)

运行该程序,测试数据如下:

90

数学考试分数为: 90

再次执行该程序,测试数据为:

159

Traceback (most recent call last):
File "C:\Users\mengma\Desktop\file.py", line 3, in <module>
assert 0 <= mathmark <= 100
AssertionError

可以看到,当 assert 语句后的表达式值为真时,程序继续执行;反之,程序停止执行,并报 AssertionError 错误。

常用断言函数
常用

这里介绍几个常用断言的使用方法,可以一定程度上帮助大家对预期结果进行判断。-

  • assertEqual
  • assertNotEqual
  • assertTrue
  • assertFalse
  • assertIsNone
  • assertIsNotNone
  • assertEqual 和 assertNotEqual
  • assertEqual:如两个值相等,则pass
  • assertNotEqual:如两个值不相等,则pass

使用方法:

assertEqual(first,second,msg)其中first与second进行比较,如果相等则通过;msg为失败时打印的信息,选填;断言assertNotEqual反着用就可以了。

  • assertTrue和assertFalse
  • assertTrue:判断bool值为True,则pass
  • assertFalse:判断bool值为False,则Pass

使用方法:

  • assertTrue(expr,msg)其中express输入相应表达式,如果表达式为真,则pass;msg选填;断言assertFalse如果表达式为假,则pass
  • assertIsNone和assertIsNotNone
  • assertIsNone:不存在,则pass
  • assertIsNotNone:存在,则pass

使用方法:

assertIsNone(obj,msg)检查某个元素是否存在

总结:

常用

assertEqual(a, b) a == b
assertNotEqual(a, b) a != b
assertTrue(x) bool(x) is True
assertFalse(x) bool(x) is False
assertIs(a, b) a is b 2.7
assertIsNot(a, b) a is not b 2.7
assertIsNone(x) x is None 2.7
assertIsNotNone(x) x is not None 2.7
assertIn(a, b) a in b 2.7
assertNotIn(a, b) a not in b 2.7
assertIsInstance(a, b) isinstance(a, b) 2.7
assertNotIsInstance(a, b) not isinstance(a, b) 2.7

其它

assertAlmostEqual(a, b) round(a-b, 7) == 0
assertNotAlmostEqual(a, b) round(a-b, 7) != 0
assertGreater(a, b) a > b 2.7
assertGreaterEqual(a, b) a >= b 2.7
assertLess(a, b) a < b 2.7
assertLessEqual(a, b) a <= b 2.7
assertRegexpMatches(s, re) regex.search(s) 2.7
assertNotRegexpMatches(s, re) not regex.search(s) 2.7
assertItemsEqual(a, b) sorted(a) == sorted(b) and works with unhashable objs 2.7
assertDictContainsSubset(a, b) all the key/value pairs in a exist in b 2.7
assertMultiLineEqual(a, b) strings 2.7
assertSequenceEqual(a, b) sequences 2.7
assertListEqual(a, b) lists 2.7
assertTupleEqual(a, b) tuples 2.7
assertSetEqual(a, b) sets or frozensets 2.7
assertDictEqual(a, b) dicts 2.7
assertMultiLineEqual(a, b) strings 2.7
assertSequenceEqual(a, b) sequences 2.7
assertListEqual(a, b) lists 2.7
assertTupleEqual(a, b) tuples 2.7
assertSetEqual(a, b) sets or frozensets 2.7assertDictEqual(a, b) dicts 2.7

使用时机:

那么我们什么时候应该使用断言呢?如果没有特别的目的,断言应该用于如下情况:

  • 防御性的编程
  • 运行时对程序逻辑的检测
  • 合约性检查(比如前置条件,后置条件)
  • 程序中的常量
  • 检查文档
  • 例:防御性编程中添加断言

在代码开始添加注释是个好的开端,但是人们都不太喜欢读和更新这些注释,这些注释会很快变得过时。但对于断言,我们可以同时对这块代码编写文档,如果这些断言被违反了,会直接引起一个简单而又直接的失败。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python使用cookielib库示例分享
Mar 03 Python
Python实现LRU算法的2种方法
Jun 24 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
Pandas之ReIndex重新索引的实现
Jun 25 Python
django 通过URL访问上传的文件方法
Jul 28 Python
详解numpy.meshgrid()方法使用
Aug 01 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
利用Python自动化操作AutoCAD的实现
Apr 01 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
python3中编码获取网页的实例方法
Nov 16 Python
Python使用pandas导入csv文件内容的示例代码
Dec 24 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
Nov 30 #Python
Django 用户认证Auth组件的使用
Nov 30 #Python
python tqdm库的使用
Nov 30 #Python
Python+unittest+DDT实现数据驱动测试
Nov 30 #Python
Python logging自定义字段输出及打印颜色
Nov 30 #Python
详解Python中string模块除去Str还剩下什么
Nov 30 #Python
使用django自带的user做外键的方法
Nov 30 #Python
You might like
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
js时间比较示例分享(日期比较)
2014/03/05 Javascript
js实现的后台左侧管理菜单代码
2015/09/11 Javascript
node.js+express制作网页计算器
2016/01/17 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
js实现网页的两个input标签内的数值加减(示例代码)
2017/08/15 Javascript
关于meta viewport中target-densitydpi属性详解(推荐)
2017/08/18 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
angular2 ng2-file-upload上传示例代码
2018/08/23 Javascript
layui前端时间戳转化实例
2019/11/15 Javascript
改进Django中的表单的简单方法
2015/07/17 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
Python 中PyQt5 点击主窗口弹出另一个窗口的实现方法
2019/07/04 Python
python rsa实现数据加密和解密、签名加密和验签功能
2019/09/18 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
Python jieba结巴分词原理及用法解析
2020/11/05 Python
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
农行实习自我鉴定
2013/09/22 职场文书
临床护士自荐信
2014/01/31 职场文书
学校元旦晚会方案
2014/02/19 职场文书
副处级干部考察材料
2014/05/17 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
教师党的群众路线教育实践活动学习笔记
2014/11/05 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
论文答谢词
2015/01/20 职场文书
酒店财务经理岗位职责
2015/04/08 职场文书
毕业论文致谢范文
2015/05/14 职场文书
金榜题名主持词
2015/07/02 职场文书
春节随笔
2015/08/15 职场文书
python index() 与 rindex() 方法的使用示例详解
2022/12/24 Python