我有一個裝飾器,它需要一個authToken並提供用user_id裝飾的函數。這個想法是停止每個用戶特定的功能,而不必查找他們的用戶對象。裝飾器:TypeError:在函數調用時獲得了多個關鍵字參數值<變量名稱>
我已經使用* pargs和** kwargs使裝飾通用,並與任何其他參數一起使用函數。
但是,當我調用裝飾函數不僅僅是裝飾器設置的參數時,我得到錯誤:TypeError: changeUsername() got multiple values for keyword argument 'userId'
。
有人知道爲什麼會發生這種情況嗎?我在下面貼了一個簡單的例子。
users = ["Name_1", "Name_2", "Name_3"]
def pwapi_auth(func):
def inner(authToken, *pargs, **kwargs):
users = {'a':0,
'b':1,
'c':2}
userId = users[authToken]
return func(userId = userId, *pargs, **kwargs)
return inner
@pwapi_auth
def getUsername(userId):
return users[userId]
@pwapi_auth
def changeUsername(userId, newName):
users[userId] = newName
print getUsername('b')
changeUsername('b', 'New_Person') # <-- Error occurs on this call
謝謝!
你的第二個例子是不工作的代碼,能否請您粘貼的工作片段 – AlokThakur
別擔心,我現在已經明白 - 超做一些東西來簡化。 –