我读过有关何时使用断言与例外,但我仍然没有“得到它”。好像每当我觉得我是在一个情况下,我应该使用断言,以后的发展中,我发现,我在“看之前,我的飞跃”,以确保当我打电话功能的断言不会失败。既然还有另外一种Python倾向于使用try-except的习惯用法,我通常最终会放弃assert并抛出异常。我还没有找到一个恰当的地方使用断言。任何人都可以拿出一些很好的例子吗?在Python中使用assert的例子?
9
A
回答
20
时,其触发装置一错误代码中的一个很好的指导使用assert
。当你的代码假定某件事并假设时,建议使用assert
来保护这个假设。 assert
失败意味着您的假设不正确,这意味着您的代码不正确。
3
Generelly,断言有没有验证你对自己的代码,也就是在那个时间点的假设,无论是断言成功,或者您的实现在某种程度上马车。一个例外就是要发生一个错误,并“拥抱”它,即允许你处理它。
3
一个很好的例子是检查函数的参数的一致性:
def f(probability_vector, positive_number):
assert sum(probability_vector) == 1., "probability vectors have to sum to 1"
assert positive_number >= 0., "positive_number should be positive"
# body of function goes here
15
+4
+1用于指出如果使用'-O'标志调用Python,那么断言将被删除。关键在于,如果你期望*你的代码的行为不同,如果你断言,那么你滥用它们 - 它们只用于调试。 – 2010-09-15 20:22:21
相关问题
- 1. 在python编写的测试用例中使用assert语句
- 2. 如何在Python中正确使用(assert)?
- 3. 如何在python中使用assert和==?
- 4. 使用Assert的单元测试案例
- 5. 在消息中使用assert()
- 6. 为什么不在测试中使用python的assert语句?
- 7. 使用Assert Java
- 8. 什么时候应该在Python中使用'assert'?
- 9. assert vs ==在Python中测试代码?
- 10. 在猪中使用ASSERT时出错
- 11. 何时在PHP中使用native assert
- 12. 在“assert”中使用switch语句(C++)
- 13. 在munit mule中使用assert-payload选项
- 14. 如何在c DLL中使用assert
- 15. 在正常代码中使用assert
- 16. 在GoogleTest中使用ASSERT和EXPECT
- 17. 在C++中使用“assert”指针
- 18. assert的适当使用
- 19. 在Python中使用类实例的树
- 20. Python quantlib的例子?
- 21. Base58Check Python的例子
- 22. 使用assert控制流程
- 23. JUnit - 使用错误Assert
- 24. 在.Net 4.5中使用Websocket的例子
- 25. 使用'super'的例子在Python2.7中
- 26. 在Angular中使用$ http.put的例子?
- 27. 哪个JUnit包在Assert上使用?
- 28. 如何使Python中的子字符串,但为我的例子?
- 29. CUDA 5.5中的assert()
- 30. 如何在XPath 1.0中使用Schematron中的assert测试?
有趣 - 我不知道'0.'是简写'0.0'。 repl说它是。我可能不会在真实代码中使用它,尽管它看起来过于“巧妙”,并且很容易被忽略。可以理解为一个错字,但0.0总是被理解为一个浮点数。 – Daenyth 2010-09-15 19:42:15
这似乎与我有一个从2D矩阵中获取元素的函数相似。断言行和列输入实际上在矩阵的范围内是有意义的。但后来我做了一些事情,我拿了一个元素,想用相邻元素做点什么。一旦我开始对它进行编码,当元素位于边缘时,我不得不有特殊情况,因为相邻元素在矩阵之外。改用异常似乎更好。 – Colin 2010-09-15 19:46:16
异常会如何更容易修改代码?当你改变函数的行为时,你仍然需要修改异常提升部分,不是吗? – pberkes 2010-09-15 19:54:36