Python方法的参数验证,ArgError

Rom*_*man 1 python validation arguments

在编程中C#我通常写下面的参数验证代码:

void Process(object item) {
    if (item == null) throw ArgumentNullException();
    // code
}
Run Code Online (Sandbox Code Playgroud)

它是'Pythonic'进行类似的验证Python吗?我真的不希望任何人None转到Process方法.我Python Exception应该使用什么类型的?(没有标准ArgError或类似的东西)

def Process(item):
  if item == None: raise ArgNoneError('item')
  # code
Run Code Online (Sandbox Code Playgroud)

谢谢

Sve*_*ach 5

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

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