我有一个函数,该函数具有两个主要参数,这些参数确定其余所需参数。
例如,如果
main = 'a'
然后它需要参数q
,w
,e
但是如果main = 'b'
然后它需要参数a
,s
,d
作为参数传递给函数。
我知道我可以使用**kwargs
并添加基于main
的if语句来选择可选参数,但是我想知道是否有一种方法可以不使用可选参数,例如需要基于main
的整个参数集。
在没有两个功能的情况下处理此问题的最Python方法是什么?
下面是kwargs解决方案,用于使问题更容易重现:
def function_(main, **kwargs):
if main == 'a':
q = kwargs.get('q')
w = kwargs.get('w')
e = kwargs.get('e')
return q * w * e
if main == 'b':
a = kwargs.get('a')
s = kwargs.get('s')
d = kwargs.get('d')
return a + d + s
答案 0 :(得分:0)
您可以执行以下操作:
def function_(main, *args, **kwargs):
if main == 'a':
q, w, e = args
elif main == 'b':
a, s, d = args
或者您可以中继两个功能:
def function_(main, *args, **kwargs):
if main == 'a':
function_a_(*args, **kwargs)
elif main == 'b':
function_b_(*args, **kwargs)
但是我会挑战这种构造的需求,而是尝试使用具有正常参数的正常功能来实现。