Python-装饰器

'''具有返回值和参数的装饰器:'''
improt time def timer(func) def demo(*args, **kwargs): beg = time.time() rst = func(*args, **kwargs) end = time.time() print(end-beg) return rst return demo @timer def Inst(parameter): time.sleep(2) print("time begin running!") return "time end" Inst()

'''
带参数的装饰器:
不同的函数有不同的装饰器
'''
@decorator(parameter = value)
import time

def timer(parameter):

    def outer_wrapper(func):

        def wrapper(*args, **kwargs):
            if parameter == 'one':
                beg = time.time()
                func(*args, **kwargs)
                end = time.time()
                print("the one  is :", end - beg)
            elif parameter == 'two':
                beg = time.time()
                func(*args, **kwargs)
                end = time.time()
                print("the two is :", end - beg)

            return wrapper

        return outer_wrapper

@timer(parameter='one')
def one():
    time.sleep(2)
    print("in the one")

@timer(parameter='two')
def two():
    time.sleep(2)
    print("in the two")

one()
two()                
posted @ 2018-11-07 16:41  kang09  阅读(103)  评论(0编辑  收藏  举报