多层装饰器、带参数装饰器

# 带参数的装饰器
# import time
# FLAGE = False           # 加个标志位,使全部的装饰器可以失效或有效
# def timmer_out(flag):
#     def timmer(func):
#         def inner(*args,**kwargs):
#             if flag:
#                 start =time.time()
#                 ret = func(*args,**kwargs)
#                 print(time.time()-start)
#                 return ret
#             else:
#                 ret = func(*args, **kwargs)
#                 return ret
#         return inner
#     return timmer
#
# @timmer_out(FLAGE)  # timmer_out(FLAGE)就是timmer
# def func():
#     time.sleep(0.1)
#     print('sleep:0.1')
# @timmer_out(FLAGE)
# def fun1():
#     time.sleep(0.5)
#     print('sleep:0.5')
# func()
# fun1()


# 多层装饰器
# 记录用户登陆情况,记录时间等场景
def fun1(func): def inner(*args,**kwargs): print(111) ret = func() print(222) return ret return inner def fun2(func): def inner1(*args,**kwargs): print('aaa') ret = func() print('bbb') return ret return inner1 @fun1 @fun2 def func(): print('') func()

猜你喜欢

转载自www.cnblogs.com/Mr-Feng/p/10803156.html