1,装饰器的形成
编程原则:开放封闭原则。
开放:对扩展是开放的
封闭:对修改是封闭的
因为修改是封闭的,所以为了对函数进行功能的扩展,就使用装饰器!
2,装饰器的定义
# wrapper就是一个装饰器函数,就是对一个函数有一些装饰效果 def wrapper(f): # 装饰器函数,f是被装饰的函数 def inner(*args, **kwargs): # 在被装饰函数之前想增加的功能 ret = f(*args, **kwargs) # 被装饰的函数 # 在被装饰函数之后想增加的功能 return ret # 接收被装饰函数的返回值 return inner # 装饰器的作用:不修改函数的调用方式,且能在函数的前后添加功能
3,装饰器的使用
@wrapper # 语法糖 @装饰器函数名 相当于func = time_count(func) def func(): # 被装饰的函数 time.sleep(1) print('zxc') return 'hahaha' ret = func() # zxc print(ret) # hahaha
4,装饰器实例
import time # 计算函数运行时间 def wrapper(f): # 装饰器函数,f是被装饰的函数 def inner(*args, **kwargs): start = time.time() ret = f(*args, **kwargs) # 被装饰的函数 end = time.time() print(end-start) return ret # 接收被装饰函数的返回值 return inner @wrapper def func(): # 被装饰的函数 print('zxc') func() # 打印zxc 打印函数hunc的运行时间