时间:2021-07-01 10:21:17 帮助过:15人阅读
装饰器其实也就是一个函数,一个用来包装函数的函数,返回一个修改之后的函数对象。经常被用于有切面需求的场景,较为经典的有插入日志、 性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装 饰器的作用就是为已经存在的对象添加额外的功能。
首先来看看一个小例子:
def alan():
print('alan speaking')
分享一篇我的笔记:Python装饰器笔记(知乎这里排版我排的不好,有意仔细看的可以点前面的链接跳转到简书)首先我们来探讨一下这篇文章所讲的内容Inner Functions - What Are They Good For?(中文版)
使用内层函数的三个好处1.封装
def outer(num1):
def inner_increment(num1): # hidden from outer code
return num1 + 1
num2 = inner_increment(num1)
print(num1, num2)
inner_increment(10) #不能正确运行
# outer(10) #可以正常运行
再你想改变一个已有函数的功能的时候可以用。 可以添加功能在调用函数之前和之后,这样就可以生成一个基于之前函数的新函数def addOne(func):
def wraper(*args,**kwargs):
saySmthing = "Result :"
return saySmthing +" "+ str(func(*args,**kwargs))
return wraper
@addOne
def func(a,b):
return a+b
print(func(10,20))
偷懒的时候。装饰器是在Python 2.4中加入的,它使得函数和方法封装(接收一个函数并返回增强版本的一个函数)更容易阅读和理解。原始的使用场景是可以将方法在定义的首部将其定义为类的方法或静态方法。
常见的装饰器模式包括:
- 参数检查;
- 缓存;
- 代理;
- 上下文提供者。