28 | 如何合理利用assert?
景霄
该思维导图由 AI 生成,仅供参考
你好,我是景霄。
相信你平时在写代码时,肯定或多或少看到过 assert 的存在。我也曾在日常的 code review 中,被一些同事要求增加 assert 语句,让代码更加健壮。
不过,尽管如此,我发现在很多情况下,assert 还是很容易被忽略,人们似乎对这么一个“不起眼”的东西并不关心。但事实上,这个看似“不起眼”的东西,如果能用好,对我们的程序大有裨益。
说了这么多,那么究竟什么是 assert,我们又该如何合理地使用 assert 呢?今天这节课,我就带你一起来学习它的用法。
什么是 assert?
Python 的 assert 语句,可以说是一个 debug 的好工具,主要用于测试一个条件是否满足。如果测试的条件满足,则什么也不做,相当于执行了 pass 语句;如果测试条件不满足,便会抛出异常 AssertionError,并返回具体的错误信息(optional)。
它的具体语法是下面这样的:
我们先来看一个简单形式的assert expression,比如下面这个例子:
它就相当于下面这两行代码:
再来看assert expression1, expression2的形式,比如下面这个例子:
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了如何合理利用assert语句来提高程序的健壮性。作者首先解释了assert的基本语法和概念,指出其主要作用是用于测试条件是否满足,如果条件不满足则抛出AssertionError异常。通过实际应用的例子,展示了在不同场景下如何合理使用assert语句,如在计算价格时进行范围检查、对输入类型进行检查等。此外,作者还提到了一些错误的assert用法,警示读者在使用assert时需谨慎,避免出现安全漏洞或不合理的检查。总的来说,本文通过详细的解释和实际例子,帮助读者更好地理解和使用assert语句,提高程序的可靠性和稳定性。文章还提到了assert的合理使用可以增加代码的健壮度,同时也方便了程序出错时开发人员的定位排查。但也警示不能滥用assert,需要根据情况选择合适的处理方式,同时对于程序中的一些run-time error,需要使用异常处理。整体来说,本文内容丰富,通过具体案例和技术原理的讲解,为读者提供了深入了解和合理运用assert语句的指导。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 核心技术与实战》,新⼈⾸单¥59
《Python 核心技术与实战》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(28)
- 最新
- 精选
- 更好的做自己个人认为assert的使用应该是,有没有assert程序都能够正常运行,但有了assert可以使我们的代码后期维护更加方便
作者回复: 说的很好
2019-07-12379 - 小侠龙旋风印象中好像就这个用法比较常用一点: assert isinstance(input, list), 'input must be type of list'
作者回复: 这个是一个常用的例子,但是文中所讲的其实都挺常用的
2019-07-1213 - 阿卡牛正式上线时也建议用assert??
作者回复: 线上代码里也有assert的
2019-07-1229 - 稳我记得以前看过assert会严重影响运行性能,所以一直不在代码里用。工作中,主要是单元测试用,想跟老师了解fb的规定
作者回复: 没有这个说法
2019-07-123 - 梁大瓜我记得最早写机器学习代码的时候,assert用来检查输入。2019-08-0712
- 图·美克尔写测试代码时用2019-07-159
- 郭纯怎么确定使用还是不使用 assert 首先确定这段代码是否有出现错误的可能 然后再确定删除 assert 代码会不会影响到原有的逻辑. assert 不应该用到业务的逻辑代码中 更多的是参数的检查,一段算法结果的验证.2020-10-178
- 云蝈蝈学习assert的时候用过2020-08-0545
- Fergusassert 测试一个条件是否满足 检查值在某一确定的范围: 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-174
- 丁丁历险记个人理解,assert 主要是做健壮性处理。2019-10-073
收起评论