装饰器进阶

_name_:查看字符串形式的函数名

_doc_:查看函数解释文档

完美装饰器:可以使用__name__及__doc__等方法。

from functools import wraps

def wraps1(func)

  @wraps

  def inner1()

    'before func'

    ret=func(*args,**kwargs)

    'after func'

    return ret

  return inner

@wraps1

def  func()

  print('hello,world')

func()

带参数的装饰器(三层嵌套):

pass

多个装饰器装饰一个函数:执行结果类似套娃

def wraps1(f):
def inner1(*args,**kwargs):
print('front wraps1')
ret=f(*args,**kwargs)
print('after wraps1')
return ret
return inner1
def wraps2(f):
def inner2(*args,**kwargs):
print('front wraps2')
ret=f(*args,**kwargs)
print('after wraps2')
return ret
return inner2
@wraps2
@wraps1
def func():
print('hello')
func()

执行结果:

front wraps2
front wraps1
hello
after wraps1
after wraps2

原文地址:https://www.cnblogs.com/geng-xiaoqiaoliushui/p/10270044.html