继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

python3的 yield 使用

慕运维2858188
关注TA
已关注
手记 123
粉丝 63
获赞 512
斐波那契数列

使用 print 打印 b值时,是依次全部打印输出的
图片描述

yield 做的三件事

1.类似 return 返回值
2.暂停迭代,直到调用下一个next()方法
3.函数调用时返回生成器对象

图片描述

容器 可迭代对象 迭代器 生成器

图片描述

从这张图里我们可以清楚看到这四者的关系

容器是一系列元素的集合,str、list、set、dict、file、sockets对象都可以看作是容器,容器都可以被迭代(用在for,while等语句中),因此他们被称为可迭代对象。

-

可迭代对象实现了iter方法,该方法返回一个迭代器对象。

-

迭代器持有一个内部状态的字段,用于记录下次迭代返回值,它实现了nextiter方法,迭代器不会一次性把所有元素加载到内存,而是需要的时候才生成返回结果。

-

创建生产器的两种方法,使用函数,使其返回值不是通过return而是用yield。第二中就是生产器表达式

-

生成器一定是迭代器, 但是迭代器不一定是生成器

区别和联系

不管是哪个器,将都是区别于普通容器将所有数据一次加载到内存中,下一个数都是根据上一数据产生
从本质上来讲, 迭代器对象在内部实现了__next和\iter方法;
可迭代对象实现了\
iter__方法,该方法返回一个迭代器对象。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP