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函数,将add函数作为f传入。

  3. 带参装饰器(有三层函数,多加一层传入参数的函数)

  def log_with_param(text):  //传参

    def log_decorator(f): //传函数

      def fn(*args, **kw):  //实现装饰器

        print '%s'%(text)    //应用传入的参数

        return f(*args, **kw) //调用传入的函数

      return fn 

    return log_dercorator

  应用:

    @log_with_param('test')

    def add(x, y):

      return x + y

    print add(1, 2)

    输出结果为:

    test

    3

posted @ 2020-05-25 11:16  明朝乘扁舟  阅读(181)  评论(0)    收藏  举报