python之decorator 装饰器

1. 装饰器的概念(decorator)

  动态扩展已定义函数的功能,但是不改动函数本身的代码。

  原理:高阶函数可以接受函数作为参数,并返回一个函数。

     所以将需要扩展的函数作为参数传入,生成新的函数返回。

2. 调用装饰器,运用@  

    比如定义了装饰器log

    def log(f):

      def fn(*args, **kw): //对于任意参数定义的函数都可以调用

        print ‘this  is a log‘ //装饰器扩展内容

        return f(*args, **kw) //调用参数函数

      return fn //返回装饰器函数

    对于装饰器log的调用

    @log

    def add(x, y):

      return x + y

    print add(1, 2)

    结果为 : 

    this is a log

    3

    运行时直接调用装饰器log的fn函数