获取函数内的 kwargs

2024-06-19

如果我有一个像这样的 python 函数:

def some_func(arg1, arg2, arg3=1, arg4=2):

有没有办法确定哪些参数是从函数内部通过关键字传递的?

EDIT

对于那些问我为什么需要这个的人,我没有真正的理由,它是在一次谈话中出现的,好奇心战胜了我。


不,无法在具有此签名的 Python 代码中执行此操作 - 如果您需要此信息,则需要更改函数的签名。

如果您查看 Python C API,您会发现参数传递给普通 Python 函数的实际方式始终是元组加字典的形式——即直接反映*args, **kwargs。然后,该元组和字典被解析为特定的位置参数和签名中命名的参数,即使它们是按名称传递的,并且*a and **kw,如果存在,则仅从该解析中获取“溢出”(如果有)——只有在此时,您的 Python 代码才能获得控制权,然后您所请求的信息(how是否传递了各种参数)不再存在了。

因此,要获取您请求的信息,请将签名更改为*a, **kw并进行自己的解析/验证——这是“从鸡蛋到煎蛋卷”,即一定量的工作,但肯定是可行的,而您正在寻找的是“从煎蛋卷回到鸡蛋” ...根本不可行;-)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取函数内的 kwargs 的相关文章

随机推荐