我想使用字典在python中调用函数 .
这是一些代码:
d = dict(param='test') def f(param): print param f(d)
这打印 {'param': 'test'} 但我想要打印 test .
{'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)
一些可能有助于了解的额外细节(在阅读本文并进行测试后我遇到的问题):
该函数可以包含未包含在字典中的参数
您无法覆盖字典中已有的参数
字典不能包含函数中没有的参数 .
Examples of each:
def mytest(a=4, b=2): print a, b
Number 1: 该函数可以包含未包含在字典中的参数
In[6]: mydict = {'a': 100} In[7]: mytest(**mydict) 100 2
Number 2: 您无法覆盖字典中已有的参数
In[8]: mydict = {'a': 100, 'b': 200} In[9]: mytest(a=3, **mydict) TypeError: mytest() got multiple values for keyword argument 'a'
Number 3: 字典不能包含函数中没有的参数 .
In[10]: mydict = {'a': 100, 'b': 200, 'c': 300} In[11]: mytest(**mydict) TypeError: mytest() got an unexpected keyword argument 'c'
在python中,这被称为"unpacking",您可以在tutorial中找到它的一些信息 . 我同意,它的文档很糟糕,特别是因为它有多么奇特的用处 .
在这里你去 - 只是任何其他迭代:
d = {'param' : 'test'} def f(dictionary): for key in dictionary: print key f(d)
4 回答
最后为自己想出来了 . 这很简单,我只是缺少**运算符来解压缩字典
所以我的例子变成:
一些可能有助于了解的额外细节(在阅读本文并进行测试后我遇到的问题):
该函数可以包含未包含在字典中的参数
您无法覆盖字典中已有的参数
字典不能包含函数中没有的参数 .
Examples of each:
Number 1: 该函数可以包含未包含在字典中的参数
Number 2: 您无法覆盖字典中已有的参数
Number 3: 字典不能包含函数中没有的参数 .
在python中,这被称为"unpacking",您可以在tutorial中找到它的一些信息 . 我同意,它的文档很糟糕,特别是因为它有多么奇特的用处 .
在这里你去 - 只是任何其他迭代: