如何将字典传递给接受**kwargs的函数?
我有一个函数,它可以接收带有通配符的关键字参数:
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
。