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实现查找系统盘中需要找的字符
Jul 14 Python
在Django框架中编写Context处理器的方法
Jul 20 Python
python黑魔法之编码转换
Jan 25 Python
Python实现简单的语音识别系统
Dec 13 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
python 列表,数组和矩阵sum的用法及区别介绍
Jun 28 Python
python: 自动安装缺失库文件的方法
Oct 22 Python
python将视频转换为全字符视频
Apr 26 Python
在Python中获取操作系统的进程信息
Aug 27 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
Feb 11 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
Oct 21 Python
Python常用断言函数实例汇总
Nov 30 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 中的输出缓冲
2006/12/21 PHP
PHP 绘制网站登录首页图片验证码
2016/04/12 PHP
用javascript实现点击链接弹出"图片另存为"而不是直接打开
2007/08/15 Javascript
让网页跳转到指定位置的jquery代码非书签
2013/09/06 Javascript
用JS做的简单的可折叠的两级树形菜单
2013/09/21 Javascript
js生成随机数之random函数随机示例
2013/12/20 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
JS判断输入字符串长度实例代码(汉字算两个字符,字母数字算一个)
2016/08/02 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
浅谈Vue2.0中v-for迭代语法的变化(key、index)
2018/03/06 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
Vue如何获取数据列表展示
2019/12/11 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
python3实现TCP协议的简单服务器和客户端案例(分享)
2017/06/14 Python
Python数据分析之双色球统计单个红和蓝球哪个比例高的方法
2018/02/03 Python
解决已经安装requests,却依然提示No module named requests问题
2018/05/18 Python
python斐波那契数列的计算方法
2018/09/27 Python
python实现简易动态时钟
2018/11/19 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
Python 定义只读属性的实现方式
2020/03/05 Python
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
2015年端午节活动方案
2015/05/05 职场文书
婚庆主持词大全
2015/06/30 职场文书
军训后的感想
2015/08/07 职场文书
读《教育心理学》心得体会
2016/01/22 职场文书
Nginx流量拷贝ngx_http_mirror_module模块使用方法详解
2022/04/07 Servers
Android开发之底部导航栏的快速实现
2022/04/28 Java/Android
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android