Python的functools.wraps ()在使用介绍概念的Python编译器)实现时,为了不影响被装饰的函数实际上已经是另一个函数(函数名等函数属性发生变化) 它保留原始函数的名称和函数属性
不添加wraps代码:
defmy_decorator(func ) :defwrapper ) args, **kwargs ) :“' decorator ' ' ' print ' callingdecoratedfuncing ) ) calllingdecoratedfuncinc * kwargs (return wrapper @ my _ decoratordefexample (: (“' docstring ' ' ' print ) calledexamplefunction ' ) print ) call
name : wrapper docstring 3360 decorator和wraps代码:
importfunctoolsdefmy _ decorator (func ) :@functools.wraps ) func ) defwrapper(*Args, * kwargs (3360 (“' decorator ' ' ' print ) ' callingdecoratedfunction . ' ) returnfunc ) args, * kwargs (return wrapper @ my _ decoratordefexample (: (“文档”“打印”calledexamplefunction ) ) cont )
name :快速文档:文档