python可迭代对象、迭代器和生成器

        可迭代对象指的是兼容__iter__函数的对象,调动该函数会返回一个生成器,生成器指的是兼容__next__函数的对象,__next__函数会单次获取便利对象的值并返回。

        对于迭代工具,实际上遍历的是迭代器,因此,对于迭代工具(比如for循环),其实际上需要先获取一个迭代器,所以对于可迭代对象,python会先通过iter内置函数作用在可迭代对象上,获取一个迭代器,然后再进行单次遍历(对于已经是生成器的对象,iter函数返回的就是该对象本身),这就是迭代协议。

        为什么需要区分可迭代对象和迭代器,因为迭代器只能进行顺序单次遍历,遍历完后无法再获取对象的值,但是我们对于序列对象,并不仅仅对其单次遍历,需要反复的获取对象的值,而可迭代对象就可以反复获取对象的值,这就是区分可迭代对象和迭代器的意义。

        生成器对象本身含有__next__函数,因此,生成器对象本身也是迭代器。其通过__next__函数实现值的惰性生成和状态挂起。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值