是否有内置的方法来模拟将值分配给参数? [重复]

问题描述 投票:0回答:1

我有一个装饰器,用于抑制和记录函数中的异常。代码是这样的:

def log_exceptions(func):
    def wrapper(*args, **kwargs):
        try:
            ret = func(*args, **kwargs)
        except Exception as e:
            print(e)
            print(args, kwargs)  # also log what arguments caused the exception
        return ret
    return wrapper

这里的问题是,很难将打印的参数值与函数的参数名称进行手动匹配,因为位置参数也可能位于kwargs内部,并且在其中可能有argskwargs参数内部功能也是如此。因此,将包装器中的argskwargs值与内部函数中的参数名进行匹配将非常有用。

我的问题是,是否有内置的方法来进行这种匹配?如果没有,那么实现它的一种优雅方法是什么?

我有一个装饰器,用于抑制和记录函数中的异常。代码是这样的:def log_exceptions(func):def wrapper(* args,** kwargs):try:...

python parameter-passing python-decorators kwargs
1个回答
0
投票

如果可以确定签名,则inspect.signature(func).bind(*args, **kwargs)完成该工作。

© www.soinside.com 2019 - 2024. All rights reserved.