gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 22:20:09 24 4
gpt4 key购买 nike

以下代码:

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 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7217328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com