Есть ли способ получить обратное значение от inspect.getcallargs(func)
до пары *args, **kw
, которая фактически может использоваться для вызова func
?Есть ли обратная операция в Python inspect.getcallargs в стандартной библиотеке?
Случай использования: скажем, я пишу декоратор, и я хочу изменить конкретный аргумент функции по имени. Вот начало некоторого кода, чтобы сделать это:
@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 между строить их и желая, чтобы сделать звонок с ними, но это должно дать представление о том, что я 'm looking for.)