您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 将带有无效键=值对的kwargs传递给函数

5b51 2022/1/14 8:23:22 python 字数 3585 阅读 594 来源 www.jb51.cc/python

以下代码: 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

概述

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”.

您是否尝试使用相同的字典调用不同的方法来提供所有参数组合?
如果是这样,则处理这种情况所需的复杂性不应该在被调用方法中处理,而是在调用代码中处理,例如,通过将kwargs定制为要调用的特定方法

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)

总结

以上是编程之家为你收集整理的python – 将带有无效键=值对的kwargs传递给函数全部内容,希望文章能够帮你解决python – 将带有无效键=值对的kwargs传递给函数所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶