我一直在阅读一些源代码,并在几个地方看到了assert.
assert
究竟是什么意思?它的用途是什么?
该assert语句几乎存在于每种编程语言中。它有两个主要用途:
它有助于在您的程序早期发现问题,原因是明确的,而不是稍后在某些其他操作失败时。例如,Python 中的类型错误可能会经过几层代码,然后才能真正Exception提早发现 if not catch。
Exception
它作为其他开发人员阅读代码的文档,他们看到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)元组作为第一个参数来运行。
assert(condition, message)
(condition, message)
至于禁用它们,python在优化模式下运行时, where __debug__is False, assert 语句将被忽略。只需传递-O标志:
python
__debug__
False
-O
python -O script.py
有关相关文档,请参见此处。