尝试使用** kwargs调用函数内部函数时出现TypeError?

时间:2017-07-12 04:06:50

标签: python python-2.7

我对此错误发生的原因感到困惑:

  

TypeError:func1()只取0个参数(给定1个)

代码如下:

normalize-space()

我正在尝试将函数名称作为参数传递给func3。我还想在fun3中调用func1和func2时将'cat'和'dog'关键字参数传递给它们,但是在每个函数中只使用一个关键字参数?

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

你必须在函数调用时传递** kwargs args。

我刚刚审核了您的代码。请尝试以下

def func1(**kwargs):
    if kwargs['dog'] != 2:
        return False
    return True

def func2(**kwargs):
    if kwargs['cat'] != 3:
        return False
    return True

def func3(*listOfFuncs, **extraArgs):
    print 
    for func in listOfFuncs:
        if func(**extraArgs) == False:
            print 'break'
            break
        print 'continue'
        continue

func3(func1, func2, dog=2, cat=1)

输出:

continue
break