python assert 断言
适用于使用断言的情况:
- 防御性的编程
- 运行时对程序逻辑的检测
- 合约性检查(比如前置条件,后置条件)
- 程序中的常量
- 检查文档
不适用于使用断言的情况:
-
不要用于测试用户提供的数据,或者那些需要在所有情况下需要改变检查的地方
-
不要用于检查你认为在通常使用中可能失败的地方。断言用于非常特别的失败条件。你的用户绝不看到一个AssertionError,如果看到了,那就是个必须修复的缺陷。
-
特别地不要因为断言只是比一个明确的测试加一个触发异常矮小而使用它。断言不是懒惰的代码编写者的捷径。
-
不要将断言用于公共函数库输入参数的检查,因为你不能控制调用者,并且不能保证它不破坏函数的合约。
-
不要将断言用于你期望修改的任何错误。换句话,你没有任何理由在产品代码捕获一个AssertionError异常。
-
不要太多使用断言,它们使代码变得晦涩难懂。
在yunyang tensorflow-yolov3 的utils.py文件中作者使用了一个断言,这里打个标记: