Python Assert 语句

什么是断言?

断言是你程序中自信地断言或陈述一个事实的语句。例如,在编写一个除法函数时,你确信除数不应该为零,你断言除数不等于零。

断言只是布尔表达式,用于检查条件是否返回 true。如果为 true,程序不做任何事情并移动到下一行代码。但是,如果为 false,程序将停止并抛出错误。

它也是一个调试工具,因为它会在错误发生时立即停止程序并显示错误。

我们可以通过下面的流程图来清楚地了解

Python Assert Flowchart

Python assert 语句

Python 有内置的 assert 语句,用于在程序中使用断言条件。 assert 语句有一个条件或表达式,它应该总是为 true。如果条件为 false,assert 会停止程序并给出 AssertionError

在 Python 中使用 Assert 的语法

assert <condition>
assert <condition>,<error message>

在 Python 中,我们可以如上所述以两种方式使用 assert 语句。

  1. assert 语句有一个条件,如果条件不满足,程序将停止并给出 AssertionError
  2. assert 语句还可以有一个条件和一个可选的错误消息。如果条件不满足,assert 会停止程序并给出 AssertionError 以及错误消息。

让我们举个例子,我们有一个函数,它将计算用户传入值的平均值,并且该值不应该是一个空列表。我们将使用 assert 语句来检查参数,如果传入列表的长度为零,程序将停止。

示例 1:不带错误消息使用 assert

def avg(marks):
    assert len(marks) != 0
    return sum(marks)/len(marks)

mark1 = []
print("Average of mark1:",avg(mark1))

当我们运行上述程序时,输出将是

AssertionError

我们得到了一个错误,因为我们向 assert 语句传入了一个空列表 mark1,条件变为 false,assert 停止程序并给出 AssertionError

现在让我们传入另一个将满足 assert 条件的列表,看看输出会是什么。


示例 2:带错误消息使用 assert

def avg(marks):
    assert len(marks) != 0,"List is empty."
    return sum(marks)/len(marks)

mark2 = [55,88,78,90,79]
print("Average of mark2:",avg(mark2))

mark1 = []
print("Average of mark1:",avg(mark1))

当我们运行上述程序时,输出将是

Average of mark2: 78.0
AssertionError: List is empty.

我们传入了一个非空列表 mark2 和一个空列表 mark1avg() 函数,我们得到了 mark2 列表的输出,但之后我们得到了一个错误 AssertionError: List is emptymark2 列表满足了 assert 条件,程序继续运行。然而,mark1 不满足条件并给出了 AssertionError


要记住的关键点

  • 断言是代码中总是应该为 true 的条件或布尔表达式。
  • assert 语句接受一个表达式和一个可选消息。
  • assert 语句用于检查参数的类型、值和函数的输出。
  • assert 语句用作调试工具,因为它会在错误发生的点停止程序。
你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战