python的装饰器

参考:1、http://www.liujiangblog.com/course/python/39

      2、https://www.cnblogs.com/cicaday/p/python-decorator.html

   3、http://www.liujiangblog.com/course/python/46

 1 def celebrator(func):
 2     def inner(*args, **kwargs):
 3         print('新功能!')
 4         func(*args, **kwargs)     
 5     return inner
 6 
 7 @celebrator  # 等价于 f1 = celebrator(f1)
 8 def f1(s):
 9     print(s)
10 f1('你好')

输出结果:

新功能!
你好

  装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

  闭包是一种函数,它会保留定义函数时存在的自由变量的绑定,这样调用函数时,虽然定义作用域不可用了,但是仍能使用那些绑定。
  python的自带装饰器property详解参考3

原文地址:https://www.cnblogs.com/jianglinliu/p/10577921.html