有没有办法从返回值返回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 做一些更精细的事情,但这应该让我知道我在寻找什么。)