[英]Python3.4 **kwargs, unexpected keyword argument
我有一個函數字典,所有函數都使用1或2個可選參數。 我想遍歷此字典並將兩個參數都傳遞給每個迭代函數,並使這些函數只需要一個參數即可忽略第二個。 但是,在這些情況下,我收到了意外的關鍵字參數錯誤。
def getNumFrames(self, **kwargs):
return len(self.x)
def getConcentration(self, **kwargs):
if ((not gradient) or (not maxX)):
return 0
return (gradient / maxX) * self.x[0]
fields = {'numFrames': getNumFrames, 'concentration': getConcentration}
for field, fieldFunction in fields.items():
for track in tracks:
fieldFunction(object, maxX = 10, gradient = 2)
在此示例中,getConcentration可以工作,但是getFrames會說maxX是意外的關鍵字。
*根據建議,我對帖子進行了編輯,以包含實際的極簡代碼。
避免所有這些麻煩的更好的方法是使用以下范例:
def func(obj, **kwargs):
return obj + kwargs.get(a, 0) + kwargs.get(b,0)
這利用了以下事實: kwargs
是由傳遞的參數及其值組成的字典,如果鍵不存在,則get()
執行查找並返回默認值。
始終通過字典kwargs
訪問命名參數。 這使您的生活變得更加簡單。
為此,我將創建一個類似於以下功能的函數,其中第二個參數為可選參數。
func (obj, a = 0, b = 0):
return obj + a + b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.