📜  Python Assert关键字

📅  最后修改于: 2020-10-28 01:02:37             🧑  作者: Mango

Python assert关键字

Python assert关键字被定义为测试条件的调试工具。断言主要是在程序中自信地声明或陈述事实的假设。例如,在编写除法函数,除数不应为零,并且您断言除数不等于零。

它只是具有条件的布尔表达式,或者表达式检查条件是否返回true或false。如果为真,则该程序不执行任何操作,并且移至下一行代码。但是,如果为false,则会引发AssertionError异常以及可选的错误消息。

断言的主要任务是通知开发人员程序中不可恢复的错误,例如“找不到文件”,正确地说,断言是程序的内部自检。对于任何应用程序开发领域中的测试或质量保证,这都是最重要的。 assert关键字的语法如下。

句法

assert condition, error_message(optional)  

为什么使用断言

它是一种调试工具,其主要任务是检查条件。如果发现条件为真,则移至代码的下一行;否则,停止所有操作并引发错误。它指出了代码中的错误。

在Python使用断言的地方

  • 检查功能的输出。
  • 用于测试代码。
  • 在检查参数值时。检查有效输入。

例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 list的输出,但是此后,我们收到一个错误AssertionError:List为空。 asserts2列表满足断言条件,并允许程序继续运行。但是,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值为:

运行时异常:

Traceback (most recent call last):  
  File "main.py", line 6, in   
    assert y != 0, "Divide by 0 error"  
AssertionError: Divide by 0 error  

说明:

在上面的示例中,我们初始化了一个整数变量,即x = 7,y = 0,并尝试将x / y的值print为输出。 Python解释器生成了Runtime Exception,因为assert关键字发现除数为零,然后在控制台中显示“除以0的错误”。