我有一个装饰器,用于抑制和记录函数中的异常。代码是这样的:
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
内部,并且在其中可能有args
和kwargs
参数内部功能也是如此。因此,将包装器中的args
和kwargs
值与内部函数中的参数名进行匹配将非常有用。
我的问题是,是否有内置的方法来进行这种匹配?如果没有,那么实现它的一种优雅方法是什么?
我有一个装饰器,用于抑制和记录函数中的异常。代码是这样的:def log_exceptions(func):def wrapper(* args,** kwargs):try:...
如果可以确定签名,则inspect.signature(func).bind(*args, **kwargs)
完成该工作。