ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

生成器

2022-01-13 20:03:25  阅读:150  来源: 互联网

标签:__ res 生成器 yield next 取值


一、迭代取值和索引取值的对比

迭代取值:
1. 不依赖于索引取值,__next__()取值
2. 不能重复取值,只能从左往右一个一个取值
索引取值:
1. 必须要是一个容器类型
2. 可以重复取值

二、生成器

生成器就是自定义的迭代器

函数里面有yield关键字之后,函数调用之前还是函数,一旦调用函数变成了生成器

一旦是生成器,就可以__next__取值了

函数中的yield关键字的玩法:__next__一下,走一个yield,光标就停在了yield
如果再次__next__,会从上一次停留的yield位置继续往下走

 

三、生成器实现range功能

四、yield传值

def index(name):
    print('%s 准备干饭' % name)
    while True:
        food = yield
        print('%s 开干 %s' % (name, food))

res=index('ly')
res.__next__()
# res.__next__()

res.send('苹果')
res.send('橘子')

五、yield和return的对比

yield:
1. 函数内遇到yield关键字把函数变成了生成器
2. yield 也可以返回值,并且支持返回多个(元组形式)
3. 遇到yield,函数不会结束,而是"停住"
4. yield 也支持传值
return
1. 后面可以跟返回值,也支持返回多个(元组形式)
2. 函数遇到return,会立马结束

 

标签:__,res,生成器,yield,next,取值
来源: https://www.cnblogs.com/erfeier/p/15799435.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有