Python assert断言函数及用法

assert 断言语句和 if 分支有点类似,它用于对一个 bool 表达式进行断言,如果该 bool 表达式为 True,该程序可以继续向下执行;否则程序会引发 AssertionError 错误。

有读者可能会问,明明 assert 会令程序崩溃,为什么还要使用它呢?这是因为,与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃。通常,assert 语句用在检查函数参数的属性(是参数是否是按照设想的要求传入),或者作为初期测试和调试过程中的辅助工具。

例如如下程序:
s_age = input("请输入您的年龄:")
age = int(s_age)
assert 20 < age < 80
print("您输入的年龄在20和80之间")
上面程序中,使用 asser 语句断言 age 必须位于 20 到 80 之间。运行上面程序,如果输入的 age 处于执行范围之内,则可看到如下运行过程:

请输入您的年龄:23
您输入的年龄在20和80之间

如果输入的 age 不处于 20 到 80 之间,将可以看到如下运行过程:

请输入您的年龄:1
Traceback (most recent call last):
  File "C:\Users\mengma\Desktop\1.py", line 3, in <module>
    assert 20 < age < 80
AssertionError

从上面的运行过程可以看出,断言也可以对逻辑表达式进行判断,因此实际上断言也相当于一种特殊的分支。

assert 断言的执行逻辑是:

if 表达式的值为 True:
    程序继续运行;
else:     # 表示式的值为 False
    程序引发 AssertionError 错误