带有少量强制参数的可选参数

时间:2019-08-23 16:45:57

标签: python

我是python的新手,遇到了一个问题。

我必须通过一个几乎没有元素(键值)的函数从用户那里获得字典。同时,如果用户不提供字典,则可以提供各个元素作为参数。

如何检查用户是否提供了dictA,如果没有提供,src msg。如果用户不提供任何一个,则将错误返回给调用函数。

让我们说:

def myfunc(dictA, src, msg, e=True)

如果用户未提供dictA,则dictA是字典,而srcmsg是争论。

1 个答案:

答案 0 :(得分:2)

我不支持他们传入dictA或其他参数。如果要使用它们,我会让它们以{warms的形式传入dictA。然后,您可以只检查值是否在那里

新功能原型可能是

def myfunc(src, msg, e=True)

然后用法可能是

myfunc(a_source, a_msg)

myfunc(**dictA)

这样,您的函数将自动检查这些值是否至少存在。而且任何其他值检查都只能在一个输入上完成

例如,以下调用将失败(无需执行其他任何操作),因为它仍然缺少msg的位置参数。

myfunc(**{'src': 'a_source'})

同样,如果您发送的位置参数过多(例如,通过字典传递位置参数和kwarg),也会失败