一 函数的有用信息
本函数的功能:绘图功能,实时接收数据并绘图.
:return: 绘图需要的数据,返回给前端某标签
def f1(): ''' 本函数的功能:绘图功能,实时接收数据并绘图. :return: 绘图需要的数据,返回给前端某标签 ''' print(f1.__doc__) print(f1.__name__) print(666) print(f1.__doc__) #获取函数的说明信息 print(f1.__name__) # 获取函数的名字 f1()
from functools import wraps def wrapper(func): @wraps(func) def inner(*args,**kwargs): '''执行函数前进行的操作''' ret = func(*args,**kwargs) '''执行函数后进行的操作''' return ret return inner @wrapper def f1(): ''' 本函数的功能:绘图功能,实时接收数据并绘图. :return: 绘图需要的数据,返回给前端某标签 ''' print(f1.__doc__) print(f1.__name__) f1()
def wrapper(func): def inner(*args,**kwargs): '''执行函数前进行的操作''' ret = func(*args,**kwargs) '''执行函数后进行的操作''' return ret return inner @wrapper # f1 = wrapper(f1) def f1(a,b,c,d): # 接收函数的时候,* 聚合. print(a,b) # print(args) # (1,2,3,4) f1(1,2,2,3) f1(*[1,2,3,4]) # 执行函数时,加个*打散
二 带参数的装饰器
import time flag = False def timmer_out(f): def timmer(func): def inner(*args,**kwargs): '''执行函数前操作''' if f: start_time = time.time() time.sleep(0.3) ret = func(*args,**kwargs) '''执行函数后操作''' end_time = time.time() print('执行效率%s'%(end_time - start_time)) return ret else: ret = func(*args,**kwargs) return ret return inner return timmer @timmer_out(flag) # 1, timmer_out(flag) 返回 timmer ---> def f1(): # 2, @timmer 就是你认识的装饰器 f1 = timmer(f1) print(666) @timmer_out(flag) # f2 = timmer(f2) def f2(): print(777) f1() f2()
def wrapper1(func): # func = f def inner1(): print('wrapper1 ,before func') func() print('wrapper1 ,after func') return inner1 def wrapper2(func): # func = inner1 def inner2(): print('wrapper2 ,before func') func() print('wrapper2 ,after func') return inner2 @wrapper2 # f = wrapper2(f) 里面的f == inner1 外面的f = inner2 @wrapper1 # f = wrapper1(f) 返回inner1 f = inner1 def f(): print('in f') f() # inner2()
def wrapper1(func): # func = f def inner1(): print('wrapper1 ,before func') func() print('wrapper1 ,after func') return inner1 def wrapper2(func): # func = inner1 def inner2(): print('wrapper2 ,before func') func() print('wrapper2 ,after func') return inner2 @wrapper2 # f = wrapper2(f) 里面的f == inner1 外面的f = inner2 @wrapper1 # f = wrapper1(f) 返回inner1 f = inner1 def f(): print('in f') f() # inner2()