Python 核心技术与实战
景霄
Facebook 资深工程师
114324 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
Python 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

28 | 如何合理利用assert?

assert的作用与注意事项
read_and_process()函数的错误用法
delete_course()函数的错误用法
func(input)函数的例子
calculate_average_price()函数的例子
apply_discount()函数的例子
assert语句的具体语法
assert语句的作用
思考题
总结
assert错误示例
assert的用法
什么是assert?
Assert的合理使用

该思维导图由 AI 生成,仅供参考

你好,我是景霄。
相信你平时在写代码时,肯定或多或少看到过 assert 的存在。我也曾在日常的 code review 中,被一些同事要求增加 assert 语句,让代码更加健壮。
不过,尽管如此,我发现在很多情况下,assert 还是很容易被忽略,人们似乎对这么一个“不起眼”的东西并不关心。但事实上,这个看似“不起眼”的东西,如果能用好,对我们的程序大有裨益。
说了这么多,那么究竟什么是 assert,我们又该如何合理地使用 assert 呢?今天这节课,我就带你一起来学习它的用法。

什么是 assert?

Python 的 assert 语句,可以说是一个 debug 的好工具,主要用于测试一个条件是否满足。如果测试的条件满足,则什么也不做,相当于执行了 pass 语句;如果测试条件不满足,便会抛出异常 AssertionError,并返回具体的错误信息(optional)。
它的具体语法是下面这样的:
assert_stmt ::= "assert" expression ["," expression]
我们先来看一个简单形式的assert expression,比如下面这个例子:
assert 1 == 2
它就相当于下面这两行代码:
if __debug__:
if not expression: raise AssertionError
再来看assert expression1, expression2的形式,比如下面这个例子:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了如何合理利用assert语句来提高程序的健壮性。作者首先解释了assert的基本语法和概念,指出其主要作用是用于测试条件是否满足,如果条件不满足则抛出AssertionError异常。通过实际应用的例子,展示了在不同场景下如何合理使用assert语句,如在计算价格时进行范围检查、对输入类型进行检查等。此外,作者还提到了一些错误的assert用法,警示读者在使用assert时需谨慎,避免出现安全漏洞或不合理的检查。总的来说,本文通过详细的解释和实际例子,帮助读者更好地理解和使用assert语句,提高程序的可靠性和稳定性。文章还提到了assert的合理使用可以增加代码的健壮度,同时也方便了程序出错时开发人员的定位排查。但也警示不能滥用assert,需要根据情况选择合适的处理方式,同时对于程序中的一些run-time error,需要使用异常处理。整体来说,本文内容丰富,通过具体案例和技术原理的讲解,为读者提供了深入了解和合理运用assert语句的指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(28)

  • 最新
  • 精选
  • 更好的做自己
    个人认为assert的使用应该是,有没有assert程序都能够正常运行,但有了assert可以使我们的代码后期维护更加方便

    作者回复: 说的很好

    2019-07-12
    3
    79
  • 小侠龙旋风
    印象中好像就这个用法比较常用一点: assert isinstance(input, list), 'input must be type of list'

    作者回复: 这个是一个常用的例子,但是文中所讲的其实都挺常用的

    2019-07-12
    13
  • 阿卡牛
    正式上线时也建议用assert??

    作者回复: 线上代码里也有assert的

    2019-07-12
    2
    9
  • 我记得以前看过assert会严重影响运行性能,所以一直不在代码里用。工作中,主要是单元测试用,想跟老师了解fb的规定

    作者回复: 没有这个说法

    2019-07-12
    3
  • 梁大瓜
    我记得最早写机器学习代码的时候,assert用来检查输入。
    2019-08-07
    12
  • 图·美克尔
    写测试代码时用
    2019-07-15
    9
  • 郭纯
    怎么确定使用还是不使用 assert 首先确定这段代码是否有出现错误的可能 然后再确定删除 assert 代码会不会影响到原有的逻辑. assert 不应该用到业务的逻辑代码中 更多的是参数的检查,一段算法结果的验证.
    2020-10-17
    8
  • 云蝈蝈
    学习assert的时候用过
    2020-08-05
    4
    5
  • Fergus
    assert 测试一个条件是否满足 检查值在某一确定的范围: assert a>0, “a must > 0” 检查值的数据类型: assert isinstance(a, list), “a should be list” 注: 1. assert 是可以使用-O关闭的; 2. run-time error需要使用try-except异常处理;
    2019-07-17
    4
  • 丁丁历险记
    个人理解,assert 主要是做健壮性处理。
    2019-10-07
    3
收起评论
显示
设置
留言
28
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部