_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