前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过案例学Python之assert

通过案例学Python之assert

作者头像
fem178
发布2020-07-27 23:37:26
3150
发布2020-07-27 23:37:26
举报
文章被收录于专栏:数值分析与有限元编程

定义一个商品打折的函数:

代码语言:javascript
复制
## 商品打折函数,price为原价, discount为折扣,new_price为打折后的价格
def dazhe(price, discount):
    new_price = price * ( 1.0 - discount )                               
    assert  0 <= new_price <= price    
    return new_price

注意函数中有assert语句,当调用函数

代码语言:javascript
复制
print( dazhe(100, 0.5) )

输出结果为50,符合预期。如果是

代码语言:javascript
复制
print( dazhe(100, 2) )

则触发了AssertionError

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\springer\Desktop\if.py", line 7, in <module>
      print( dazhe(100, 2) )  
  File "C:\Users\springer\Desktop\if.py", line 4, in dazhe
      assert  0 <= new_price <= price
AssertionError

参数discount会出现无效的情况,比如大于1。程序没有语法及逻辑错误,这是个不太容易发现的问题。设置assert之后,从AssertionError可以轻松发现问题所在位置,这大大加快了程序调试工作。

断言和异常的区别

Python的断言是一种辅助调试功能,不是用来处理运行时错误的机制,使用assert的目的是让开发者更快地知道程序bug的原因,从而节省调试时间。断言不能滥用,更不能设置无效的断言。

学习编程是个长期的过程,网上那些快速成功的案例并不是常态,它给我们呈现的只是结果,而不是那之前漫长而乏味的过程。谁都会有感到枯燥的时候,一个问题久攻不下难免的,问题是你能否换其他事情平静之后再回过头来继续你之前枯燥的事情,如果还觉得枯燥那可能是你真的就不喜欢,如果可以继续那就继续!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数值分析与有限元编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档