这是示例代码不起作用。
#!/usr/bin/env python3
def foobar(name, handlerFunction, **handlerArgs):
handlerFunction(name=name, handlerArgs)
def _doSomething(name, **kwargs):
print(name)
print(kwargs)
if __name__ == '__main__':
foobar(name='foo', handlerFunction=_doSomething)
sys.exit()
这里的要点是_doSomething
应该是可以交换的。有时只有一个参数name
,但有时会有一个以上。
我有这样的错误。
File "./kwargs.py", line 4
handlerFunction(name=name, handlerArgs)
^
SyntaxError: non-keyword arg after keyword arg
或者当我重新排列参数的顺序时
File "./kwargs.py", line 13, in <module>
foobar(name='foo', handlerFunction=_doSomething)
File "./kwargs.py", line 4, in foobar
handlerFunction(handlerArgs, name=name)
TypeError: _doSomething() got multiple values for argument 'name'
答案 0 :(得分:2)