7.3. assert 语句

assert 语句是在程序中插入调试性断言的简便方式:

  1. assert_stmt ::= "assert" expression ["," expression]

简单形式 assert expression 等价于

  1. if __debug__:
  2. if not expression: raise AssertionError

扩展形式 assert expression1, expression2 等价于

  1. if __debug__:
  2. if not expression1: raise AssertionError(expression2)

以上等价形式假定 debugAssertionError 指向具有指定名称的内置变量。 在当前实现中,内置变量 debug 在正常情况下为 True,在请求优化时为 False (对应命令行选项为 -O)。 如果在编译时请求优化,当前代码生成器不会为 assert 语句发出任何代码。 请注意不必在错误信息中包含失败表达式的源代码;它会被作为栈追踪的一部分被显示。

赋值给 debug 是非法的。 该内置变量的值会在解释器启动时确定。