Python学习之路:装饰器实现2

装饰器要装饰的函数的参数个数不确定时,采用弹性参数*args,**kwargs

import  time

def timer(func):#timer(test1) func=test1
    def deco(*args,**kwargs):
        start_time=time.time()
        func(*args,**kwargs)#run test1
        stop_time=time.time()
        print('the func run time is %s'%(stop_time-start_time))
    return deco

@timer #加装饰器 test1=timer(test1)
def test1():
    time.sleep(3)
    print('in the test1')

@timer #加装饰器 test2=timer(test2)  =deco  test2()=deco()
def test2(name,age):
    print("test2:",name,age)

test1()
test2("alex",33)

 

posted @ 2017-11-28 11:09  Py小白  阅读(181)  评论(0编辑  收藏  举报