Python编程进阶_09(生成器和yield关键字)
生成器的创建方式
根据程序设计者制定的规则循环生成数据,当条件不成立时则生成数据结束
数据不是一次性全部生成出来,而是使用一个,再生成一个,可以节约大量的内存。
创建生成器的方式
① 生成器推导式
② yield 关键字
☆ 生成器推导式
与列表推导式类似,只不过生成器推导式使用小括号。
1 | # 创建生成器 |
生成器相关函数:
1 | next 函数获取生成器中的下一个值 |
yield生成器
yield 关键字生成器的特征:在def函数中具有yield关键字
1 | def generator(n): |
1 | def generator(n): |
1 | def generator(n): |
注意点:
- ① 代码执行到 yield 会 暂停 ,然后把结果返回出去,下次启动生成器会在暂停的位置继续往下执行
- ② 生成器如果把数据生成完成,再次获取生成器中的下一个数据会抛出一个 StopIteration 异常 ,表示停止迭代异常
- ③ while 循环内部没有处理异常操作,需要手动添加处理异常操作
- ④ for 循环内部自动处理了停止迭代异常,使用起来更加方便, 推荐使用 。
yield关键字和return关键字
如果不太好理解yield
,可以先把yield
当作return
的同胞兄弟来看,他们都在函数中使用,并履行着返回某种结果的职责。
这两者的区别是:
有return
的函数直接返回所有结果,程序终止不再运行,并销毁局部变量;
1 | def example(): |
而有yield
的函数则返回一个可迭代的 generator(生成器)对象,你可以使用for循环或者调用next()方法遍历生成器对象来提取结果。
1 | def example(): |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Pandolar's Blog!
评论