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 21 Python
Python的Django框架使用入门指引
Apr 15 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
Feb 02 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
Mar 23 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
详解python深浅拷贝区别
Jun 24 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
Jun 13 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
提问的智慧
2006/10/09 PHP
CMSPRESS 10行代码搞定 PHP无限级分类2
2018/03/30 PHP
详解laravel安装使用Passport(Api认证)
2018/07/27 PHP
javascript 写类方式之三
2009/07/05 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
javascript客户端解决方案 缓存提供程序
2010/07/14 Javascript
node.js中的fs.lchmodSync方法使用说明
2014/12/16 Javascript
javascript学习总结之js使用技巧
2015/09/02 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
原生JS实现图片懒加载(lazyload)实例
2017/06/13 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
javascript浏览器用户代理检测脚本实现方法
2017/10/27 Javascript
npm 语义版本控制详解
2019/09/10 Javascript
[02:20]DOTA2英雄基础教程 黑暗贤者
2013/12/19 DOTA
[54:08]LGD女子刀塔学院 DOTA2炼金术士教学
2014/01/09 DOTA
破解安装Pycharm的方法
2018/10/19 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
用HTML5的canvas实现一个炫酷时钟效果
2016/05/20 HTML / CSS
欧洲最大的笔和书写专家:The Pen Shop
2017/03/19 全球购物
Zadig&Voltaire官网:法国时装品牌
2018/01/05 全球购物
Stella McCartney官网:成衣、包袋、香水、内衣、童装及Adidas系列
2018/12/20 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
技校生自我鉴定范文
2013/09/26 职场文书
幼儿园开学家长寄语
2014/01/19 职场文书
冰淇淋开店创业计划书
2014/02/01 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
班级口号大全
2014/06/09 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
幼儿园小班工作总结2015
2015/04/25 职场文书
公司承诺书格式范文
2015/04/28 职场文书
Django路由层如何获取正确的url
2021/07/15 Python
Redis的字符串是如何实现的
2021/10/24 Redis