Python decorator使用wrapps,但名称仍在更改

2024-10-06 07:44:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的错误处理程序(实际上是旁路程序)装饰程序-

import functools

def exception_safe(*args):
        ErrList = tuple(args)
        def decorator(f):
                @functools.wraps(f)
                def wrapper(*args, **kwargs):
                        if ErrList:
                                try:
                                        result = f(*args, **kwargs)
                                        print(f'No error!')
                                        return result 
                                except ErrList as err:
                                        print(f'got error!')
                        else:
                                try:
                                        result = f(*args, **kwargs)
                                        print(f'No error!')
                                        return result 
                                except Exception as err:
                                        print(f'got error!')
                return wrapper
        return decorator

即使我仍然从pytests得到下一个断言错误,告诉我函数名是decorator:

pytest stack

为什么会这样?我什么都试过了


Tags: no程序returndef错误argsdecoratorerror