如何将字典传递给接受**kwargs的函数?

40 投票
5 回答
28706 浏览
提问于 2025-04-15 15:02

我有一个函数,它可以接收带有通配符的关键字参数:

def func(**kargs):
    doA
    doB

我该如何把一个字典传给它呢?

5 个回答

5

func(**mydict)

这段代码的意思是在函数内部,kwargs会等于mydict这个字典。

而且,mydict里的所有键(也就是字典中的名字)必须是字符串类型。

8

你的问题不是特别清楚,但如果你想通过 kwargs 传递一个 dict(字典),你只需要把这个字典放在另一个字典里,像这样:

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

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

或者...

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

我经常使用后者的方式,当我有一组相同的选项需要传递给不同的函数时,但有些函数只用到其中的一部分选项(希望这样说你能理解...)。当然,这种情况有很多种处理方法。如果你能多说一点你的问题,我们可能能更好地帮助你。

65

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

这个内容在 Python教程的第4.7.4节 有详细说明。

注意,同一个 dict不会直接传入函数。会创建一个新的副本,所以 some_dict is not kwargs

撰写回答