根据第一个参数需要函数中的两组参数之一

时间:2018-08-19 17:44:41

标签: python python-3.x function args kwargs

我有一个函数,该函数具有两个主要参数,这些参数确定其余所需参数。

例如,如果

main = 'a'

然后它需要参数qwe

但是如果main = 'b'

然后它需要参数asd

作为参数传递给函数。

我知道我可以使用**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

1 个答案:

答案 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)

但是我会挑战这种构造的需求,而是尝试使用具有正常参数的正常功能来实现。