Python基础-day13-装饰器2
""" 通过开关来控制是否使用装饰器 FLAG = True FLAG = False """ import time FLAG = True def timer_out(flag): def timer(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 timer @timer_out(FLAG) def wahaha(): time.sleep(5) print('wahaha') wahaha()
""" 多个装饰器装饰同一个函数 """ def wrapper1(func): def inner1(*args, **kwargs): print('wrapper1, before func') func(*args, **kwargs) print('wrapper1, after func') return inner1 def wrapper2(func): def inner2(*args, **kwargs): print('wrapper2, before func') func(*args, **kwargs) print('wrapper2, after func') return inner2 def wrapper3(func): def inner3(*args, **kwargs): print('wrapper3, before func') func(*args, **kwargs) print('wrapper3, after func') return inner3 @wrapper3 @wrapper2 @wrapper1 def fun(): print('in f') fun()
这是打印规则:

最外层的装饰器打印在最外层。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号