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中Random和Math模块学习笔记
May 18 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
初探TensorFLow从文件读取图片的四种方式
Feb 06 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
详解利用python+opencv识别图片中的圆形(霍夫变换)
Jul 01 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
pycharm实现在子类中添加一个父类没有的属性
Mar 12 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
opencv检测动态物体的实现
Jul 21 Python
Django对接elasticsearch实现全文检索的示例代码
Aug 02 Python
Python+Selenium实现读取网易邮箱验证码
Mar 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
PHP脚本数据库功能详解(上)
2006/10/09 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
php中动态调用函数的方法
2015/03/16 PHP
PHP判断一个数组是另一个数组子集的方法详解
2017/07/31 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
浅析return false的正确使用
2013/11/04 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
jQuery的层级查找方式分析
2016/06/16 Javascript
从零开始学习Node.js系列教程之SQLite3和MongoDB用法分析
2017/04/13 Javascript
Vue非父子组件通信详解
2017/06/12 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
3种vue路由传参的基本模式
2018/02/22 Javascript
JavaScript复制变量三种方法实例详解
2020/01/09 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
[01:07:47]Secret vs Optic Supermajor 胜者组 BO3 第一场 6.4
2018/06/05 DOTA
Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
2015/05/16 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
2016/04/24 Python
使用python存储网页上的图片实例
2018/05/22 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
Python利用scapy实现ARP欺骗的方法
2019/07/23 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
python对数组进行排序,并输出排序后对应的索引值方式
2020/02/28 Python
关于python中remove的一些坑小结
2021/01/04 Python
湖南卫视在线视频媒体平台:芒果TV
2019/10/30 全球购物
单位办理社保介绍信
2014/01/10 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
销售员态度差检讨书
2014/10/26 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
HTML中的表格元素介绍
2022/02/28 HTML / CSS
vue-cil之axios的二次封装与proxy反向代理使用说明
2022/04/07 Vue.js