Python yield生成器和return对比代码实例


Posted in Python onApril 20, 2020

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

生成器是特殊的迭代器

def gen_yield():
  for i in range(1,10):
    for j in range(1,10):
      yield i+j
      # return i+j

if __name__ == '__main__':
  aa = gen_yield()
  print(aa.__next__())
  print(aa.__next__())
  print(aa.__next__())
  print(aa.__next__())
  print(aa.__next__())
  print(aa.__next__())

yield和return都有返回值的作用,但不同的是,yield会记住当前迭代的位置,而return不会

如果还是不能很好的理解上面两者的区别,看如下代码

def test_yield():
  for i in [1,2,3]:
    yield i
def test_return():
  for i in [1,2,4]:
    return i
if __name__ == '__main__':
  test_yield_obj = test_yield()
  print('这里测试yield')
  print(test_yield_obj.__next__())  # 1
  print(test_yield_obj.__next__())  # 2
  print(test_yield_obj.__next__())  # 3

  print('这里是测试return')
  print(test_return())  # 1
  print(test_return())  # 1
  print(test_return())  # 1

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程项目四之新闻聚合
Apr 02 Python
python正向最大匹配分词和逆向最大匹配分词的实例
Nov 14 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
python打印异常信息的两种实现方式
Dec 24 Python
浅谈JupyterNotebook导出pdf解决中文的问题
Apr 22 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
Python colormap库的安装和使用详情
Oct 06 Python
Django windows使用Apache实现部署流程解析
Oct 12 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 Python
Python实战之实现简易的学生选课系统
May 25 Python
Python必备技巧之字符数据操作详解
Mar 23 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 Python
jupyter notebook tensorflow打印device信息实例
Apr 20 #Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
Apr 20 #Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
Apr 20 #Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
Apr 20 #Python
python argparse模块通过后台传递参数实例
Apr 20 #Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
Apr 20 #Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
Apr 20 #Python
You might like
PHP 程序授权验证开发思路
2009/07/09 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
单一index.php实现PHP任意层级文件夹遍历(Zjmainstay原创)
2012/07/31 PHP
PHP写的资源下载防盗链类分享
2014/05/12 PHP
php实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
BOOM vs RR BO5 第二场 2.14
2021/03/10 DOTA
通过Unicode转义序列来加密,按你说的可以算是混淆吧
2007/05/06 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
鼠标经过tr时,改变tr当前背景颜色
2014/01/13 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
jquery制作图片时钟特效
2020/03/30 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
jQuery动态生成不规则表格(前后端)
2017/02/21 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
vue.js指令v-for使用以及下标索引的获取
2019/01/31 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
2019/09/11 Javascript
Layui表格监听行单双击事件讲解
2019/11/14 Javascript
通过实例了解Nodejs模块系统及require机制
2020/07/16 NodeJs
vue axios封装httpjs,接口公用配置拦截操作
2020/08/11 Javascript
Swiper实现导航栏滚动效果
2020/10/16 Javascript
微信小程序绘制半圆(弧形)进度条
2020/11/18 Javascript
python win32 简单操作方法
2017/05/25 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
python根据list重命名文件夹里的所有文件实例
2018/10/25 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
使用Python合成图片的实现代码(图片添加个性化文本,图片上叠加其他图片)
2020/04/30 Python
毕业生个人求职的自我评价
2013/10/28 职场文书
员工评语大全
2014/01/19 职场文书
县政府办公室领导班子个人对照检查材料
2014/09/16 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
2014年协会工作总结
2014/11/22 职场文书