3

関数 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"
4

2 に答える 2

3

**あなたは前に忘れていkwargsました:

requester[verb](**kwargs)
于 2013-08-01T15:52:28.317 に答える
1

make_choiceスコープ内には、値とキーkwargsを含む辞書がparamXあります。したがって、この関数スコープでkwargsは、辞書にすぎません。

関数の引数の**前を削除するだけで機能します。kwargsdoXXX

于 2013-08-01T15:51:51.017 に答える