python学习之-装饰器
Posted clyde_S
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习之-装饰器相关的知识,希望对你有一定的参考价值。
1. 什么是装饰器
装饰器就是用来为被装饰的对象新增功能的工具/函数,被装饰的对象可以是任意可调用的对象,装饰器本身也可以是任意可调用的对象
2. 为何要用装饰器
开放封闭原则:对修改封闭,对扩展开放
装饰器需要遵循的原则:
1. 不能修改被装饰对象的源代码
2. 不能修改被装饰对象的调用方式
PS:装饰器的目标:就是要在遵循原则1和2的前提下,为被装饰对象新增功能
3. 如何实现装饰器
import time
def index(): #这是被装饰对象
time.sleep(1)
print(‘welcome to index page‘)
def timmer(func): # func=最原始那个index的内存地址 #这个就是装饰器格式
def wrapper():
start=time.time()
func()
stop=time.time()
print(‘run time is %s‘ %(stop - start))
return wrapper
index=timmer(index) #index=wrapper(index的内存地址),这两个index不一样,前面的是一个新的名称空间,后面的index做了一个转换 #这一步就是用来包装,让使用者感觉没有变化但是后台却对功能进行了一个升级
index()
PS:为什么要在嵌套函数的外面再加一层函数,因为如果不加这层函数,则最后包装调用时候无法传入index整个参数
以上是关于python学习之-装饰器的主要内容,如果未能解决你的问题,请参考以下文章