Python断言及常用断言函数总结
Python断言
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
-
使用时机:
那么我们什么时候应该使用断言呢?如果没有特别的目的,断言应该用于如下情况:
- 防御性的编程
- 运行时对程序逻辑的检测
- 合约性检查(比如前置条件,后置条件)
- 程序中的常量
- 检查文档
- 例:防御性编程中添加断言
在代码开始添加注释是个好的开端,但是人们都不太喜欢读和更新这些注释,这些注释会很快变得过时。但对于断言,我们可以同时对这块代码编写文档,如果这些断言被违反了,会直接引起一个简单而又直接的失败。
refer:
相关文章
- python编程前景_Python前景如何,学完后可以从事方向?
- python的random()函数用法_Python随机函数random用法示例
- python中sqrt函数用法_Python : sqrt() 函数
- Python和Java的区别
- python执行测试用例_java随机函数random使用方法
- python常用模块大全_python常用
- python chr()和ord()_Python函数ord
- 跟我一起学Python从入门到精通《第三章》
- 【说站】python os.path.join()函数的使用
- 【说站】python函数的理解及定义
- 【说站】python模型集成是什么
- 【说站】python协程函数如何执行
- 【说站】python填充压缩的函数总结
- Python+Django实现基于人脸识别的门禁管理系统【源码】
- python udp编程_Python核心编程
- 解决python封装Logging模块后,log位置显示错误的问题
- python上的表白代码_用Python实现表白代码
- decode encode区别_python encode函数
- 【编写环境一】遇到常见python函数处理方式
- Python基础(十七):函数的深入了解
- Python 实现指定窗口置顶激活
- 【测试开发】python系列教程:函数(二)
- 新手学Python可行吗?需要什么基础?(新手学python可行吗?需要什么基础)
- Python内置函数一览表
- 一个python自定义的加密解密函数详解编程语言
- 用Python实现各种排序算法详解编程语言
- Python函数详解编程语言
- Python函数使用方法(高级用法)
- Linux下的Python开发技术之旅(linux下python开发)
- Python函数中定义参数的四种方式