python装饰器
Posted 鵬程萬裏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python装饰器相关的知识,希望对你有一定的参考价值。
一:开放封闭原则,对扩展是开放的,对修改是封闭的
二:装饰器,装饰器本质可以是任意可调用的对象,被装饰的对象也可以是任意可调用对象
装饰器的功能是:
在不修改被装饰对象源代码以及调用方式的前提下为其添加新功能
原则:
1.不修改源代码
2.不修改调用方法
目标:添加新功能
装饰器的语法:在被装饰对象的正上方的单独一行。@装饰器名字 import time import random #装饰器 def timmer(func):#func=index #func=index def wrapper(): start_time=time.time() func()#index stop_time=time.time() print(‘run time is %s‘ %(stop_time-start_time)) return wrapper #被装饰函数 @timmer #index=timer(index) def index(): time.sleep(random.randrange(1,5)) print(‘welecome to index page‘) @timmer def home(): time.sleep(random.randrange(1, 3)) print(‘welecome to HOME page‘) # index=timmer(index) #index=wrapper # index() #wrapper() @timmer等于这两步 index() home() 可以加多个装饰器,计算顺序是自下而上,自上而下运行 装饰器修订版本 import time import random #装饰器 def timmer(func): def wrapper(*args,**kwargs): start_time=time.time() res=func(*args,**kwargs) stop_time=time.time() print(‘run time is %s‘ %(stop_time-start_time)) return res return wrapper #被装饰函数 @timmer def index(): time.sleep(random.randrange(1,5)) print(‘welecome to index page‘) res1=index() print(res1)
以上是关于python装饰器的主要内容,如果未能解决你的问题,请参考以下文章