首页 > 编程语言 > 详细

Python装饰器函数

时间:2018-10-29 13:58:43      阅读:220      评论:0      收藏:0      [点我收藏+]
装饰器函数

这里定义了一个func函数,打印‘我是func函数’

def func():
    print(‘我是func函数‘);
        time.sleep(1);

假设,想要在func()函数的基础之上新增的一个功能,计算func函数执行所用的时间

import time;#时间模块,处理时间操作
#开闭原则,对扩展开放,对修改封闭
def func():
    print(‘我是func函数‘);
    time.sleep(1);#休眠一秒
#tools方法就是func方法的装饰器
def tool():
    def inner():#利用了高阶函数
        #开始的时间
        starttime=time.time();
        func();#调用函数执行上面的方法
        #结束的时间
        endtime=time.time();
        print(‘用时:%s秒‘%(endtime-starttime));
    return inner;
inner=tool();
inner();

####################调用的方式混乱 以上策略不推荐
#接下来使用装饰器,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。本质上,decorator就是一个返回函数的高阶函数。

def logger(flag):
    #装饰器
    def tool(f):#f:func方法的方法名
        def inner():#利用了高阶函数
            #开始的时间
            starttime=time.time();
            f();#真正的执行方法,调用了func
            #结束的时间
            endtime=time.time();
            print(‘用时:%s秒‘%(endtime-starttime));
            if flag==‘true‘:
                print(‘你传入了TRUE变量‘)
        return inner;#内层方法的函数名
    return tool;
#主方法。想要给修饰器传参,在修饰器外重新生成修饰器
@logger(‘true‘)
def func():
    print(‘我是func函数‘);
    time.sleep(1);#休眠一秒
func();

Python装饰器函数

原文:http://blog.51cto.com/13770206/2310028

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!