首页 > 代码库 > Python decorator装饰器

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装饰器