限制参数数量时的适当错误

Suitable error when limitting the number of args

基本错误在Python中用于限制函数中传递的参数数量

我想将其限制为 2 个参数,如下所示:

def func(*args):

    if len(args) == 1:
        # Do one thing
        
    elif len(args) == 2:
        # Do another thing
    
    else:
        ## raise an error ## 

您可以使用 raise 关键字引发错误。

else:
    raise TypeError

您还可以指定自定义信息。

    raise TypeError(f"func() takes exactly one argument ({len(args)} given)")

我会建议 TypeError。这表明输入在结构上不正确,即参数太多。

https://docs.python.org/3/library/exceptions.html#TypeError

我认为 TypeError 可以。这表明输入在结构上不正确。 Doc here

我想提出一个不同的解决方案,它不依赖于错误处理,而是依赖于 multipledispatch。我不建议在生产中使用它,因为它不是基本功能,但我认为它仍然很有趣。不过,这确实解决了参数数量问题。

这是一个示例,其中具有相同名称的函数根据参数类型和参数数量表现不同。您需要 multipledispatch library.

from multipledispatch import dispatch

@dispatch(int)
def func(x: int):
    return x**2

@dispatch(int, int)
def func(base: int, power: int):
    return base**power

@dispatch(int, str)
def func(base: int, power: str):
    return f"{base}^{power}"


func(3)
>>> 9

func(2, 3)
>>> 8

func(2, "3")
>>> '2^3'