Python断言

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

assert 语句的语法结构为:

assert 表达式

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

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

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

下面的程序演示了 assert 语句的用法:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
mathmark = int(input())
#断言数学考试分数是否位于正常范围内
assert 0 <= mathmark <= 100
#只有当 mathmark 位于 [0,100]范围内,程序才会继续执行
print("数学考试分数为:",mathmark)

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

90
数学考试分数为: 90

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

159Traceback (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)检查某个元素是否存在

总结:

常用

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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断言及常用断言函数总结相关推荐

  1. Python中字符串常用处理函数

    ** Python中字符串常用处理函数 ** 1.len( )函数 用len( )函数计算字符串的长度 2.strip( )函数 删除字符串两边的空白符(包括:'\n'.'\t'.'\r') 注:只能 ...

  2. python数学函数_「分享」关于Python整理的常用数学函数整理

    原标题:「分享」关于Python整理的常用数学函数整理 1.函数说明 abs(number)返回数字的绝对值,如abs(-10)返回10 pow(x,y[,z]) 返回x的y次幂(所得结果对z取模), ...

  3. python mat函数的作用_介绍python的matplotlib常用绘图函数

    免费学习推荐:python视频教程 matplotlib具有强大的绘图功能,但是语句琐碎,每次使用都需要一句一句书写未免太过麻烦.本文根据平时绘图经验总结了常用绘图函数,可以直接使用,非常方便impo ...

  4. python的matplotlib常用绘图函数

    matplotlib具有强大的绘图功能,但是语句琐碎,每次使用都需要一句一句书写未免太过麻烦.本文根据平时绘图经验总结了常用绘图函数,可以直接使用,非常方便 import matplotlib.pyp ...

  5. python用于日期常用的函数

    1.strptime strptime是将一个(时间)字符串解析为时间的一个类型对象,将字符串格式转为日期格式 import datetimetime1 = datetime.datetime.str ...

  6. Python中很常用的函数map(),一起来看看用法

    目录 一.函数作用 二.map()函数的语法 三.map()函数实例 四.运行结果出现:报错 一.函数作用 map()函数是Python中的一个内置函数,它的功能是:将指定的函数,依次作用于可迭代对象 ...

  7. python:字符串常用处理函数:

    [001]str→list while True:s = input("Please Input the Name('q' for Exit):\n")if (s=='q'):br ...

  8. python你真的懂断言嘛?

    目录 前言 一.python中的断言 二.具体案例 前言 先来看看断言是什么?它又有什么用? 编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设.程序员相信在程序中的某个特定点该表达 ...

  9. 【接口测试基础】第八篇 | PostMan常用断言及断言的工作原理

    Postman常用断言 1.断言响应状态码 Status code: Code is 200 步骤: 1.在Tests标签中,选中Status Code:code is 200,生成对应代码 2.适当 ...

  10. Python最常用的函数、基础语句有哪些?

    作者 | 朱卫军 来源 | Python大数据分析 Python有很多好用的函数和模块,这里给大家整理下我常用的一些方法及语句. 一.内置函数 内置函数是python自带的函数方法,拿来就可以用,比方 ...

最新文章

  1. android 读取asset下的文件注意事项
  2. 谷歌二季度净利同比增211%,英特尔降17%,两个公司盘后股价都大涨
  3. 在阿里干了 5 年招聘,这 10 条建议我必须分享给你!
  4. 用一个demo理解一下Flutter动画内部的代码流程
  5. android 监听手机开机
  6. CEF:MFC 对话框 Demo(VS2013)
  7. 工欲善其事必先利其器系列之:在VS里面折叠js代码
  8. 7-1 矩阵链相乘问题 (20 分)(思路+详解+题目解析) 动态规划做法
  9. Java SE 11(18.9)中的API更新
  10. webpackjsonp 还原_具有催化CO2还原性能的非贵金属配合物的配体设计
  11. 即时通讯飞鸽传书民意soft需求
  12. Java 8都出那么久了,Stream API了解下?
  13. python中用正则表达式检查密码是否安全
  14. c#进度条刻度_自定义刻度jQuery进度条及插件
  15. 【蓝牙sbc协议】sbc源码阅读笔记(二)——sbc_struct详解(下)
  16. 计算机组成原理 2:总线
  17. 安装和配置fedora19要做的那些事,超值经验
  18. 物联网毕设 --(STM32f407连接云平台检测数据)
  19. kaggle TMDB Box Office Prediction
  20. 解决IE没有响应、卡死现象

热门文章

  1. matlab中变量的命名规则
  2. 【Vue实用功能】Vue监听浏览器刷新和关闭事件
  3. 2017年6月计算机排名,桌面CPU性能排行 CPU天梯图2017年6月最新版
  4. oracle设置自增序列,oracle设置自增字段,oracle序列
  5. charles+https+安卓7.0+夜神模拟器,解决安卓7.0+版本https无法抓包问题
  6. 正交试验法生成测试用例工具PICT
  7. MIT molecular Biology 笔记8 RNA剪接
  8. flutter 的像素尺寸
  9. mysql rownum写法_mysql类似oracle rownum写法实例详解
  10. 巨详细一文教你如何撰写商业计划书