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装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python 装饰器:装饰器实例内置装饰器

python 装饰器:装饰器实例内置装饰器

python 装饰器:装饰器实例类装饰器(装饰函数)

python 装饰器:装饰器实例类装饰器(装饰函数)

理解Python装饰器

python高阶3 python装饰器