尝试用**kwargs调用函数内部的函数时出现类型错误?

2024-05-29 04:56:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我不明白为什么会发生这种错误:

TypeError: func1() takes exactly 0 arguments (1 given)

代码如下:

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):
    for func in listOfFuncs:
        if func(extraArgs) == False:
            print 'break'
            break
        print 'continue'
        continue

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

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

任何帮助都将不胜感激


Tags: falsetruereturnifdefkwargscatfunc
1条回答
网友
1楼 · 发布于 2024-05-29 04:56:53

必须在函数调用时传递**kwargs参数。你知道吗

我刚看过你的代码。请尝试以下内容

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

相关问题 更多 >

    热门问题