Python-断言


断言是一种健全性检查,您可以在完成程序测试后打开或关闭它。

  • 考虑断言的最简单方法是将其比作 raise-if 语句(或者更准确地说,raise-if-not 语句)。测试表达式,如果结果为假,则会引发异常。

  • 断言是通过assert 语句执行的,它是Python 1.5 版本中引入的最新关键字。

  • 程序员经常在函数开头放置断言以检查有效输入,并在函数调用之后放置断言以检查有效输出。

断言语句

当遇到断言语句时,Python 会计算随附的表达式,希望该表达式为真。如果表达式为 false,Python 会引发 AssertionError 异常。

断言的语法是-

assert Expression[, Arguments]

如果断言失败,Python 将使用 ArgumentExpression 作为 AssertionError 的参数。AssertionError 异常可以像任何其他异常一样使用 try-except 语句进行捕获和处理。如果不处理它们,它们将终止程序并产生回溯。

例子

print ('enter marks out of 100')
num=75
assert num>=0 and num<=100
print ('marks obtained: ', num)

num=125
assert num>=0 and num<=100
print ('marks obtained: ', num)

它将产生以下输出-

enter marks out of 100
marks obtained: 75
Traceback (most recent call last):
 File "C:\Users\user\example.py", line 7, in <module>
  assert num>=0 and num<=100
                    ^^^^^^^^
AssertionError

要显示自定义错误消息,请在断言语句中的表达式后面放置一个字符串 -

assert num>=0 and num<=100, "only numbers in 0-100 accepted"

AssertionError 也是一个内置异常。因此它可以用作 except 块中的参数。当输入导致 AssertionError 异常时,将由 except 块处理。except 块将断言语句中的字符串视为异常对象。

try:
   num=int(input('enter a number'))
   assert (num >=0), "only non negative numbers accepted"
   print (num)
except AssertionError as msg:
   print (msg)