定义一个商品打折的函数:
代码语言: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:UsersspringerDesktopif.py", line 7, in <module>
print( dazhe(100, 2) )
File "C:UsersspringerDesktopif.py", line 4, in dazhe
assert 0 <= new_price <= price
AssertionError
参数discount会出现无效的情况,比如大于1。程序没有语法及逻辑错误,这是个不太容易发现的问题。设置assert之后,从AssertionError可以轻松发现问题所在位置,这大大加快了程序调试工作。
断言和异常的区别
Python的断言是一种辅助调试功能,不是用来处理运行时错误的机制,使用assert的目的是让开发者更快地知道程序bug的原因,从而节省调试时间。断言不能滥用,更不能设置无效的断言。
学习编程是个长期的过程,网上那些快速成功的案例并不是常态,它给我们呈现的只是结果,而不是那之前漫长而乏味的过程。谁都会有感到枯燥的时候,一个问题久攻不下难免的,问题是你能否换其他事情平静之后再回过头来继续你之前枯燥的事情,如果还觉得枯燥那可能是你真的就不喜欢,如果可以继续那就继续!