断言assert用法
本文转自:http://blog.jobbole.com/76285/ 这个问题是如何在一些场景下使用断言表达式,通常会有人误用它,所以我决定写一篇文章来说明何时使用断言,什么时候不用。 为那些还不清楚它的人,Python的assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。例如: 1 2 3 4 5 6 py> x = 23 py> assert x > 0 , "x is not zero or negative" py> assert x% 2 == 0 , "x is not an even number" Traceback (most recent call last): File "" , line 1 , in AssertionError: x is not an even number 很多人用assert作为一个很快和容易的方法来在参数错误的时候抛出异常。但这样做是错的,非常错误,有两个原因。首先AssertError不是在测试参数时应该抛出的错误。你不应该像这样写代码: 1 2 if not isinstance(x, int ): raise AssertionError( "not an int" ) 你应该抛出TypeError的错误,assert会抛出错误的异常。 但是,更危险的是