Python——装饰器

Python——装饰器

装饰器本质就是函数,功能是为其他函数添加附加功能

原则有二:
1、不修改被修饰函数的源代码
2、不修改被修饰函数的调用方式

装饰器=高阶函数+函数嵌套+闭包

高阶函数定义:
1、函数接受的参数是一个函数名
2、函数的返回值是一个函数名
满足上述条件任意一个,即是高阶函数

**猜想:**如果把高阶函数的两个条件结合使用,能附加新的功能吗(达到装饰器的效果)?

在这里插入图片描述
在这里插入图片描述

结果是多运行了一步。
即便把高阶函数的两个条件结合使用,也不能达到装饰器的效果。

函数嵌套可以包含闭包。
闭包:把主要变量封装起来,封装在最里面那层;也可以给最外层传变量,最底层接收变量。(即最低层才有变量,其他层没有变量)

当把高阶函数跟函数嵌套跟闭包结合起来,就是装饰器!

例子:
在这里插入图片描述
在这里插入图片描述

为test函数增加了计时功能,既没有改变源代码与运行方式,又增加了新功能。

但是,在这一块:

test = timer(test)
test()

有赋值操作;如果有很多函数,则需要一个个去赋值,相当麻烦!

所以最终代码为:
在这里插入图片描述
这里:
@timer 就相当于 test = timer(test)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值