python – 将带有无效键=值对的kwargs传递给函数
发布时间:2020-05-27 15:45:14 所属栏目:Python 来源:互联网
导读:以下代码: def f(a=1): passkwargs = {}kwargs[a] = 1kwargs[b] = 2f(**kwargs) (正确)引发异常: Traceback (most recent call last): File tt.py, line 8, in module f(**kwargs)TypeError: f() got
|
以下代码: def f(a=1):
pass
kwargs = {}
kwargs['a'] = 1
kwargs['b'] = 2
f(**kwargs)
(正确)引发异常: Traceback (most recent call last):
File "tt.py",line 8,in <module>
f(**kwargs)
TypeError: f() got an unexpected keyword argument 'b'
有没有办法,使用functools或其他方法来绕过这个并找出函数没有使用哪些参数,以便能够将它们传递给另一个函数?例如,我可能有另一个功能: def g(a=None,b=None):
pass
我要跟其打电话,例如 g(**kwargs) 但是我只想要传递b,因为a在前一个函数中已经“用完了”. 现在我知道这不是理想的编码,但有些情况下它可以派上用场,而且实际上很容易向用户解释,例如“其他参数将传递给f,任何未传递给f的参数都将传递给g”. 解决方法我有点惊讶你问这个问题,并担心你正在做一些你可能会后悔的事情.您是否尝试使用相同的字典调用不同的方法来提供所有参数组合? def f(a=1):
pass
call_tailored_args(f,kwargs)
辅助函数将实现如下: import inspect
def tailored_args(f,kwargs):
relevant_args = {k: v in kwargs if k in inspect.getargspec(f).args}
f(**relevant_args) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
