装饰器本质是函数,用于装饰其他函数(就是为其他函数添加附加功能)
原则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 warpper11 12 @timmer13 def test3():14 time.sleep(3)15 print('in test3')16 17 test3()