什么是装饰器
开放封闭原则
软件一旦上线后,就应该遵循开放封闭原则。对修改源代码是粉笔的,对功能的拓展是开放的也就是说我们必须找到一种解决方案:能够在不修改一个功能源代码以及调用方式的前提下,为其加上新功能
总结
原则如下
1.不修改源代码
2.不修改调用方式
目的
在1和2元则的基础上拓展新功能
什么是装饰器
装饰器即在不修改被装饰对象源代码与调用方式的前提下,为装饰器对象添加新功能
装饰器与被装饰的对象均可以是任意调用的对象
装饰器=>函数
被装饰的对象=>函数
语法糖
被装饰函数的正上方,单独一行 @deco1 def foo(): pass foo=deco1()
而且语法糖的先后顺序也会影响代码执行结果
# import time 引入time库
#定义了一个闭包函数(最高嵌套3层)
# def timer(func):
# 函数内部包含一个函数,且引用函数内部的变量即闭包函数,闭包函数从自身所在名称空间出发寻找变量,找不到就跳出本层找,直到找到内置名称空间
# def wrapper(*args,**kwargs):
# *args和**kwargs保证了能接收任何参数
# 代码块
# start_time = time.time()
# res=func(*args,**kwargs) #调用最原始的index
# 上面接收什么,这里就会接收什么
# stop_time = time.time()
# print('run time %s' % (stop_time - start_time))
# return res #这个是干嘛的,只知道是返回最原始的index
# return wrapper #返回的是wrapper函数名对应的内存地址,可以加()直接调用
#
# @timer #语法糖,相当于index=timer(index)
# def index():
# time.sleep(1、
# print('welcome to index page')
# return 123
# @timer
# def home(name):
# time.sleep(2)
# print('welcome %s to index page' %name)
#
# index()
# home('egon')
所有评论(0)