卡格斯和阿格斯的行为

2024-09-29 19:02:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在用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
{}

为什么包括年龄在内的一切都被分配给了年龄而夸尔格是空的


Tags: 代码age参数namesargsbluemyfunckwargs
3条回答

您需要使用*名称来展开名称,使用**年龄来展开年龄

就像这样myfunc('blue', *names, **ages)

args查找任何值,kwargs查找任何键值对。调用函数时,必须指定*args之前和**kwargs之前。这就是Python的工作方式

这是您的密码:

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}

# to call the function
myfunc('blue', *names, **ages)

结果如下:

('Ramesh', 'Krishna')
blue
{'Ramesh_age': 20, 'Krishna_age': 10, 'Kanchi_age': 5}

解释可以找到herehere

准确地说,kwargs没有拾取任何值,因为kwargs查找键值对

按照您传递论点的方式,没有键值对。你过去了

ages={'Ramesh_age':20,'Krishna_age':10,'Kanchi_age':5}

作为一个整体对象,而不是分解对象并将其作为单个键值对传递

正如其他人所指出的,正确的方法是将对象分解为单独的键值对,如下所示:

**ages

相关问题 更多 >

    热门问题