装饰器本质是函数,用于装饰其他函数(就是为其他函数添加附加功能)
原则1:不能修改被装饰函数的源代码
原则2:不能修改被装饰函数的调用方式

##################################################
#实现装饰器知识储备:
#1.函数即“变量”
#2.高阶函数(把一个函数名当作实参传递给另一个函数(在不修改被装饰函数源代码的情况下为其添加功能)或 返回之中包含函数名(不修改函数的调用方式))
#3.嵌套函数
# 高阶函数+嵌套函数 ==> 实现装饰器效果
################################################################
以下代码中,timmer函数装饰test3函数,为test3函数添加统计运行时间功能
 1 __author__ = "csy"
 2 import time
 3 
 4 def timmer(func):
 5     def warpper(*args,**kwargs):     #  *args,**kwargs 表示非固定参数。被装饰函数有0或多个参数,用非固定参数可适用于多种被装饰函
 6         start_time=time.time()
 7         func()
 8         stop_time=time.time()
 9         print('the func run time is %s' %(stop_time-start_time))
10     return warpper
11 
12 @timmer
13 def test3():
14     time.sleep(3)
15     print('in test3')
16 
17 test3()

 

 


posted on 2017-09-02 15:45  csy113  阅读(114)  评论(0编辑  收藏  举报