2009-10-13 61 views
24

我有一个接受通配符关键字参数的函数:如何发送字典到接受** kwargs的函数?

def func(**kargs): 
    doA 
    doB 

如何发送它的字典?

+1

[转换Python的字典来kwargs?]的可能重复(http://stackoverflow.com/questions/5710391/converting-python-dict -to-kwargs) – Olli 2014-02-01 21:02:47

回答

49

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

这记录在section 4.7.4 of python tutorial上。

注意,相同dict传递给函数。一个新的副本被创建,所以some_dict is not kwargs

+0

_“创建一个新副本”_ - 我在哪里可以找到这种行为的官方文档? – jan 2017-11-10 12:39:41

5

func(**mydict)

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

所有mydict的钥匙必须是字符串

7

这不是100%由你的问题不清楚,但如果你想通过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 

我使用后者很多,当我有相同的选项传递给不同的功能,但一些功能只使用一些选项(我希望这是有道理的...)。 但是,当然有一百万种方法可以解决这个问题。如果您对问题有所阐述,我们很可能会更好地帮助您。

0

为Python 3.6刚刚把**字典名称前

def lol(**kwargs): 
    for i in kwargs: 
     print(i) 

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

lol(**my_dict)