限制参数数量时的适当错误
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
。这表明输入在结构上不正确,即参数太多。
我认为 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'
基本错误在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
。这表明输入在结构上不正确,即参数太多。
我认为 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'