【装饰器】原理以及基础使用

# 不带参数类函数
class TaskA(object): def __init__(self, f): # 实例化函数 self.f = f def __call__(self): # 添加功能 print("例:开始时间") start = time.time() self.f() # 执行函数 print("例:结束时间") print("记录操作时间、日志、缓存等用时操作 ----- 结束时间 - 开始时间",time.time() - start) @TaskA def func(): time.sleep(2) print("func") func()


 
# 不带参数函数
def TaskB(func) : # 添加功能 def inner(*args,**kwargs): print("例:开始时间") start = time.time() func() print("例:结束时间") print("记录操作时间、日志、缓存等用时操作 ----- 结束时间 - 开始时间",time.time() - start) return inner @TaskB def foo( ): time.sleep(1) print("foo") foo( )


 
# 带参数
def TaskC(text):   # 最外层用于传入参数
    
    def decorator(func) :   # 用户传入方法
        
        def inner(*args,**kwargs):  # 添加功能
            
            print("例:开始时间")
            start = time.time()
            
            # 执行参入函数
            func(name="name")
            print()
            print("传入参数",text)
            print()
        
            print("例:结束时间")
            print("记录操作时间、日志、缓存等用时操作  ----- 结束时间 - 开始时间",time.time() - start)
            
            
        return inner
    
    return decorator
                             
  
        
@TaskC(text="我是参数")
def fooc(name):
    time.sleep(1)
    print( "fooc",name)
          
fooc()
 
主攻:Python 数据分析 web 机器学习 图像识别。。 副攻:JAVA WEB 安卓 大数据
原文地址:https://www.cnblogs.com/wanghong1994/p/14643387.html