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实现多线程HTTP下载器示例
Feb 11 Python
Python编程对列表中字典元素进行排序的方法详解
May 26 Python
python多线程之事件Event的使用详解
Apr 27 Python
python 除法保留两位小数点的方法
Jul 16 Python
windows下 兼容Python2和Python3的解决方法
Dec 05 Python
Python 常用模块 re 使用方法详解
Jun 06 Python
python实现Dijkstra算法的最短路径问题
Jun 21 Python
python django 原生sql 获取数据的例子
Aug 14 Python
PYTHON实现SIGN签名的过程解析
Oct 28 Python
pytorch forward两个参数实例
Jan 17 Python
Python代码一键转Jar包及Java调用Python新姿势
Mar 10 Python
使用scrapy实现增量式爬取方式
Jun 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
CI框架中zip类应用示例
2014/06/17 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
PHP 8新特性简介
2020/08/18 PHP
在网页中屏蔽快捷键
2006/09/06 Javascript
window.location和document.location的区别分析
2008/12/23 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
js时间查询插件使用详解
2017/04/07 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
[31:00]2014 DOTA2华西杯精英邀请赛5 24 NewBee VS iG
2014/05/25 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
django自带的server 让外网主机访问方法
2018/05/14 Python
简单了解django缓存方式及配置
2019/07/19 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
2020/08/07 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
来自美国主售篮球鞋的零售商店:KICKSUSA
2017/11/28 全球购物
西班牙语在线票务市场:SuperBoletería
2019/06/10 全球购物
电子商务专业学生的学习自我评价
2013/10/27 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
地震捐款简报
2015/07/21 职场文书
公司劳动纪律管理制度
2015/08/04 职场文书
汽车销售合同文本
2019/08/08 职场文书