我想使用字典在python中调用一个函数.
这是一些代码:
d = dict(param='test') def f(param): print(param) f(d)
这打印{'param': 'test'}
但我想它只是打印test
.
我希望它能以更多参数的方式工作:
d = dict(p1=1, p2=2) def f2(p1, p2): print(p1, p2) f2(d)
这可能吗?
最后为自己想出来了.这很简单,我只是缺少**运算符来解压缩字典
所以我的例子变成:
d = dict(p1=1, p2=2) def f2(p1,p2): print p1, p2 f2(**d)
一些可能有助于了解的额外细节(我在阅读本文并进行测试后遇到的问题):
该函数可以包含未包含在字典中的参数
您不能覆盖字典中已有的参数
字典不能包含不在函数中的参数.
每个例子:
In[1]: def myfunc(a=1, b=2): In[2]: print(a, b) In[3]: mydict = {'a': 100, 'b': 200} In[4]: myfunc(**mydict) 100 200
数字1:该函数可以包含未包含在字典中的参数
In[5]: mydict = {'a': 100} In[6]: myfunc(**mydict) 100 2
数字2:您不能覆盖字典中已有的参数
In[7]: mydict = {'a': 100, 'b': 200} In[8]: myfunc(a=3, **mydict) TypeError: myfunc() got multiple values for keyword argument 'a'
数字3:字典不能包含函数中没有的参数.
In[9]: mydict = {'a': 100, 'b': 200, 'c': 300} In[10]: myfunc(**mydict) TypeError: myfunc() got an unexpected keyword argument 'c'
在python中,这称为"解包",您可以在教程中找到它的一些内容.我同意,它的文档很糟糕,特别是因为它的幻想是多么有用.
在这里-可以进行其他任何迭代:
d = {'param' : 'test'} def f(dictionary): for key in dictionary: print key f(d)