在 Python 中,assert
是一个语句,而不是一个函数。这是一个深思熟虑的决定吗?assert
有一个语句(和保留字)而不是一个函数有什么好处吗?
根据文档,扩展为 assert expression1, expression2
if __debug__:
if not expression1: raise AssertionError(expression2)
文档还说“当在编译时请求优化时,当前的代码生成器不会为断言语句发出代码。” 在不知道细节的情况下,似乎需要一个特殊情况才能使这成为可能。但是,一种特殊情况也可用于优化对assert()
函数的调用。
如果assert
是一个函数,你可以写:
assert(some_long_condition,
"explanation")
但是因为assert
是一个语句,元组总是计算为True
,你得到
SyntaxWarning: assertion is always true, perhaps remove parentheses?
正确的写法是
assert some_long_condition, \
"explanation"
这可以说是不那么漂亮。