7月份有什么节日,哪里的佛像最少,照相机说明书
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核心技术与实战》专栏
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论