【发布时间】:2009-10-29 04:17:06
【问题描述】:
我发现自己一直在为数字运算编写相同的参数检查代码:
def myfun(a, b):
if a < 0:
raise ValueError('a cannot be < 0 (was a=%s)' % a)
# more if.. raise exception stuff here ...
return a + b
有没有更好的方法?我被告知不要对这些事情使用“断言”(尽管我没有看到问题,除了不知道导致错误的变量的值)。
edit:澄清一下,参数通常只是数字,错误检查条件可能很复杂,不平凡,以后不一定会导致异常,而只会导致错误的结果。 (不稳定的算法,无意义的解决方案等)
【问题讨论】:
-
谁说不用assert?他们给出了什么理由?你能得到报价或参考吗?
-
@S.Lott:因为断言随着
__debug__或优化以及“程序员的断言,用户的例外”的口头禅而消失。参考? err..我们称之为“私人通信”
标签: python exception arguments assert