装饰器: 定义:本质是函数,(装饰其他函数),为其它函数添加附加功能 原则: 1、不修改被装饰的函数的源代码 2、不修改被装饰的函数的调用方式 函数即变量 函数名指向内存中的函数体 高阶函数: 1、把一个函数名当做实参传给另外一个函数 2、返回值中包含函数名 嵌套函数: 1、在一个函数体内,用def定义一个函数 高阶函数 + 嵌套函数 --> 装饰器 #装饰器的实现方式 import time def timmer(func): #高阶函数:把一个函数名当做实参传给另外一个函数 def deco(*args,**kwargs): #嵌套函数:在一个函数体内,用def定义一个函数 start_time = time.time() func(*args,**kwargs) #执行被装饰函数 stop_time = time.time() print("The func run time is %s" % (stop_time - start_time)) #加入的功能 return deco #高阶函数:返回值中包含函数名 def test1(): time.sleep(2) print("in the test1") test1 = timmer(test1) #将函数名重新指向timmer函数return的deco在内存中的函数体,python的语法糖@相当于执行了这一步 test1() #调用函数,相当于调用deco()