python中的装饰器

AOP面向切面的编程:将公用的模块提取出来,形成一个单独的组件。

装饰器:(1)扩展函数(2)AOP

一、闭包
在内部函数中去访问外部函数的变量,外部函数中直接返回内部函数名的调用。
def outer ():
x = 1
def inner():
print (x)
return inner
a=outer()
print (a. closure)
闭包条件:
1.嵌套函数
2.内部函数访问外围变量
3.外部函数return内部函数的名字

闭包使用的场景:
1.函数中有一些变量在被调用后,仍然希望保留
2.当函数需要扩展功能,但是又不能修改原来函数的名字。

二、装饰器
装饰器用来处理被装饰的函数,返回函数的函数名字,采用闭包的思想。
在不修改原来函数的基础上,对现有函数进行扩充,功能的扩展。
装饰器 @装饰的名字

装饰器的原理
装饰器的底层是使用闭包实现
原函数名=装饰函数(被装饰函数)

2.对装饰器的优化
(1)参数的优化,使用万能参数

(2)返回值
在inner中直接获取函数的返回值,作为inner的返回值即可

3.装饰器的叠加
使用装饰器

4.含有参数的装饰器
如果在装饰器中需要使用到其他的参数,那么可以采用在外侧包一层外部函数的方式解决。
在装饰原函数的时候,@装饰器(函数名)
注意:不要在装饰器的一层传入其他的参数,装饰器的一层只传函数名

5.保留函数的元信息
使用functools 下的wraps实现元信息的保留

6.类装饰器
实现装饰器的效果不仅仅可以使用装饰器函数,还可以使用类解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值