一. 断言的引进
1.什么是断言
断言是作为一种调试工具被发明出来的,用来检查那些“代码写对了就肯定成立”的条件。使用assert断言是学习python 一个非常好的习惯,python assert 断言 句语格式及用法很简单。在没完善一个程序之前,我们不知道程序在哪里会出错,与其让它在运行最崩溃,不如在出现错误条件时就崩溃,这时候就需要 assert 断言的帮助。本文主要是讲 assert 断言的基础知识。
2.raise抛出异常
raise的语法格式如下:
raise [Exception [, args [, traceback]]]
a=10
b=20
def c():
if a<b: #条件为真时,执行下面的代码
raise Exception('a比b小')
c()
或者
if age < 18:
raise Exception('未满18不能看电影')
语句中 Exception 是异常的类型(例如,NameError)参数标准异常中任一种,args 是自已提供的异常参数。最后一个参数是可选的(在实践中很少使用),如果存在,是跟踪异常对象。
一个异常可以是一个字符串,类或对象。 Python的内核提供的异常,大多数都是实例化的类,这是一个类的实例的参数。
assert的异常参数,其实就是在断言表达式后添加字符串信息,用来解释断言并更好的知道是哪里出了问题。
例如:
# defining the function definition
def divide(num1, num2):
#如果说num2是-1,判断为假,就执行引号后面的语句
assert num2 > 0 , "Divisor cannot be zero"
return num1/num2
# calling the divide function
a1 = divide(12,3)
# print the quotient
print(a1)
# this will give the assertion error
a2 = divide(12,0)
print(a2)
即:当条件不满足时,就会抛出 AssertionError 异常
3.差别:
raise是条件为 true 正常执行
assert是条件为 true 正常执行(不执行括号里面的东西),条件为 false 触发异常(即执行括号里面的内容)
用一句话来概括断言的使用场景和与异常的区别:
检查先验条件使用断言,检查后验条件使用异常
相比于 assert 语句只能抛出 AssertionError ,使用异常可以抛出更细致的错误,方便上层代码针对不同错误执行不同的逻辑。