Python decorator装饰器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python decorator装饰器相关的知识,希望对你有一定的参考价值。

问题:

  • 定义了一个新函数
  • 想在运行时动态增加功能
  • 又不想改动函数本身的代码

通过高阶段函数返回一个新函数

def f1(x):
    return x*2

def new_fn(f): #装饰器函数
    def fn(x):
        print (call  + f.__name__ + ())
        return f(x)
    return fn
#方法1
g1 = new_fn(f1)
print (g1(5))
#方法2
f1 = new_fn(f1) #f1的原始定义函数彻底被隐藏了
print (f1(5))

#输出:
#call f1()
#10

 

装饰器

python内置的@语法就是为了简化装饰器

类似上述的方法2

 

 

技术分享

装饰器的作用

可以极大的简化代码,避免每个函数编写重复性代码

  • 打印日志:@log
  • 检测性能:@performance
  • 数据库事务:@transaction
  • URL路由:@post(‘/register‘)

 

以上是关于Python decorator装饰器的主要内容,如果未能解决你的问题,请参考以下文章

python--decorator装饰器

Python – 装饰器(Decorator)

python 装饰器 Decorator

python装饰器Decorators

python-闭包和装饰器-02-装饰器(decorator)

python-闭包和装饰器-02-装饰器(decorator)