我很困惑为什么会发生这个错误:
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/