python中的生成器、迭代器、装饰器、闭包

本文深入探讨了Python中的生成器与闭包概念,解释了生成器如何节省内存并保持状态,闭包如何引用外部函数变量,以及它们在装饰器中的应用。同时,文章还介绍了迭代器的基本原理及生成器与迭代器之间的关系。

生成器:
定义:在python中,一边循环一边计算的机制,称为生成器;
优点:
1.节约内存;
2.迭代到下一次的时候,所用到的参数都是第一次保留 下来的;
示例:a = (i for i in range(10))
print(next(a))
两种方法:next(),send()
next()和next()的用法一致; a.next()
send()方法:使用send()方法时,yield前面必须加一个变量来获取send()传过去的参数,并且在调用send()方法的时候必须执行过至少一次__next__()或者next()方法,不然会报错,打印接收send()传过去的参数,返回的不止有参数,还有生成器内保存的yield后的数据一并返回.
注意:生成器只能遍历一次!

迭代器:
定义:迭代器是可以被next()函数调用并不断返回下一个值的对 象称为迭代器.生成器是迭代器的子类.
iter()函数可以将可迭代对象转换成迭代器.
可迭代对象:指list,dict,tuple,set,str

闭包:
定义:内部函数对外部函数变量的引用(非全局变量),则内部函数 称为闭包.

闭包的三要素:
1.嵌套函数
2.变量的引用
3.返回内部函数
特性:闭包函数可以记住外部函数参数

装饰器:
定义:装饰器其实就是一个闭包,不同的是把一个函数当成参数返 回一个替代版的函数.
两个特性:
1.可以把装饰的函数替换成其他函数
2.可以在加载模块的时候立即执行
自我理解:装饰器就是在不改变原有函数的基础之上对函数进行 增加一些功能.
装饰器的功能:
1.引入日志
2.函数执行时间的统计
3.执行函数前预备处理
4.执行函数后清理功能
5.权限z校验等场景
6.缓存

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值