Python方法参数验证,参数错误

1 投票
2 回答
742 浏览
提问于 2025-04-16 20:24

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

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

Python中做类似的验证算不算“Pythonic”(符合Python风格)呢?我真的不想让任何人把None传给Process方法。我应该使用什么类型的Python异常呢?(没有标准的ArgError之类的东西)

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

谢谢

2 个回答

3

使用 TypeError

异常 TypeError

当你对一个不合适类型的对象进行操作或调用函数时,就会出现这个错误。这个错误会附带一个字符串,告诉你具体是什么类型不匹配。

5

通常情况下,你只需要根据收到的参数来处理就行了——如果有人给你的函数传了None,那它肯定会出错。没有必要为了增加复杂性而让代码变得更麻烦,尤其是这些复杂的检查往往会让你的代码在一些本来可以正常工作的情况下反而出错。

如果你确实想抛出一个错误,可以使用TypeError——这个错误就是为了这种情况准备的。

撰写回答