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的curses库使用教程
Apr 11 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
Django admin实现图书管理系统菜鸟级教程完整实例
Dec 12 Python
OpenCV-Python实现轮廓检测实例分析
Jan 05 Python
Python实现的将文件每一列写入列表功能示例【测试可用】
Mar 19 Python
Python实现网页截图(PyQT5)过程解析
Aug 12 Python
Python中sorted()排序与字母大小写的问题
Jan 14 Python
python GUI库图形界面开发之PyQt5信号与槽基本操作
Feb 25 Python
Jupyter加载文件的实现方法
Apr 14 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 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输出缓存(output_buffering)的深入理解
2013/06/13 PHP
php使用GeoIP库实例
2014/06/27 PHP
jquery maxlength使用说明
2011/09/09 Javascript
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
JavaScript包装对象使用介绍
2013/08/29 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
javascript实现的多个层切换效果通用函数实例
2015/07/06 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
网页中右键功能的实现方法之contextMenu的使用
2017/02/20 Javascript
详解js几个绕不开的事件兼容写法
2017/08/30 Javascript
基于Vue.js 2.0实现百度搜索框效果
2020/12/28 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
关于laydate.js加载laydate.css路径错误问题解决
2017/12/27 Javascript
js合并两个数组生成合并后的key:value数组
2018/05/09 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
bootstrap table实现合并单元格效果
2018/12/24 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
Vue实现星级评价效果实例详解
2019/12/30 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
python实现俄罗斯方块
2018/06/26 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
Python不同目录间进行模块调用的实现方法
2019/01/29 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
选择python进行数据分析的理由和优势
2019/06/25 Python
python tkinter canvas使用实例
2019/11/04 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
大学毕业生个人自荐信范文
2014/01/08 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
2014年基层党建工作总结
2014/11/11 职场文书
个性与发展自我评价
2015/03/06 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python