assert
语句几乎存在于每种编程语言中.它有两个主要用途:
它有助于在程序的早期发现问题,原因很清楚,而不是在其他操作失败之后.例如,Python中的一个类型错误可能会经过几层代码,如果不在早期发现的话,实际上会提高Exception
.
它可以作为阅读代码的其他开发人员的文档,这些开发人员看到了assert
,并且可以自信地说,从现在起,它的条件仍然有效.
当你这么做的时候...
assert condition
... 您告诉程序测试该条件,如果条件为假,则立即触发错误.
在Python中,它大致相当于:
if not condition:
raise AssertionError()
在Python shell中try 一下:
>>> 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!"
not是否像函数一样使用括号调用assert
.这是一份声明.如果使用assert(condition, message)
,您将以(condition, message)
元组作为第一个参数运行assert
.
至于禁用它们,当在优化模式下运行python
时,__debug__
是False
,断言语句将被忽略.只需越过-O
旗:
python -O script.py
有关文档,请参见here.