我需要能够获得传递给我的函数make_choice的所有参数。但是在第25行(requesterverb)我收到了运行时错误:
requester[verb](kwargs)
TypeError: doPUT() takes exactly 0 arguments (1 given)
我做错了什么?
这是我的代码:
#switch using dictionary
def make_choice(verb, **kwargs):
def doGET(**kwargs):
print "Doing GET"
for key in kwargs:
print "another keyword arg: %s: %s" % (key, kwargs[key])
def doPUT(**kwargs):
print "Doing PUT"
for key in kwargs:
print "another keyword arg: %s: %s" % (key, kwargs[key])
def doDELETE(**kwargs):
print "Doing DELETE"
def doPOST(**kwargs):
print "Doing POST"
def doPATCH(**kwargs):
print "Doing PATCH"
requester = { 'GET': doGET, 'PUT': doPUT }
requester[verb](kwargs)
make_choice(verb='PUT',param1='param1',param2='param2',param3='param3')
print "done"
答案 0 :(得分:3)
您在**
之前忘记了kwargs
:
requester[verb](**kwargs)
答案 1 :(得分:1)
在make_choice
范围内,kwargs
是一个包含paramX
vaules和密钥的字典。
所以在这个函数范围内,kwargs
只不过是一本字典。
只需移除**
功能参数中kwargs
之前的doXXX
即可。