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

标签 python python-2.7

我很困惑为什么会发生这个错误:

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”关键字参数传递给它们,但在每个函数中仅使用单个关键字参数?

如有任何帮助,我们将不胜感激

最佳答案

您必须在函数调用时传递 **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

关于python - 尝试使用 **kwargs 调用函数内部函数时出现类型错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45048251/

相关文章:

python - 如何从 python 中的 raw_input 制作列表?

python - 如何将数组值导出到 CSV 中的不同行?

python - 如何以张量形式从 tensorflow 或 Keras 中的混淆矩阵获得准确性?

python - 我有多少行无注释代码?

python - 等式中参数的数量无效

Python不写标题

python 和 cx_Oracle - 动态 cursor.setinputsizes

python - 从对象列表中删除对象

python - 斯坦福解析器不适用于 python (Windows 7)

python - 有没有办法获取 numpy 数组(Python)每行的前 k 个值?