Ste*_*lla 6 python function keyword-argument
想象一下我有一个像
def foo(x):
...
Run Code Online (Sandbox Code Playgroud)
当我用字典{ 'x': 42, 'y': 23 }作为关键字参数调用它时,我得到一个TypeError:
>>> foo(**{ 'x': 42, 'y': 23 })
...
TypeError: foo() got an unexpected keyword argument 'y'
Run Code Online (Sandbox Code Playgroud)
是否有一种使用关键字参数进行函数调用的好方法,而其他关键字参数会被忽略?
到目前为止我的解决方案:我可以定义一个辅助函数:
import inspect
def call_with_kwargs(func, kwargs):
params = inspect.getargspec(func).args
return func(**{ k: v for k,v in kwargs.items() if k in params})
Run Code Online (Sandbox Code Playgroud)
现在我可以做
>>> call_with_kwargs(foo, { 'x': 42, 'y': 23 })
42
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
如果改变你的函数没问题,那么只需添加一个包罗万象的**kw参数即可:
def foo(x, **kw):
# ...
Run Code Online (Sandbox Code Playgroud)
并忽略kw函数中捕获的任何内容。
| 归档时间: |
|
| 查看次数: |
3277 次 |
| 最近记录: |