发布于2019-08-05 18:54 阅读(1102) 评论(0) 点赞(5) 收藏(5)
assert的语法:
assert_stmt ::= "assert" expression ["," expression]
例:
assert 1 == 2, 'assertion is wrong' Traceback (most recent call last): File "assert.py", line 4, in <module> assert 1 == 2, 'assertion is wrong' AssertionError: assertion is wrong
相当于
if __debug__: if not expression1: raise AssertionError(expression2)
assert(1 == 2, 'This should fail') # 输出 <ipython-input-8-2c057bd7fe24>:1: SyntaxWarning: assertion is always true, perhaps remove parentheses? assert(1 == 2, 'This should fail')
def apply_discount(price, discount): updated_price = price * (1 - discount) assert 0 <= updated_price <= price, 'price should be greater or equal to 0 and less or equal to original price' return updated_price
如果assert的条件为False,会raise
apply_discount(100, 0.2) 80.0 apply_discount(100, 2) AssertionError: price should be greater or equal to 0 and less or equal to original price
2.后台想知道每个商品的平均销售价格,算法是销售总额 / 销售数目:
def calculate_average_price(total_sales, num_sales): assert num_sales > 0, 'number of sales should be greater than 0' return total_sales / num_sales
加入了 assert 语句,规定销售数目必须大于 0.
3.检查输入是否list
def func(input): assert isinstance(input, list), 'input must be type of list' # 下面的操作都是基于前提:input 必须是 list if len(input) == 1: ... elif len(input) == 2: ... else: ...
assert 的检查是可以被关闭的,比如在运行 Python 程序时,加入-O这个选项就会让 assert 失效。因此,一旦 assert 的检查被关闭,user_is_admin() 和 course_exist() 这两个函数便不会被执行。这就会导致严重问题:
def delete_course(user, course_id): assert user_is_admin(user), 'user must be admin' assert course_exist(course_id), 'course id must exist' delete(course_id)
对于程序中的一些 run-time error,还是得用异常处理
def delete_course(user, course_id): if not user_is_admin(user): raise Exception('user must be admin') if not course_exist(course_id): raise Exception('coursde id must exist') delete(course_id)
极客时间《Python核心技术与实战》专栏
作者:雷神归来
链接:https://www.pythonheidong.com/blog/article/6612/52e54273e87a9c45461c/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!