纠正Python异常,因为它不包括关键字参数的正确组合

Correct Python exception for not including correct combination of key-word arguments

如果函数调用中没有提供关键字参数的正确组合,是否有引发错误的约定?

举个例子:

1
2
3
4
5
6
7
def convert(miles=0, kilometers=0):
  if miles and not kilometers:
    return miles * 1.61
  elif kilometers and not miles:
    return kilometers / 1.61
  else:
    raise #exception

在此函数中,一个或另一个参数必须接收一个参数;如果有零个或两个参数,则该函数无效。

内置异常不包括对于这种情况明显的异常。我考虑的选项是TypeError(用于其他错误的函数调用)。这是处理这种情况的标准方法,还是应该使用其他异常?

顺便说一下,我看到了这个问题,但这不是我要找的。


ValueError
Raised when a built-in operation or function receives an argument that has the right type but an inappropriate value, and the situation is not described by a more precise exception such as IndexError.

http:/ / / 2 /图书馆/ exceptions.html docs.python.org # exceptions.valueerror

一个更多的事情……

如果一个函数的关键字参数,用户可能只有工业,它没有指定任何东西,他们可以调用。在这里,你有没有知道这方式转换他们的心智。你必须有至少2,定位参数的值,或一个单独的函数,你可以让每一个论点。

我会推荐这个。

1
2
3
4
5
def miles2km(miles=1):
    return miles * 1.60934

def km2miles(km=1):
    return 1.0/miles2km(1.0/km) if km else 0

这就是为什么我喜欢的原因,因为只有一个需要进行功能转换因子是唯一的,因为目前在他们中的一个。