我正在嘗試使用* args來調用該方法的不同方法。以下是我的代碼片。瞭解TypeError:獲得關鍵字參數的多個值
def total(name, *args):
if args:
print("%s has total money of Rs %d/- " %(name, sum(args)))
else:
print("%s's piggy bank has no money" %name)
現在有兩種方法可以調用此方法。一個是在*()內傳遞額外的參數或者用逗號直接分隔。我故意將param = value形式的'name'值傳遞給它,以致它引發錯誤。以下是兩種方法,我想: -
1 - 薪火額外參數逗號分隔: -
>>> total(name="Adi", 1, 2, 10)
File "<stdin>", line 1
SyntaxError: non-keyword arg after keyword arg
2 - 使用*()來傳遞額外參數: -
>>> total(name="Adi", *(1, 2, 10))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: total() got multiple values for keyword argument 'name'
的第一個錯誤信息非常清楚,它表達了確切的錯誤。但是,我無法理解第二次調用的錯誤消息。
Python如何評估第二次調用它獲取參數'name'的多個值?即來到我的腦海的可能途徑是內部的Python會被翻譯
total(name="Adi", *(1, 2, 10))
如下: -
total(*(1, 2, 10), name="Adi")
在這上面的翻譯,因爲每個位置,「名」獲取價值*(1 ,2,10),然後再次獲得「阿迪」。因此可以理解多個值的錯誤。
但是,我不確定,python是否會在內部改變立場?任何關於此的見解都會有所幫助。
'總(名稱 - 「阿迪」,1,2,10)'是無效的,因爲''''符號。你確定你向我們展示了真實的代碼嗎? –
我的不好。是一個小姐。 –