簡體   English   中英

Python3.4 ** kwargs,意外的關鍵字參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM