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 |
在此函数中,一个或另一个参数必须接收一个参数;如果有零个或两个参数,则该函数无效。
内置异常不包括对于这种情况明显的异常。我考虑的选项是
顺便说一下,我看到了这个问题,但这不是我要找的。
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 |
这就是为什么我喜欢的原因,因为只有一个需要进行功能转换因子是唯一的,因为目前在他们中的一个。