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

lov*_*esh 6 python

假设我有一个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)
Run Code Online (Sandbox Code Playgroud)

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

我尝试了以上并得到错误说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)
Run Code Online (Sandbox Code Playgroud)

它也行不通.我也无法在不使用的情况下实现这一行为locals()

Vla*_*mir 11

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

def get_data(arg1, **kwargs):
    print arg1, kwargs['arg2'], kwargs['arg3'], kwargs['arg4']
Run Code Online (Sandbox Code Playgroud)

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