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实现控制台进度条功能
Jan 04 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
Aug 20 Python
django中的图片验证码功能
Sep 18 Python
Django 后台带有字典的列表数据与页面js交互实例
Apr 03 Python
Python实现汇率转换操作
May 03 Python
学python最电脑配置有要求么
Jul 05 Python
Python引入多个模块及包的概念过程解析
Sep 21 Python
Python 使用office365邮箱的示例
Oct 29 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
python通过opencv调用摄像头操作实例分析
Jun 07 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
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
2014过年倒计时示例
2014/01/31 PHP
php+mysql实现无限分类实例详解
2015/01/15 PHP
PHP实现导出带样式的Excel
2016/08/28 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
YII框架常用技巧总结
2019/04/27 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
Laravel 实现关系模型取出需要的字段
2019/10/10 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
express默认日志组件morgan的方法
2018/04/05 Javascript
Vue实战教程之仿肯德基宅急送App
2019/07/19 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
在Vue中使用Echarts实例图的方法实例
2020/10/10 Javascript
vue实现轮播图帧率播放
2021/01/26 Vue.js
Python复制目录结构脚本代码分享
2015/03/06 Python
python实现计算倒数的方法
2015/07/11 Python
Python进阶之尾递归的用法实例
2018/01/31 Python
pyqt5实现登录界面的模板
2020/05/30 Python
python3实现弹弹球小游戏
2019/11/25 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
css3 给背景设置渐变色的方法
2019/09/12 HTML / CSS
工程师岗位职责
2013/11/08 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
食品销售计划书
2014/04/26 职场文书
春季防火方案
2014/05/10 职场文书
社会公德演讲稿
2014/05/20 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
领导干部失职检讨书
2015/05/05 职场文书
大学生,三分钟即兴演讲稿
2019/07/22 职场文书
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis