python - Python中的 "assert"有什么用?

标签 python assert assertion

assert 是什么意思?它是如何使用的?

最佳答案

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

  1. 它有助于在程序早期发现问题,原因很明确,而不是稍后在其他操作失败时检测。例如,Python 中的类型错误如果没有及早发现,可能会在实际引发 Exception 之前经过几层代码。

  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时,__debug__False,assert语句将被忽略。只需传递 -O 标志:

python -O script.py

here相关文件。

关于python - Python中的 "assert"有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5142418/

相关文章:

java - 为什么以编程方式激活断言时 "assert false"不会导致 AssertionError?

java - 当我在 GSON(使用枚举)上运行 Proguard 时应用程序崩溃

python - 找不到 Flask_APP 环境变量

python - 在Python中绘制离散值的热图

c++ - 抛出前条件检查的有效性和DRY原理

java - java异常的catch block 中是否会捕获断言错误?

Golang 比较数字

python - 为什么 date + timedelta 变成日期,而不是日期时间?

python - 从中获取最小值的数据帧的名称

python - 现在为什么不在测试中使用 python 的 assert 语句呢?