Python 如果用户传递不同长度的参数(这意味着相同),ValueError是否是引发的适当异常?

Python 如果用户传递不同长度的参数(这意味着相同),ValueError是否是引发的适当异常?,python,exception,Python,Exception,在函数中,我想确保参数a和b具有相同的长度。如果不遵守,我想提出一个例外。我知道ValueError是一个例外,参数本身不符合某些特定标准。ValueError是否是在条件位于参数之间的情况下引发的适当错误?如果不是,是否有更合适的标准Python异常 def func(a, b): if len(a) != len(b): raise ValueError("list a and list b must have the same length") 正如Gary在评论

在函数中,我想确保参数a和b具有相同的长度。如果不遵守,我想提出一个例外。我知道ValueError是一个例外,参数本身不符合某些特定标准。ValueError是否是在条件位于参数之间的情况下引发的适当错误?如果不是,是否有更合适的标准Python异常

def func(a, b):
    if len(a) != len(b):
        raise ValueError("list a and list b must have the same length")

正如Gary在评论中指出的那样,
ValueError
是合适的选择

另一个竞争者将是维基II122建议的索引器。然而,根据Python文档

异常索引器

当序列下标超出范围时引发。(切片索引会自动截断,以在允许的范围内;如果索引不是纯整数,则会引发TypeError。)

如果您不费心提出一个异常,但它不像
ValueError
那样具有描述性,它的文档说明如下:

异常值错误

当内置操作或函数接收到类型正确但值不正确的参数时引发,并且该情况没有通过更精确的异常(如IndexError)进行描述


您只需返回声明列表需要相同长度是的,我认为
ValueError
是合适的选择;您当前的实现很好。对于那些试图建议使用
assert
/
AssertionError
的人,请看我会使用索引器。您键入TypeError时是指ValueError吗?@rudolfbyker:是的,您是对的!我现在改正了。非常感谢。