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制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
Python实现单词翻译功能
Jun 06 Python
Python3之简单搭建自带服务器的实例讲解
Jun 04 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
python多线程与多进程及其区别详解
Aug 08 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
使用Python生成200个激活码的实现方法
Nov 22 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
django使用JWT保存用户登录信息
Apr 22 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
Jun 04 Python
Python socket如何解析HTTP请求内容
Feb 12 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
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
PHP加速 eAccelerator配置和使用指南
2009/06/05 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
使用PHP实现Mysql读写分离
2013/06/28 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
PHP面向对象程序设计OOP继承用法入门示例
2016/12/27 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
java和javascript获取word文档的书签位置对比
2014/06/19 Javascript
jQuery实现自动滚动到页面顶端的方法
2015/05/22 Javascript
javascript中$(function() {});写与不写有哪些区别
2015/08/10 Javascript
13个PHP函数超实用
2015/10/21 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
HTML5 Shiv完美解决IE(IE6/IE7/IE8)不兼容HTML5标签的方法
2015/11/25 Javascript
JS实现消息来时让网页标题闪动效果的方法
2016/04/20 Javascript
javascript基础知识
2016/06/07 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
jquery 仿锚点跳转到页面指定位置的实例
2017/02/14 Javascript
浅谈Vue数据绑定的原理
2018/01/08 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
Python 专题六 局部变量、全局变量global、导入模块变量
2017/03/20 Python
python networkx 根据图的权重画图实现
2019/07/10 Python
Python函数的迭代器与生成器的示例代码
2020/06/18 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
英国空调、除湿机和通风设备排名第一:Air Con Centre
2019/02/25 全球购物
信息技术专业个人自我评价
2013/12/11 职场文书
根叔历年演讲稿
2014/05/20 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
单位未婚证明范本
2014/11/25 职场文书
小学生禁毒教育心得体会
2016/01/15 职场文书
html原生table实现合并单元格以及合并表头的示例代码
2023/05/07 HTML / CSS