断言
断言assert一般使用做自动化测试,放在程序中的某些地方,如果断言被满足了,程序就会若无其事地继续运行下去,一旦不满足断言的要求(一般就是理想的程序执行效果)就会立即抛出异常AssertionError并且退出程序。
想起来,这比我们加if判断然后sys.exit()好多了,而且断言还会告诉你是哪里设置的断言没有被满足,就可以溯源。
使用
使用方法有好多高级的用法,在这里因为是初步了解,所以就简单了解一下。
assert 后面跟一个判断条件
a = 6
assert a > 7#断言
当然也可以把断言放在try语句中,使用except接住,这就有点像java里的throw了
try:
a = 6
assert a > 10
print(a)
except AssertionError as e:
print("NOT FILL")
print(e)#e本身是没有什么东西的,只会打印出上一句
#NOT FILL
下面这个用法就比较巧妙了,而且很棒。让断言先判断用户输入的是不是数字,如果不是就抛出异常,如果是就使用int()转换。这个我之前一直想的是,直接int()如果报错了就说明不是数字。
try:
str = input("请输入一个数字:")
assert str.isdigit()
print(int(str)+10)
except AssertionError as e:
print("您输入的不是数字")
所以断言既可以是程序运行到某一阶段某个变量应该有的值,也可以是检查用户给的参数的正确性。