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编写分析Python程序性能的工具的教程
Apr 01 Python
python计算文本文件行数的方法
Jul 06 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
Python内存管理方式和垃圾回收算法解析
Nov 11 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
django表单实现下拉框的示例讲解
May 29 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
Python将列表数据写入文件(txt, csv,excel)
Apr 03 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
python爬虫selenium模块详解
Mar 30 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 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边学边教》(01.开篇――准备工作)
2006/12/13 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
php中的登陆login实例代码
2016/06/20 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
javascript简易画板开发
2020/04/12 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
深入理解JavaScript 参数按值传递
2017/05/24 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
layui实现数据分页功能
2019/07/27 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
urllib2自定义opener详解
2014/02/07 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
Python爬虫获取图片并下载保存至本地的实例
2018/06/01 Python
Django框架验证码用法实例分析
2019/05/10 Python
Python使用LDAP做用户认证的方法
2019/06/20 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
Python日志:自定义输出字段 json格式输出方式
2020/04/27 Python
python用Tkinter做自己的中文代码编辑器
2020/09/07 Python
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
心碎乌托邦的创业计划书范文
2013/12/26 职场文书
公证书标准格式
2014/04/10 职场文书
竞选团支书演讲稿
2014/04/28 职场文书
人事局接收函
2015/01/31 职场文书
我的生日感言
2015/08/03 职场文书
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android