原则 :开放封闭原则
开放 : 对扩展是开放的
封闭 : 对修改是封闭的
装饰器的作用 :在不改变原函数的调用方式的情况下,在函数的前后添加功能
装饰器的本质 : 闭包函数
装饰器的作用 : 不想修改函数的调用方式 但是还想在原来的函数前后添加功能
装饰器形成的过程 : 1、最简单的装饰器
2、有返回值的
3、有一个参数
4、万能参数
不带参数的装饰器:
import time
def timer(func):
def inner():
start = time.time() #被装饰函数之前做的事情
func()
print(time.time() - start) #被装饰函数之后做的事情
return inner
@timer #==> func1 = timer(func1) 语法糖
def func1():
print('in func1')
func1()
万能装饰器:
def wrapper(func):
def inner(*args,**kwargs):
#在被装饰函数前做的事
ret = func(*args,**kwargs)
#在被装饰函数后做的事
return ret
return inner
@wrapper #holiday = wrapper(holiday)
def holiday(day):
return day #被装饰函数里的内容
ret = holiday(1)
print(ret)