yield

  • 1.yield与return的异同点
  • 2.yield使用的好处
  • 3.具体实例理解生成器的用法
    • 实例一
    • 实例二
    • 实例三

1.yield与return的异同点

相同:都可以返回函数执行的结果
不同点:

  1. return是用来返回具体的某个值。
    yield一般与循环一起用,被称之生成器(generator),然后在这个生成器里面存放了每次循环以后的值,并且就在那放着,不输出也不返回,等你下次需要他的时候直接取出调用,相当于使得函数暂停。
  2. 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(生成器)相关推荐

  1. python的装饰器迭代器与生成器_详解python中的生成器、迭代器、闭包、装饰器

    迭代是访问集合元素的一种方式.迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 1|1可迭代对象 以直接作用于 for ...

  2. python 协程可以嵌套协程吗_Python | 详解Python中的协程,为什么说它的底层是生成器?...

    今天是Python专题的第26篇文章,我们来聊聊Python当中的协程. 我们曾经在golang关于goroutine的文章当中简单介绍过协程的概念,我们再来简单review一下.协程又称为是微线程, ...

  3. python操作目录_详解python中的文件与目录操作

    详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os. ...

  4. python open 打开是什么类型的文件-详解Python中open()函数指定文件打开方式的用法...

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  5. python中list[1啥意思_详解Python中list[::-1]的几种用法

    本文主要介绍了Python中list[::-1]的几种用法,分享给大家,具体如下: s = "abcde" list的[]中有三个参数,用冒号分割 list[param1:para ...

  6. pythonnamedtuple定义类型_详解Python中namedtuple的使用

    namedtuple是Python中存储数据类型,比较常见的数据类型还有有list和tuple数据类型.相比于list,tuple中的元素不可修改,在映射中可以当键使用. namedtuple: na ...

  7. python停止线程池_详解python中Threadpool线程池任务终止示例代码

    需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它:偶数则等待对应时长并完成所有任务:0则是错误,但不需要终止任务,可以自定义一些处理. 关键点 定义func函数处理需求 callbac ...

  8. python join_详解Python中的join()函数的用法

    函数:string.join() Python中有join()和os.path.join()两个函数,具体作用如下: join(): 连接字符串数组.将字符串.元组.列表中的元素以指定的字符(分隔符) ...

  9. python中index函数_详解python中的index函数用法

    1.函数的创建 def fun(): #定义 print('hellow') #函数的执行代码 retrun 1 #返回值 fun() #执行函数 2.函数的参数 普通参数 :要按照顺序输入参数 de ...

最新文章

  1. linux卸载rpm包
  2. Redis数据库教程——系统详解学习Redis全过程
  3. javascript中的console.log有什么作用?
  4. ajax请求文件下载 php,使用Ajax请求下载文件
  5. Redis常用命令之操作Hash类型
  6. ThinkPHP模型连接数据库 查询 ajax
  7. 办公技巧:Word批量小技巧,大大提高工作效率
  8. [vue] 怎么捕获组件vue的错误信息?
  9. Android基础字符串String.md
  10. 选举学生会(洛谷P1271题题解,Java/C++语言描述)
  11. 混合类型数据格式化输入
  12. 迅速上手:使用taro构建微信小程序基础教程
  13. 【论文理解】Learning in the Frequency Domain
  14. C++根据.h文件批量生成需要的函数框架
  15. 通过标签向flash传递参数
  16. country-converter官方文档----机翻人工确认
  17. python 点分十进制IP地址转16进制字符串
  18. 联想研究院裁员---血淋漓的教训:公司不是家(老文)
  19. 做到这五点,才算是好用户体验
  20. android 7双排设置菜单,双排状态栏布局教程

热门文章

  1. 随机抽样java_实现随机抽样【随机数生成问题】
  2. linux下IPROTO_TCP,TCP/IP协议栈在Linux内核中的运行时序分析
  3. 数据列表的分页实现————分页敏捷开发
  4. matlab和vlfeat关联,VLFeat在matlab和vs中安装
  5. java开发中推荐的防御sql注入方法_不推荐的防御sql注入方式
  6. 个人对于MySQL的理解_MySQL锁的理解
  7. mysql 数据记录导出_mysql如何导出600万条记录的数据表?
  8. mysql 数据库设置mysql注入_MYSQL数据库浅析MySQL的注入安全问题
  9. php查找以xx结尾的的字符串单词,Javascript中查找不以XX字符结尾的单词示例代码_javascript技巧...
  10. 燃气灶电气线路图及原理_一位造价大神的电气工程造价知识整理笔记_深圳电气造价预算培训要多少钱...