0
這是示例代碼不起作用。在Python3中使用kwargs作爲處理程序函數
#!/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
或當我打電話時handlerFunction
rearange在快譯通,handlerArgs
,參數
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'