再不影响函数的情况下,提供更多的功能。
本质: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