装饰器
- 装饰器本质就是函数,为其他函数添加附加功能。
- 原则:
- 不修改被修饰函数的源代码
- 不修改被修饰函数的调用方法
- 装饰器知识储备:装饰器 = 高阶函数 + 函数嵌套 + 闭包
案例:求函数运行时间!
1 # 普通:求函数运行时间 2 def cal(l): 3 start_time = time.time() 4 res = 0 5 for i in l: 6 time.sleep(0.1) 7 res+=i 8 end_time = time.time() 9 print('函数运行时间是%s'%(end_time-start_time)) 10 return res 11 print(cal(range(20))) # 函数运行时间是2.008193016052246 190
装饰器:求函数运行时间!
1 import time 2 def timmer(func): 3 def wrapper(*args,**kwargs): 4 start_time=time.time() 5 res=func(*args,**kwargs) 6 stop_time = time.time() 7 print('函数运行时间是%s' %(stop_time-start_time)) 8 return res 9 return wrapper 10 11 12 @timmer 13 def cal(l): 14 res=0 15 for i in l: 16 time.sleep(0.1) 17 res+=i 18 return res 19 20 res=cal(range(20)) 21 print(res)
高阶函数
定义:
- 函数接收的参数是一个函数名
- 函数的返回值是一个函数名
- 满足上述条件任意一个,都可称之为高阶函数
函数嵌套
- 函数里面重新定义函数
函数嵌套及作用域
闭包函数
函数作用域的一种体现