对参数类型和值进行假设?

时间:2015-03-22 21:16:17

标签: python validation parameters

我对参数验证有一点风格问题。

(使用Python)

假设我有一个参数a的方法,它需要是一个int,并且可能需要在某个范围内 - 即列表索引或其他东西。我可以使用断言/其他验证来确保这一点,但是如果我只从一个或两个地方调用函数,并且参数在那里被验证为正确的值/类型呢?也许有可能在未来可以从其他地方调用该功能,但就目前而言,它基本上是'无法传递无效参数。

没有必要将验证代码添加到并不真正需要它的东西上,但是如果从不同的地方调用它,那么将函数打开以引发未被捕获的错误似乎也很麻烦。

对不起,如果这太抽象了 - 我希望答案可能只是"它取决于"但如果对此有一个普遍的共识,我很好奇。

1 个答案:

答案 0 :(得分:0)

一般情况下,我认为每次调用方法时都要验证输入参数,即使参数不太可能是错误的。在大多数情况下,计算开销可以忽略不计(如果验证条件,我的笔记本电脑上的if type(x) is not int: raise TypeError检查类型需要大约100 ns)。此外,我不确定在代码可维护性方面进行条件验证是否值得(它只会使事情变得更复杂)。

当然,这也是特定问题。例如,如果您在循环中重复调用计算关键函数(比如说超过百万次),则可能需要跳过验证步骤并事先检查参数。