gpt4 book ai didi

python - 标准库中有Python inspect.getcallargs 的逆操作吗?

转载 作者:太空狗 更新时间:2023-10-30 01:23:39 31 4
gpt4 key购买 nike

有没有办法从 inspect.getcallargs(func) 的返回值返回到一个 *args, **kw 对,它实际上可以用来调用 func?

用例:假设我正在编写一个装饰器,我想通过名称更改函数的特定参数。下面是执行此操作的一些代码的开头:

@fix_x
def a(x):
print x

@fix_x
def b(**q):
print q['x']

def fix_x(func):
def wrapper(*args, **kw):
argspec = inspect.getargspec(func)
callargs = inspect.getcallargs(func, *args, **kw)
if 'x' in callargs:
callargs['x'] += 5
elif 'x' in callargs[argspec.keywords]:
callargs[argspec.keywords]['x'] += 5
# ...and now I'd like a simple way to call func with callargs...?

(实际上我在构建它们和想与它们通话之间对 callargs 做一些更精细的事情,但这应该让我知道我在寻找什么。)

最佳答案

不,目前还没有一个好的方法来做到这一点,但是它正在为 Python 3.3 工作!

参见 PEP 362 -- Function Signature Object了解这项新功能的工作原理。

关于python - 标准库中有Python inspect.getcallargs 的逆操作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10940871/

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