python 装饰器--替换or增强被装饰函数功能/能力

'''

初学python装饰器的一点心得:

装饰器,在不改变被装饰函数代码的情况下,增强被装饰函数能力,或者替换被装饰函数功能 。

不同于模块间的调用,是通过“被装饰”,实现函数功能double提升。

“被装饰”可随时调整,很灵活、很强悍。

'''

 

'''

下面的例子显示:

@timer  装饰say()函数时,

效果就是:  timer函数+say函数 ,即 装饰者和被装饰者的功能叠加在一起执行,能力double 。

'''
import time
import nnlog

def timer(func):
  def newFunc():
    log = nnlog.Logger('zylog.txt')
    st = time.time()
    func()
    runTime = time.time()-st
    print('%s 的运行时间是 %s'%(func.__name__,runTime))
    log.debug('%s 的运行时间是 %s'%(func.__name__,runTime))

  return newFunc



@timer      

'''   装饰器,装饰时,效果就是  timer函数+say函数 ,功能叠加在一起执行   '''
def say():
  time.sleep(2)
  print('say 函数!!!')



if __name__ == '__main__':
  say()

posted @ 2019-06-12 22:37  hello_libra  阅读(278)  评论(0编辑  收藏  举报