在函数调用和定义中都使用 **kwargs

2023-11-27

假设我有一个函数get_data它需要一些关键字参数。有什么办法可以做到这一点

def get_data(arg1, **kwargs):
    print arg1, arg2, arg3, arg4

arg1 = 1
data['arg2'] = 2 
data['arg3'] = 3 
data['arg4'] = 4 

get_data(arg1, **data)

因此,我们的想法是避免在函数调用和函数定义中键入参数名称。我用字典作为参数调用该函数,字典的键成为函数的局部变量,它们的值是字典值

我尝试了上面的方法并收到错误消息global name 'arg2' is not defined。我明白我可以改变locals()在定义中get_data以获得所需的行为。

所以我的代码看起来像这样

def get_data(arg1, kwargs):
    locals().update(kwargs)
    print arg1, arg2, arg3, arg4

arg1 = 1
data['arg2'] = 2 
data['arg3'] = 3 
data['arg4'] = 4 

get_data(arg1, data)

这也行不通。我也不能在不使用的情况下实现该行为locals()?


**kwargs是一本普通的字典。尝试这个:

def get_data(arg1, **kwargs):
    print arg1, kwargs['arg2'], kwargs['arg3'], kwargs['arg4']

另外,请检查文档关键字参数.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在函数调用和定义中都使用 **kwargs 的相关文章