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脚本实时处理log文件的方法
Nov 21 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
Python实现购物车购物小程序
Apr 18 Python
提升Python效率之使用循环机制代替递归函数
Jul 23 Python
Django 重写用户模型的实现
Jul 29 Python
python rsa实现数据加密和解密、签名加密和验签功能
Sep 18 Python
python的Jenkins接口调用方式
May 12 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
Python 解决空列表.append() 输出为None的问题
May 23 Python
Python还能这么玩之用Python做个小游戏的外挂
Jun 04 Python
Python合并多张图片成PDF
Jun 09 Python
python的netCDF4批量处理NC格式文件的操作方法
Mar 21 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 事务处理数据实现代码
2010/05/13 PHP
解析阿里云ubuntu12.04环境下配置Apache+PHP+PHPmyadmin+MYsql
2013/06/26 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php中addslashes函数与sql防注入
2014/11/17 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
8个PHP数组面试题
2015/06/23 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
prototype 1.5相关知识及他人笔记
2006/12/16 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
JS 中document.URL 和 windows.location.href 的区别
2009/11/11 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
JQuery each()嵌套使用小结
2014/04/18 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
2017/02/10 Javascript
详谈Angular路由与Nodejs路由的区别
2017/03/05 NodeJs
JavaScript实现简单精致的图片左右无缝滚动效果
2017/03/16 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
[10:21]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster 选手采访
2021/03/11 DOTA
用Python制作简单的朴素基数估计器的教程
2015/04/01 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
python tkinter canvas 显示图片的示例
2019/06/13 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
css3个性化字体_动力节点Java学院整理
2017/07/12 HTML / CSS
Dr. Martens马汀博士澳大利亚官网:马丁靴鼻祖
2019/07/02 全球购物
咨询公司各岗位职责
2013/12/02 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
小学四年级学生评语
2014/12/26 职场文书
2015年外贸业务员工作总结范文
2015/05/23 职场文书
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis