个性化阅读
专注于IT技术分析

Python调试工具:断言关键字assert

本文概述

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.

说明:在上面的示例中, 我们向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 value  is :

运行时异常

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除以错误”, 因此编译器会生成”运行时异常”。


赞(0)
未经允许不得转载:srcmini » Python调试工具:断言关键字assert

评论 抢沙发

评论前必须登录!