Python断言
Python中的断言语句允许用户在代码中添加健全性测试。断言是一种检查,用户可以利用它来查看在编写代码时特定假设是否仍然有效。如果任何断言变为假,则我们的代码包含一个缺陷。
断言有助于用户提高代码的效率、稳定性和可靠性。在创建过程中,断言对于文档编写、故障排除和代码测试非常有用。在使用断言调试和测试代码后,用户可以关闭它们,使代码更加适合生产环境。
什么是断言
断言对于调试代码非常有用,因为它们使用户能够通过测试某些条件是否保持为真来验证代码的正确性。
除非我们的应用程序有问题,否则断言条件必须始终为真。如果断言为假,则会抛出异常并结束程序的运行。
断言允许我们创建检查,以确保代码中的不变量保持不变。例如,我们可以测试诸如“此参数为None”或“此返回类型确实为字符串”之类的条件。我们可以使用这种方式来测试先决条件和后置条件。在构建程序时,这些测试可以帮助我们尽早发现缺陷。
断言的好处是什么
断言主要用于调试目的。它们确保在添加新功能和解决现有问题时,用户不会给我们的程序带来新问题。然而,在开发阶段,它们可能还有其他有趣的应用。文档编写和验证代码就是这些用例的示例。
断言的主要目的是在程序包含问题时发出警报。在这种情况下使用假设。确保此条件仍然有效。否则,引发异常。
实际上,我们可以在开发过程中使用断言来验证程序中的前置条件和后置条件。例如,程序员经常在函数开头使用assert语句来确保输入参数正确(前置条件)。断言还用作前面函数的返回参数,以确保输出正确(后置条件)。
断言表示我们希望查看某个条件是否为真,并将保持为真。它们可以选择包含Python中的可选消息,以阐明问题或问题。因此,它们也是编码文档的有用工具。在这种情况下,它们的主要优点是能够采取有意义的措施,而不是像注释和文档字符串那样是不活动的。
什么时候不能使用断言
原则上,不应将断言用于信息处理或数据检查,因为源程序中可以禁用断言,删除任何基于断言的处理和验证代码。正如我们将看到的那样,对于数据处理或验证使用断言是一个常见错误。
Python中的assert关键字
此语句接受布尔条件作为输入,当条件返回true时,不执行任何操作并继续正常执行流程。但是,如果条件计算为false,它会引发AssertionError以及提供的可选消息。在Python中,assert关键字有助于实现这一任务。
语法:
assert ,
参数: ondition: 布尔测试返回True或False。
错误消息: 可选参数,在AssertionError的实例中显示在屏幕上。
返回值: 如果提供,则返回带有错误语句的AssertionError。
不带关键字的assert关键字示例
代码
# Python code to show the working of assert statement
# initializing number
x = 45
y = 5
# checking the divisibility using assert statements
print("Checking for x and y : ")
assert x%y == 0, "Not completely divisible"
print(x / y)
输出:
Checking for x and y :
9.0
没有错误消息的assert关键字
代码
# Python code to show the working of assert statement
# initializing number
x = 34
y = 27
# checking the divisibility using assert statements
print("Checking for x and y : ")
assert x%y == 0, "Not completely divisible"
print(x / y)
输出:
Checking for x and y :
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
Input In [10], in ()
7 # checking the divisibility using assert statements
9 print("Checking for x and y : ")
---> 10 assert x%y == 0, "Not completely divisible"
11 print(x / y)
AssertionError: Not completely divisible
这对于测试和质量控制在任何开发领域中都非常有用。根据应用程序的不同,会使用各种类型的断言。以下是一个简化的示例软件,它只允许发送包含所有热食的批次;否则,整个批次将被拒绝。
代码
# Python code to show the working of assert statement application
# creating list of temperatures of foods
batch = [ 23, 36, 71, 10, 9, 56]
# describing the cut temperature
cut = 26
# using assert statement to check the batch
for b in batch:
assert b >= 26, f"Batch {b} is Not To be Supplied"
print(str(b) + " is O.K.")
输出:
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
Input In [13], in ()
9 # using assert statement to check the batch
10 for b in batch:
---> 11 assert b >= 26, f"Batch {b} is Not To be Supplied"
12 print(str(b) + " is O.K.")
AssertionError: Batch 23 is Not To be Supplied