装饰器是给代码升级功能

#最简单的装饰器;有返回值的;有一个参数的;万能参数的
import time

def ti(f):
    def inner(*args,**kwargs):
        start = time.time()
        ret = f(*args,**kwargs)
        end = time.time()
        print(end - start)
        return ret
    return inner

@ti #语法糖
def func1(a,b):
    time.sleep(0.01)
    print('你好',a,b)
    return "新年快乐"

@ti
def func2(a):
    time.sleep(0.01)
    print('你好',a)
    return "新年快乐"


#func = ti(func)  #加了装饰器后就省略了这一句
ret1 = func1(a=2,b=4)
ret2 = func2(a=222)
print(ret1,'\n',ret2)

装饰器的固定模式

def wrapper(f): #wrapper是装饰器函数名,f是被装饰函数
    def inner(*args,**kwargs):
        '''
        在被装饰的函数之前要做的事
        '''
        ret = f(*args,**kwargs)
        '''
        在被装饰的函数之后要做的事
        '''
        return ret
    return inner

 

posted on 2020-07-05 13:22  知否知否,  阅读(76)  评论(0编辑  收藏  举报