首页 > 编程语言 > 详细

python 装饰器从放弃到玩转(高级)

时间:2017-02-14 22:54:41      阅读:146      评论:0      收藏:0      [点我收藏+]

前面说了

  1. 计算原有函数的执行时间

  2. 利用装饰器如何给原有函数传参

  3. 利用装饰器如何接受原有函数的返回值


最后我们说下如何给装饰器传值

举个例子,有的函数我需要统计函数的运行时间,有的函数我需要统计他开始执行的时间,有人会说可以写多个装饰器,这个方法可以,但是这种方法会不会让我们的代码闲的过于臃肿


假设test01需要计算函数的运行时间

看代码

def record_time(key):

    def out_warppper(func):

        def warpper(*agrs,**Kwagrs):

            start_time = time.time()

            a = func(*agrs,**Kwagrs)

            end_time = time.time()

            print "总共用时:" + str(int(end_time) - int(start_time))

            return a

        return warpper

    return out_warpper


@record_time("test01")

def test01(name=name):

    time.sleep(3)

    print "test"

    return name


r = test01("tets01")

print r


解释

  1. @record_time("test01")== test01 = record_time("test01") == out_warpper(test01) == warpper

  2. test01("test01") == warpper("test01")

  3. 执行warpper函数

  4. 执行原test01函数


可以看到不管是接受原函数的返回值,接受函数传参,装饰器接受参数,只要你真正理解了装饰器的调用原理及方式,都不难实现

本文出自 “expect批量同步数据” 博客,请务必保留此出处http://4249964.blog.51cto.com/4239964/1897553

python 装饰器从放弃到玩转(高级)

原文:http://4249964.blog.51cto.com/4239964/1897553

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