from datetime import datetime def log(func):#func表示装饰器作用于的函数 def wrapper(*args,**kw):#wrapper返回装饰器作用于的函数及参数,同时执行封装的额外功能方法print('call %s' % func.__name__) print('call %s' % func.__name__)#在执行now函数的时候打印该函数的名称 return func(*args,**kw) return wrapper def log1(text): def decorator(func): def wrapper(*args,**kw): print('%s %s' % (text,func.__name__))#多封装了一层的装饰器,原理同上,同时可以传入参数自定义字符串 return func(*args,**kw) return wrapper return decorator def getTime(func):#获取目标函数执行时间的装饰器 def wrapper(*args,**kw): start = datetime.now() res = func(*args,**kw) end = datetime.now() print(end - start) return res return wrapper def logging(level):#设置目标函数log等级的装饰器 def wrapper(func): def innerWrapper(*args,**kw): print('[{level} is enter function {func}()]'.format( level = level, func = func )) return func return innerWrapper return wrapper @getTime def now(): print(123) @log def now1(): print('2016-01-03') @log1('自定义名称动态打印') def now2(): print('2016-01-03') @logging(level='DEBUG') def now3(): print('123456789') # now() 123 0:00:00 # now1() call now1 2016-01-03 # now2() 自定义名称动态打印 now2 2016-01-03 # now3() [DEBUG is enter function <function now3 at 0x000001D3B4721EA0>()]
Python进阶(装饰器)
猜你喜欢
转载自www.cnblogs.com/xingxingclassroom/p/11112229.html
今日推荐
周排行