我正在尝试使用* 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)'是无效的,因为''''符号。你确定你向我们展示了真实的代码吗? –
我的不好。是一个小姐。 –