我只是在用kwargs和args测试一段代码。但是为什么args在下面的代码中提取所有传递的参数呢
def myfunc(color='red',*args,**kwargs):
print (args)
print (color)
print (kwargs)
names=["Ramesh","Krishna"]
ages={'Ramesh_age':20,'Krishna_age':10,'Kanchi_age':5}
myfunc('blue',names,ages)
结果:
(['Ramesh', 'Krishna'], {'Krishna_age': 10, 'Ramesh_age': 20, 'Kanchi_age': 5})
blue
{}
为什么包括年龄在内的一切都被分配给了年龄而夸尔格是空的
您需要使用*名称来展开名称,使用**年龄来展开年龄
就像这样
myfunc('blue', *names, **ages)
args查找任何值,kwargs查找任何键值对。调用函数时,必须指定*在args之前和**在kwargs之前。这就是Python的工作方式
这是您的密码:
结果如下:
解释可以找到here和here
准确地说,kwargs没有拾取任何值,因为kwargs查找键值对
按照您传递论点的方式,没有键值对。你过去了
作为一个整体对象,而不是分解对象并将其作为单个键值对传递
正如其他人所指出的,正确的方法是将对象分解为单独的键值对,如下所示:
相关问题 更多 >
编程相关推荐