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

How to send a dictionary to a function that accepts **kwargs?

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

1
2
3
def func(**kargs):
    doA
    doB

我怎么给它发字典?


只需使用func(**some_dict)来调用它。

这在Python教程的第4.7.4节中有记录。

注意,同一个dict没有传递到函数中。一个新的拷贝被创建,所以some_dict is not kwargs


你的问题并不完全清楚,但是如果你想通过kwargs把一个dict传给一个kwargs,你只需要把这个听写变成另一个听写的一部分,就像这样:

1
2
3
my_dict = {}                       #the dict you want to pass to func
kwargs  = {'my_dict': my_dict }    #the keyword argument container
func(**kwargs)                     #calling the function

然后您可以在函数中捕获my_dict

1
2
def func(**kwargs):
    my_dict = kwargs.get('my_dict')

或者…

1
2
3
def func(my_dict, **kwargs):
    #reference my_dict directly from here
    my_dict['new_key'] = 1234

当我将相同的选项集传递给不同的函数时,我经常使用后者,但有些函数只使用某些选项(我希望这是有意义的…)。当然,有很多方法可以解决这个问题。如果你详细阐述一下你的问题,我们很可能会帮助你更好。


func(**mydict)

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

mydict的所有键都必须是字符串


对于python 3.6,只需将**放在字典名称之前

1
2
3
4
5
6
7
8
9
10
11
def lol(**kwargs):
    for i in kwargs:
        print(i)

my_dict = {
   "s": 1,
   "a": 2,
   "l": 3
}

lol(**my_dict)