Dav*_*ier 318 python parameters dictionary function keyword
我想使用字典在python中调用一个函数.
这是一些代码:
d = dict(param='test')
def f(param):
print(param)
f(d)
Run Code Online (Sandbox Code Playgroud)
这打印{'param': 'test'}但我想它只是打印test.
我希望它能以更多参数的方式工作:
d = dict(p1=1, p2=2)
def f2(p1, p2):
print(p1, p2)
f2(d)
Run Code Online (Sandbox Code Playgroud)
这可能吗?
Dav*_*ier 491
最后为自己想出来了.这很简单,我只是缺少**运算符来解压缩字典
所以我的例子变成:
d = dict(p1=1, p2=2)
def f2(p1,p2):
print p1, p2
f2(**d)
Run Code Online (Sandbox Code Playgroud)
Dav*_*rks 103
一些可能有助于了解的额外细节(我在阅读本文并进行测试后遇到的问题):
每个例子:
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
Run Code Online (Sandbox Code Playgroud)
数字1:该函数可以包含未包含在字典中的参数
In[5]: mydict = {'a': 100}
In[6]: myfunc(**mydict)
100 2
Run Code Online (Sandbox Code Playgroud)
数字2:您不能覆盖字典中已有的参数
In[7]: mydict = {'a': 100, 'b': 200}
In[8]: myfunc(a=3, **mydict)
TypeError: myfunc() got multiple values for keyword argument 'a'
Run Code Online (Sandbox Code Playgroud)
数字3:字典不能包含函数中没有的参数.
In[9]: mydict = {'a': 100, 'b': 200, 'c': 300}
In[10]: myfunc(**mydict)
TypeError: myfunc() got an unexpected keyword argument 'c'
Run Code Online (Sandbox Code Playgroud)
在这里-可以进行其他任何迭代:
d = {'param' : 'test'}
def f(dictionary):
for key in dictionary:
print key
f(d)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
197528 次 |
| 最近记录: |