Python调试工具(断言关键字assert)

本文概述

  • 为什么使用断言
  • 在Python中使用断言的地方
  • 运行时异常
Python assert关键字被定义为测试条件的调试工具。断言主要是在程序中自信地声明或陈述事实的假设。例如, 在编写除法函数时, 除数不应为零, 并且你断言除数不等于零。
它只是具有条件的布尔表达式, 或者表达式检查条件是否返回true或false。如果为真, 则该程序不执行任何操作, 并且移至下一行代码。但是, 如果它为false, 则会引发AssertionError异常以及可选的错误消息。
断言的主要任务是通知开发人员程序中不可恢复的错误, 例如” 找不到文件” , 可以肯定地说断言是程序的内部自检。它们通过在代码中声明某些条件是不可能的来工作的。如果其中一个条件不成立, 则表示程序中存在错误。
为什么使用断言它是一种调试工具, 其主要任务是检查条件。如果发现条件为真, 则移至代码的下一行, 如果不是, 则停止所有操作并引发错误。它指出了代码中的错误。
在Python中使用断言的地方
  • 检查功能的输出。
  • 用于测试代码。
  • 在检查参数值时。
  • 检查有效输入。
句法
assert condition, error_message(optional)

例1
此示例显示了使用错误消息进行断言的工作。
def avg(scores): assert len(scores) != 0, "The List is empty." return sum(scores)/len(scores)scores2 = [67, 59, 86, 75, 92] print("The Average of scores2:", avg(scores2))scores1 = [] print("The Average of scores1:", avg(scores1))

输出
The Average of scores2: 75.8 AssertionError: The List is empty.

【Python调试工具(断言关键字assert)】说明:在上面的示例中, 我们向avg()函数传递了一个非空列表scores2和一个空列表scores1。我们成功收到了scores2列表的输出, 但是此后, 我们收到了一个错误AssertionError:List为空。assert2列表满足断言条件, 并使程序继续运行。但是, scores1不满足条件, 并给出了AssertionError。
范例2:
本示例在控制台中显示” 除以0的错误” 。
# initializing number x = 7 y = 0 # It uses assert to check for 0 print ("x / y value is : ") assert y != 0, "Divide by 0 error" print (x / y)

输出
x / y valueis :

运行时异常
Traceback (most recent call last): File "main.py", line 6, in < module> assert y != 0, "Divide by 0 error" AssertionError: Divide by 0 error

说明:在上面的示例中, 我们初始化了一个整数变量, 即x = 7, y = 0, 并尝试将x / y的值打印为输出。由于assert关键字在控制台中显示” 0除以错误” , 因此编译器会生成” 运行时异常” 。

    推荐阅读