在方法中使用assert - Python
在方法中使用断言是不是一种不好的做法呢?
比如说:
def add(x, y):
assert isinstance(x, int) and isinstance(y, int)
return x + y
有没有什么想法呢?
4 个回答
0
这不是问题,但如果你的代码里有的断言语句比实际的代码还多,那我会很生气。
6
一点也不。
在你的例子中,只要你已经说明了 add
方法需要整数,开头就用 assert
来检查这个条件其实是个很好的做法。
想想你还有哪些选择,以及这些选择有多糟糕:
- 不验证你的参数。这意味着,方法会在后面出错,出现奇怪的错误信息,这可能会让调用这个方法的人感到困惑,还得去查看
add
的实现来搞清楚发生了什么。 - 好心尝试把输入转换成
int
- 这个主意非常糟糕,用户会一直想知道为什么add(2.4,3.1)
还总是返回5
。