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新手实现2048小游戏
Mar 31 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
python docx 中文字体设置的操作方法
May 08 Python
python实现搜索文本文件内容脚本
Jun 22 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
python五子棋游戏的设计与实现
Jun 18 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
Java爬虫技术框架之Heritrix框架详解
Jul 22 Python
Pycharm常用快捷键总结及配置方法
Nov 14 Python
Pytorch实验常用代码段汇总
Nov 19 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
Python3+Django get/post请求实现教程详解
Feb 16 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创建多级目录代码
2008/06/05 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
php 记录进行累加并显示总时长为秒的结果
2011/11/04 PHP
Zend studio文件注释模板设置方法
2013/09/29 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
php中strtotime函数性能分析
2016/11/20 PHP
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
关于document.cookie的使用javascript
2010/10/29 Javascript
获取内联和链接中的样式(js代码)
2013/04/11 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
jquery实现的缩略图预览滑块实例
2015/06/25 Javascript
使用Browserify配合jQuery进行编程的超级指南
2015/07/28 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
jQuery插件HighCharts绘制2D圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
jQuery HTML css()方法与css类实例详解
2020/05/20 jQuery
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
跟老齐学Python之大话题小函数(2)
2014/10/10 Python
python求最大连续子数组的和
2018/07/07 Python
Django中Middleware中的函数详解
2019/07/18 Python
Keras实现支持masking的Flatten层代码
2020/06/16 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
中餐厅主管的职责范文
2014/02/04 职场文书
我们的节日清明节活动方案
2014/03/05 职场文书
2014年综合治理工作总结
2014/11/20 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
PHP中strval()函数实例用法
2021/06/07 PHP
Python 实现Mac 屏幕截图详解
2021/10/05 Python
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android