Python手册(4) 断言 assert

0. 前言

1. 定义

  • 根据Python官方文档,Python解释器会将断言"assert expression1, expression2转换为:

    1
    2
    3
    if __debug__:
    if not expression1:
    raise AssertionError(expression2)
  • __debug__ 简介:

    • 作用:用来指定是否使用断言。
    • 设置值:该内置变量的值会在解释器启动时确定,默认为True,如果指定了-O选项,就会设置为False
    • 注意事项:不能直接在程序中修改值。

2. 使用场景

  • 断言是为了告诉开发人员,程序中发生了不可恢复的错误。
  • 断言主要用于程序内部自检
  • 断言是一种调试辅助功能,不是用来处理运行时错误的机制。

3. 常见陷阱

3.1. 不能使用断言来验证数据

  • 因为断言可能会被全局禁用,所以不能用断言。

3.2. 永不失败的断言

  • 永不失败的断言是毫无用处的
  • 可以使用代码 Linter 来防止这种情况。
  • PS:这也是为什么总是对单元测试用例先做一个快速的冒烟测试。

3.3. 其他注意事项

  • Python断言语句是一种测试某个条件的调试辅助功能,可作为程序的内部自检。
  • 断言应仅用于开发人员识别bug,而不是用于处理运行时错误的机制。
  • 设置解释器可全局禁用断言。