wapers方法
def wahaha(): ''' sljfldsjflds :return: ''' print('娃哈哈') print(wahaha.__name__) #查看字符串格式的函数名
from functools import wraps def wrapper(func): #func = login @wraps(func) def innner(*args,**kwargs): print('在被装饰的函数执行前做的事') ret = func(*args,**kwargs) print('在被装饰的函数执行后做的事') return ret return innner @wrapper #login = wrapper(login) def login(day): '''这是一个放假通知''' print('全体放假%s'%day) return '好开心' print(login.__name__) print(login.__doc__) ret = login(3) #inner print(ret)
login
这是一个放假通知
在被装饰的函数执行前做的事
全体放假3
在被装饰的函数执行后做的事
好开心
装饰器进阶_带参数的装饰器
import time FLAG = True def timmer_out(FLAG): def timmer(func): def inner(*args,**kwargs): if FLAG: start = time.time() ret = func(*args,**kwargs) end = time.time() print(end - start) return ret else: ret = func(*args,**kwargs) return ret return inner return timmer @timmer_out(FLAG) def wahaha(): time.sleep(0.1) print('hahahahahaha') #@timer = timer_out(FLAG) @timmer_out(FLAG) def erguotou(): time.sleep(0.2) print('erguotoutotutou') wahaha() erguotou()
hahahahahaha
0.1000058650970459
erguotoutotutou
0.2000112533569336
import time FLAG = False def timmer_out(FLAG): def timmer(func): def inner(*args,**kwargs): if FLAG: start = time.time() ret = func(*args,**kwargs) end = time.time() print(end - start) return ret else: ret = func(*args,**kwargs) return ret return inner return timmer @timmer_out(FLAG) def wahaha(): time.sleep(0.1) print('hahahahahaha') #@timer = timer_out(FLAG) @timmer_out(FLAG) def erguotou(): time.sleep(0.2) print('erguotoutotutou') wahaha() erguotou() hahahahahaha erguotoutotutou