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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
线程和进程的区别及Python代码实例
Feb 04 Python
Python编写屏幕截图程序方法
Feb 18 Python
详解Python的迭代器、生成器以及相关的itertools包
Apr 02 Python
Python编程中的for循环语句学习教程
Oct 14 Python
Python+OpenCV人脸检测原理及示例详解
Oct 19 Python
Python实现翻转数组功能示例
Jan 12 Python
Python进阶之尾递归的用法实例
Jan 31 Python
Python对多属性的重复数据去重实例
Apr 18 Python
django解决订单并发问题【推荐】
Jul 31 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
详解Anaconda安装tensorflow报错问题解决方法
Nov 01 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
星际争霸兵种名称对照表
2020/03/04 星际争霸
php绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
php实现的简易扫雷游戏实例
2015/07/09 PHP
php libevent 功能与使用方法详解
2020/03/04 PHP
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
深入分析原生JavaScript事件
2014/12/29 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
Javascript中实现String.startsWith和endsWith方法
2015/06/10 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
常用js,css文件统一加载方法(推荐) 并在加载之后调用回调函数
2016/09/23 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
前端MVVM框架解析之双向绑定
2018/01/24 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
2020/08/10 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
[01:08:33]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
好用的Python编辑器WingIDE的使用经验总结
2016/08/31 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
Python寻找两个有序数组的中位数实例详解
2018/12/05 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
pycharm new project变成灰色的解决方法
2019/06/27 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
字符串str除首尾字符外的其他字符按升序排列
2013/03/08 面试题
监理资料员岗位职责
2014/01/03 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
田径运动会通讯稿
2015/07/18 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
Python+腾讯云服务器实现每日自动健康打卡
2021/12/06 Python