装饰器

1,什么是装饰器

  装饰器指的是为被装饰对象添加新功能的工具

  装饰器本身可以是任意可调用对象

  被装饰对象本身也可以是任意可调用对象

 

2,为何要用装饰器

  开放封闭原则:对修改封闭,对扩展开放

  装饰器的实现原则:

    1),不能修改被装饰对象的源代码

    2),不能修改被装饰对象的调用方式

  装饰器的目的:

    就是在遵循原则1和2的掐前提为被装饰对象添加新功能  

 

import time


def outer(func):
    def wrapper(*args,**kwargs):
        start = time.time()
        res=func(*args,**kwargs)
        stop = time.time()
        print('this process run %s' % (stop - start))
        return res
    
    return wrapper


@outer
def index():
    time.sleep(.5)
    print('hello')


index()

 

 

装饰器模板

def outer(func):
    def wrapper(*args,**kwargs):

        res=func(*args,**kwargs)

        return res
    return wrapper

 

装饰器语法糖:

  在被装饰对象正上方,并且单独一行写上@装饰器名(将下方函数名当做参数传给装饰器名,返回值赋给下方函数名)

 

posted @ 2018-11-29 15:11  kongpan  阅读(123)  评论(0编辑  收藏  举报