0. 前言
- 参考资料:
- 《深入理解Python特性》2.1节。
- Python官方文档:7.3. The assert statement
1. 定义
根据Python官方文档,Python解释器会将断言
"assert expression1, expression2
转换为:1
2
3if __debug__:
if not expression1:
raise AssertionError(expression2)__debug__
简介:- 作用:用来指定是否使用断言。
- 设置值:该内置变量的值会在解释器启动时确定,默认为
True
,如果指定了-O
选项,就会设置为False
。 - 注意事项:不能直接在程序中修改值。
2. 使用场景
- 断言是为了告诉开发人员,程序中发生了不可恢复的错误。
- 断言主要用于程序内部自检。
- 断言是一种调试辅助功能,不是用来处理运行时错误的机制。
3. 常见陷阱
3.1. 不能使用断言来验证数据
- 因为断言可能会被全局禁用,所以不能用断言。
3.2. 永不失败的断言
- 永不失败的断言是毫无用处的
- 可以使用代码 Linter 来防止这种情况。
- PS:这也是为什么总是对单元测试用例先做一个快速的冒烟测试。
3.3. 其他注意事项
- Python断言语句是一种测试某个条件的调试辅助功能,可作为程序的内部自检。
- 断言应仅用于开发人员识别bug,而不是用于处理运行时错误的机制。
- 设置解释器可全局禁用断言。