python 迭代器、生成器基础知识

1.迭代器

迭代器对象要求支持迭代器协议的对象,在Python中,
支持迭代器协议就是实现对象的__iter__()和next()方法。
其中__iter__()方法返回迭代器对象本身;
next()方法返回容器的下一个元素,在结尾时引发StopIteration异常。

2.生成器generator

在 Python 中,使用生成器可以很方便的支持迭代器协议。
生成器通过生成器函数产生,生成器函数可以通过常规的def 语句来定义,
但是不用 return 返回,而是用 yield 一次返回一个结果,在每个结果之间挂起和继续它们的状态,来自动实现迭代协议。

也就是说,yield 是一个语法糖,内部实现支持了迭代器协议,
同时 yield 内部是一个状态机,维护着挂起和继续的状态。
生成器函数返回生成器的迭代器。 “生成器的迭代器”这个术语通常被称作”生成器”。
要注意的是生成器就是一类特殊的迭代器。作为一个迭代器,生成器必须要定义一些方法,
其中一个就是 __next__()。如同迭代器一样,我们可以使用 __next__() 函数来获取下一个值。

在一个 generator function 中,如果没有 return,则默认执行至函数完毕,如果在执行过程中 return,
则直接抛出 StopIteration 终止迭代。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值