详解python中的yield(生成器)
yield
- 1.yield与return的异同点
- 2.yield使用的好处
- 3.具体实例理解生成器的用法
- 实例一
- 实例二
- 实例三
1.yield与return的异同点
相同:都可以返回函数执行的结果
不同点:
- return是用来返回具体的某个值。
yield一般与循环一起用,被称之生成器(generator),然后在这个生成器里面存放了每次循环以后的值,并且就在那放着,不输出也不返回,等你下次需要他的时候直接取出调用,相当于使得函数暂停。 - return返回之后停止,后面的就不在输出。
yield返回之后接着运行后面的东西。
总之,我们可以把yield就想成return,只是停止之后记住了这个返回的位置,下次还可以拿出来继续调用。
2.yield使用的好处
在处理非常大的数据集合时,最主要的好处就是省内存。
3.具体实例理解生成器的用法
实例一
代码:
#coding=utf-8def gen():
#定义一个函数取值为1,2,3,4for i in range(1, 5):yield iprint()#g为上面的生成器
g = gen()
#程序运行到yield就暂停,等待下一个next
print(next(g))
print(next(g))
print(next(g))
#send是往生成器里面传的值,最后打出也是这个值
print(g.send(4))
运行结果:
实例二
代码:
def list():stars = []while True:names = yield starsstars.append(names)print("你最喜欢的明星是", names)#g为上面的生成器
g = list()
#开启生成器
next(g)
print(g.send("周杰伦"))
print(g.send("胡歌"))
print(g.send("古力娜扎"))
运行结果:
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
实例三
代码:
def generator_two():while True:x = yieldprint("value:", x)
#g为上面的生成器
g = generator_two()
#程序运行到yield就暂停,等待下一个next
next(g)
#给yield传送值1,yield再将1传给x,继续下一次循环,停在yeild处
g.send(1)
#给yeild传送值2,yield再将2传给x,继续下一次循环,停在yeild处
g.send(2)
#没有给yield传值,打印输出None,继续停在yield处,等待下一个next
next(g)
运行结果
https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注!
欢迎关注微信公众号:宝藏女孩的成长日记
让这个可爱的宝藏女孩在努力的道路上与你一起同行!
如有转载,请注明出处(如不注明,盗者必究)
详解python中的yield(生成器)相关推荐
- python的装饰器迭代器与生成器_详解python中的生成器、迭代器、闭包、装饰器
迭代是访问集合元素的一种方式.迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 1|1可迭代对象 以直接作用于 for ...
- python 协程可以嵌套协程吗_Python | 详解Python中的协程,为什么说它的底层是生成器?...
今天是Python专题的第26篇文章,我们来聊聊Python当中的协程. 我们曾经在golang关于goroutine的文章当中简单介绍过协程的概念,我们再来简单review一下.协程又称为是微线程, ...
- python操作目录_详解python中的文件与目录操作
详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...
- python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...
文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...
- python中list[1啥意思_详解Python中list[::-1]的几种用法
本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...
- pythonnamedtuple定义类型_详解Python中namedtuple的使用
namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...
- python停止线程池_详解python中Threadpool线程池任务终止示例代码
需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...
- python join_详解Python中的join()函数的用法
函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...
- python中index函数_详解python中的index函数用法
1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...
最新文章
- linux卸载rpm包
- Redis数据库教程——系统详解学习Redis全过程
- javascript中的console.log有什么作用?
- ajax请求文件下载 php,使用Ajax请求下载文件
- Redis常用命令之操作Hash类型
- ThinkPHP模型连接数据库 查询 ajax
- 办公技巧:Word批量小技巧,大大提高工作效率
- [vue] 怎么捕获组件vue的错误信息?
- Android基础字符串String.md
- 选举学生会(洛谷P1271题题解,Java/C++语言描述)
- 混合类型数据格式化输入
- 迅速上手:使用taro构建微信小程序基础教程
- 【论文理解】Learning in the Frequency Domain
- C++根据.h文件批量生成需要的函数框架
- 通过标签向flash传递参数
- country-converter官方文档----机翻人工确认
- python 点分十进制IP地址转16进制字符串
- 联想研究院裁员---血淋漓的教训:公司不是家(老文)
- 做到这五点,才算是好用户体验
- android 7双排设置菜单,双排状态栏布局教程
热门文章
- 随机抽样java_实现随机抽样【随机数生成问题】
- linux下IPROTO_TCP,TCP/IP协议栈在Linux内核中的运行时序分析
- 数据列表的分页实现————分页敏捷开发
- matlab和vlfeat关联,VLFeat在matlab和vs中安装
- java开发中推荐的防御sql注入方法_不推荐的防御sql注入方式
- 个人对于MySQL的理解_MySQL锁的理解
- mysql 数据记录导出_mysql如何导出600万条记录的数据表?
- mysql 数据库设置mysql注入_MYSQL数据库浅析MySQL的注入安全问题
- php查找以xx结尾的的字符串单词,Javascript中查找不以XX字符结尾的单词示例代码_javascript技巧...
- 燃气灶电气线路图及原理_一位造价大神的电气工程造价知识整理笔记_深圳电气造价预算培训要多少钱...