Are Python assertions crutches?
本问题已经有最佳答案,请猛点这里访问。
正如Python维基中所建议的那样断言是有益的
- 检查参数类型,类或值
- 检查数据结构不变量
- 检查"不可能发生"的情况(列表中的重复,相互矛盾的状态变量)
- 调用函数后,确保其返回是合理的
但是,使用断言和使用"if"语句与下一步提出异常之间的优势在哪里?
例如。
1 2 3 | def some_domain_operation(user, invoice): assert isinstance(user, (User, int)) # Do something. |
VS
1 2 3 4 5 | def some_domain_operation(user, invoice): if not isinstance(user, (User, int)): raise ValueError() # Do something. |
我认为使用断言是不可靠的(可以被用户禁用),所以我不能给出一个很好的例子,当使用断言比使用
你对断言Pn python你有什么看法? 他们是拐杖吗?
在我看来,
从字面上看,一个断言说"这在程序流程的这一点上是正确的。在任何情况下,这个表达式都不会被评估为假"。
因此,
1 | assert isinstance(user, (User, int)) |
如果禁用此
[1] ......在一个表现良好,写得正确的程序中。
[2]你永远不应该捕捉