Python装饰器

装饰器:
定义:本质是函数,(装饰其他函数),为其它函数添加附加功能

原则: 
1、不修改被装饰的函数的源代码
2、不修改被装饰的函数的调用方式

函数即变量    函数名指向内存中的函数体


高阶函数:
1、把一个函数名当做实参传给另外一个函数
2、返回值中包含函数名

嵌套函数:
1、在一个函数体内,用def定义一个函数



高阶函数 + 嵌套函数 --> 装饰器


#装饰器的实现方式

import time

def timmer(func):         #高阶函数:把一个函数名当做实参传给另外一个函数
    def deco(*args,**kwargs):           #嵌套函数:在一个函数体内,用def定义一个函数
        start_time = time.time()
        func(*args,**kwargs)             #执行被装饰函数
        stop_time = time.time()
        print("The func run time is %s" % (stop_time - start_time))  #加入的功能
    return deco          #高阶函数:返回值中包含函数名

def test1():
    time.sleep(2)
    print("in the test1")


test1 = timmer(test1)  #将函数名重新指向timmer函数return的deco在内存中的函数体,python的语法糖@相当于执行了这一步

test1()     #调用函数,相当于调用deco()

 

posted @ 2018-08-24 17:24  谭普利特  阅读(146)  评论(0编辑  收藏  举报