python assert的用处示例详解


Posted in Python onApril 01, 2019

使用assert断言是学习python一个非常好的习惯,python assert 断言句语格式及用法很简单。在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要assert断言的帮助。本文主要是讲assert断言的基础知识。

python assert断言的作用

python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为

下面通过实例代码介绍下python assert 作用,具体内容如下所示:

python assert 句语格式及用法很简单。通常程序在运行完之后抛出异常,使用assert可以在出现有异常的代码处直接终止运行。 而不用等到程序执行完毕之后抛出异常。

python assert的作用

python assert如果发生异常就说明表达示为假。可以理解表示式返回 值为假 时就会触发异常。

assert语句的语法格式

assert expression [, arguments]
assert 表达式 [, 参数]

附加说明:assert也可以用于多个表达式的: assert expression1, expression2。
注意:表达式=false 时,则执行其后面的异常。

我们看几个示例

1:单个表达式:

a = 1
assert a < 0, '出错了,a大于0 啊'
print('这里不会输出')

输出:

Traceback (most recent call last):
 File "main.py", line 3, in <module>
 assert a < 0, '出错了,a大于0 啊'
AssertionError: 出错了,a大于0 啊

2:多个表达式:

a = 1
b = -1
assert a > 0, b < 0
print('正常输出,表达式返回真了') # 输出:正常输出,表达式返回真了

3:尝试捕获 assert 异常:

import traceback

try:
 assert a < 0
except AssertionError as aeeor: # 明确抛出此异常
 # 抛出 AssertionError 不含任何信息,所以无法通过 aeeor.__str__()获取异常描述
 print('AssertionError', aeeor, aeeor.__str__())

 # 通过 traceback 打印详细异常信息
 print('traceback 打印异常')
 traceback.print_exc()
except: # 不会命中其他异常
 print('assert except')

try:
 raise AssertionError('测试 raise AssertionError')
except AssertionError as aeeor:
 print('raise AssertionError 异常', aeeor.__str__())

输出:

AssertionError
 traceback 打印异常
 Traceback (most recent call last):
 File "main.py", line 7, in <module>
 aAssertionError
 raise AssertionError 异常 测试 raise AssertionErrorssert a < 0

 4:函数调用抛出异常:

# 除法运算
def foo(value, divide):
 assert divide != 0
 return value / divide
print('4除以2 =', foo(4, 2)) # 执行成功
print('4除以0 =', foo(4, 0)) # 抛出异常

输出:

4除以2 = 2.0
 Traceback (most recent call last):
 File "main.py", line 8, in <module>
 print('4除以0 =', foo(4, 0)) # 抛出异常
 File "main.py", line 3, in foo
 assert divide != 0
 AssertionError

通过上面几个示例,相信大家也深刻理解aseert的用处了

总结: 表达式返回false 时。直接抛出异常终止继续执行。

以上所述是小编给大家介绍的python assert的用处示例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
深入理解Python中各种方法的运作原理
Jun 15 Python
使用Python来开发Markdown脚本扩展的实例分享
Mar 04 Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
利用python实现AR教程
Nov 20 Python
TFRecord格式存储数据与队列读取实例
Jan 21 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
Python中格式化字符串的四种实现
May 26 Python
Keras 实现加载预训练模型并冻结网络的层
Jun 15 Python
python 实现围棋游戏(纯tkinter gui)
Nov 13 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 Python
OpenCV全景图像拼接的实现示例
Jun 05 Python
使用Python操作FTP实现上传和下载的方法
Apr 01 #Python
Python提取特定时间段内数据的方法实例
Apr 01 #Python
如何使用Python进行OCR识别图片中的文字
Apr 01 #Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 #Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 #Python
详解python的argpare和click模块小结
Mar 31 #Python
linux安装python修改默认python版本方法
Mar 31 #Python
You might like
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
php语言流程控制中的主动与被动
2012/11/05 PHP
php中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
PHP 只允许指定IP访问(允许*号通配符过滤IP)
2014/07/08 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
thinkphp缓存技术详解
2014/12/09 PHP
php多线程并发实现方法
2016/09/30 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
2018/05/31 PHP
PHP学习记录之数组函数
2018/06/01 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
Javascript面向对象扩展库代码分享
2012/03/27 Javascript
document.all的一个比较完整的总结及案例
2013/01/31 Javascript
Javascript中浮点数相乘的一个解决方法
2014/06/03 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
Vue.js组件tabs实现选项卡切换效果
2016/12/01 Javascript
面试常见的js算法题
2017/03/23 Javascript
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
教你完全理解ReentrantLock重入锁
2019/06/03 Javascript
vue 框架下自定义滚动条(easyscroll)实现方法
2019/08/29 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
Django中STATIC_ROOT和STATIC_URL及STATICFILES_DIRS浅析
2018/05/08 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
浅谈pytorch、cuda、python的版本对齐问题
2020/01/15 Python
tensorflow 变长序列存储实例
2020/01/20 Python
python数据库编程 ODBC方式实现通讯录
2020/03/27 Python
介绍下Lucene建立索引的过程
2016/03/02 面试题
七年级英语教学反思
2014/01/15 职场文书
资助贫困学生倡议书
2014/05/16 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书