描述:装饰器用于在不改变原函数代码的情况下修改已存在的函数。常见场景是增加一句调试,再次做参数校验也可以用到装饰器或者为已有的函数增加log监控。。。flask的route路由就是用到的装饰器,也许场景还很多很多。。。值得去思考
除此以外,还可以编写接收参数的装饰器,其实就是在原本的装饰器上的外层又嵌套了一个函数:
但是像上面那样使用装饰器的话有一个问题:
也就是说原函数已经被装饰器里的new_fun函数替代掉了。调用经过装饰的函数,相当于调用一个新函数。查看原函数的参数、注释、甚至函数名的时候,只能看到装饰器的相关信息。为了解决这个问题,我们可以使用 Python 自带的functools.wraps方法。
参考py装饰器二,详解functools.wraps使用