def preprocess_args(fun: Callable, varnames: List[str]):
"""
Applies fun to variables in varnames before launching the function
"""
def wrapper(f, *a, **kw):
func_code = f.__code__
names = func_code.co_varnames
new_a = [fun(arg) if (name in varnames) else arg
for (arg, name) in zip(a, names)]
new_kw = {k: fun(v) if k in varnames else v
for (k, v) in kw.items()}
return f(*new_a, **new_kw)
return decorator.decorator(wrapper)
评论列表
文章目录