Python方法的参数验证,ArgError

时间:2011-06-27 21:54:45

标签: python validation arguments

C#编程时,我通常会编写以下参数验证码:

void Process(object item) {
    if (item == null) throw ArgumentNullException();
    // code
}

Python中进行类似验证是'Pythonic'吗?我真的不希望任何人通过NoneProcess方法。我应该使用什么类型的Python Exception? (没有标准ArgError或类似的东西)

def Process(item):
  if item == None: raise ArgNoneError('item')
  # code

由于

2 个答案:

答案 0 :(得分:5)

通常情况下,你只是尝试使用你得到的参数 - 如果有人将None传递给你的函数,它无论如何都会失败。没有任何好处就没有必要为代码增加复杂性。恰恰相反 - 通常这样的测试会阻止您的代码在没有测试的情况下正常工作。

如果你想提出一些错误,请使用TypeError - 它就是为了这个目的。

答案 1 :(得分:3)

使用TypeError

  

异常 TypeError

     

将操作或函数应用于不适当类型的对象时触发。关联值是一个字符串,提供有关类型不匹配的详细信息。