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

# 不带参数类函数
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()

 

 

 

 

posted @ 2021-04-11 11:59  PythonNew_Mr.Wang  Views(37)  Comments(0)    收藏  举报