Python装饰器

China☆狼群 提交于 2019-12-04 00:50:13

再不影响函数的情况下,提供更多的功能。

本质:python函数或类。  让其他函数或类在不需要做任何代码修改的前提下增加额外功能,返回值也是函数或类对象。

插入日志、性能测试、事务处理、缓存、权限校验等场景,装饰器是解决这类问题的绝佳设计。

我们可以抽离出大量与函数功能本身无关的雷同代码到装饰器中并继续重用。

def foo():
    print("foo")
    logging.info("foo is running")    #新的需求,希望可以记录下函数的执行日志
def bar(func):      #Python 中的函数可以像普通变量一样当做参数传递给另外一个函数
    func()

bar(foo)

 减少重复代码:

def use_logging(func):
    logging.warn("%s is running" % func.__name__)
    func()

def foo():
    print('i am foo')

use_logging(foo)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!