python装饰器

xiaoxiao2021-02-28  88

刚开始看Python核心编程的时候,刚接触到装饰器的时候,有点懵逼了,我们为什么需要装饰器,装饰器的语法我们以前都没有接触过。知道今天才慢慢开始搞懂装饰器,装饰器的本质实际上就是函数。

为什么需要装饰器?

装饰器就是我们在对原有的函数功能上不能满足我们现在的需求,我们希望在装饰器的基础之上,让函数的新功能在原来函数之前做点什么,在原来函数之后做点什么。

装饰器的原理

装饰器的语法,通过@符号函数名 自定义函数

实际上装饰器做了两件事情

1.执行装饰器函数,将装饰器下面的函数作为参数传递进去

2.将装饰器函数的返回值重新赋值给原函数(我们知道在函数有重定义的函数时,Python解释器从上往下执行,下面的函数会覆盖上面的函数)

例子

1.执行outer函数,将f函数作为参数传递进去,即func和f函数都只想同一个函数

2.将outer函数的返回值赋值给f,即f为inner新函数

此时,在执行f函数即相当于执行inner函数,就像发生了函数的重写

如果原来的函数带参数,而我们又想我们的装饰器能够应用于不同的所有函数,那么我们可以应用动态参数的原理来实现装饰器

对应代码

我们如果有新的需求,一部分添加部分功能,还有一部分在部分功能基础之上再添加部分功能,那么我们这时候需要嵌套使用装饰器

当涉及到多个装饰器嵌套的时候,我们可以首先将最里层的装饰器替换为装饰器函数的内部的inner函数,然后一层一层嵌套即可

转载请注明原文地址: https://www.6miu.com/read-50833.html

最新回复(0)