小编典典

Python中的“断言”有什么用?

all

我一直在阅读一些源代码,并在几个地方看到了assert.

究竟是什么意思?它的用途是什么?


阅读 99

收藏
2022-02-25

共1个答案

小编典典

assert语句几乎存在于每种编程语言中。它有两个主要用途:

  1. 它有助于在您的程序早期发现问题,原因是明确的,而不是稍后在某些其他操作失败时。例如,Python 中的类型错误可能会经过几层代码,然后才能真正Exception提早发现 if not catch。

  2. 它作为其他开发人员阅读代码的文档,他们看到assert并可以自信地说它的条件从现在开始成立。

当你这样做…

assert condition

…您告诉程序测试该条件,如果条件为假,则立即触发错误。

在 Python 中,它大致相当于:

if not condition:
    raise AssertionError()

在 Python shell 中尝试:

>>> assert True # nothing happens
>>> assert False
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

断言可以包含可选消息,您可以在运行解释器时禁用它们。

如果断言失败,打印一条消息:

assert False, "Oh no! This assertion failed!"

不要像函数一样 使用 括号来调用。assert这是一个声明。如果你这样做assert(condition, message),你将assert使用一个(condition, message)元组作为第一个参数来运行。

至于禁用它们,python在优化模式下运行时, where __debug__is False, assert
语句将被忽略。只需传递-O标志:

python -O script.py

有关相关文档,请参见此处

2022-02-25