使用args将方法传递给另一个使用kwargs的函数

时间:2018-02-01 13:09:18

标签: python

我有两个函数因一个参数而不同,我想根据给定的情况相应传递...

def func1(a, b, c):
    print a, b, c

def func2(a, b, c, d=False)
    print a, b, c, d

def run(func, **kwargs):
     if b is None:
         b = 999
     func(**kwargs)

run(func1, a=1, b=None, c=3)

我无法让它工作,因为它抱怨在分配之前引用了b

2 个答案:

答案 0 :(得分:2)

def func1(a, b, c):
    print a, b, c

def func2(a, b, c, d=False):
    print a, b, c, d

def run(func, **kwargs):
    if 'b' in kwargs:
        if kwargs['b'] is None:
            kwargs['b'] = 999
    func(**kwargs)

run(func1, a=1, b=None, c=3)

答案 1 :(得分:0)

访问b:

if kwargs['b'] is None:

因此,运行函数将是:

def run(func, **kwargs):
     kwargs['b'] = kwargs.get('b', 999)
     func(**kwargs)