如何将字典发送到接受**kwargs的函数?

fly*_*ire 34 python

我有一个接受通配符关键字参数的函数:

def func(**kargs):
    doA
    doB
Run Code Online (Sandbox Code Playgroud)

我怎么发一本字典?

nos*_*klo 58

只是func(**some_dict)用来称呼它.

这在python教程的4.7.4节中有记录.

请注意,相同的 dict内容不会传递给函数.创建一个新副本,所以some_dict is not kwargs.


小智 8

你的问题并不是100%清楚,但是如果你想dict通过kwargs,你只需将该词典作为另一个词典的一部分,就像这样:

my_dict = {}                       #the dict you want to pass to func
kwargs  = {'my_dict': my_dict }    #the keyword argument container
func(**kwargs)                     #calling the function
Run Code Online (Sandbox Code Playgroud)

然后你可以抓住my_dict这个功能:

def func(**kwargs):
    my_dict = kwargs.get('my_dict')
Run Code Online (Sandbox Code Playgroud)

要么...

def func(my_dict, **kwargs):
    #reference my_dict directly from here
    my_dict['new_key'] = 1234
Run Code Online (Sandbox Code Playgroud)

当我将相同的选项集传递给不同的函数时,我会使用后者,但有些函数只使用了一些选项(我希望这是有道理的......).但当然有一百万种方法可以解决这个问题.如果你详细说明你的问题,我们很可能会帮助你更好.


Joh*_*ooy 5

func(**mydict)

这将意味着函数内部的kwargs = mydict

mydict的所有键必须是字符串