python 装饰器

举例

现有一个函数,我们想测试它的运行时间,一个直接的方法就是更改原函数,记录其开始与结束时间。但这样很暴力,而且在想进行多方面修改时容易混乱,破坏其可读性,不利于程序扩展。这事装饰器就派上用场了。

装饰器

形象的说,Python的装饰器是一个包装函数的函数。在不改变原函数的情况下执行一些其它的操作。例如插入日志、性能测试、事务处理等等。

实例

    def spamrun(fn):
        def sayspam(*args):
                print "spam,spam,spam"
            return sayspam
        @spamrun
        def useful(a,b):
            print a**2+b**2
           
    useful(3,4)


 - 输出:
    spam,spam,spam
 def addspam(fn):
     def new(*args):
            print "spam,spam,spam"
            return fn(*args)
        return new
    @addspam
    def useful(a,b):
        print a**2+b**2     
useful(4,3)



 - 输出: 
    spam,spam,spam
    25

 def addspam(fn):
     def new(*args):
            fn(*args)
            print "spam,spam,spam"
        return new
    @addspam
    def useful(a,b):
        print a**2+b**2     
useful(4,3)

- 输出:
    25
    spam,spam,spam

标签: none

添加新评论