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输出当前目录下index.html文件路径的方法
Apr 28 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
Python 类的继承实例详解
Mar 25 Python
Python遍历numpy数组的实例
Apr 04 Python
在Django中输出matplotlib生成的图片方法
May 24 Python
对python中词典的values值的修改或新增KEY详解
Jan 20 Python
详解Python用户登录接口的方法
Apr 17 Python
Python进程间通信Queue消息队列用法分析
May 22 Python
Python实现FM算法解析
Jun 18 Python
详解Python中的各种转义符\n\r\t
Jul 10 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 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的简易冒泡法代码分享
2012/08/28 PHP
php curl_init函数用法
2014/01/31 PHP
PHP封装分页函数实现文本分页和数字分页
2014/10/23 PHP
php生成rss类用法实例
2015/04/14 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
javascript十个最常用的自定义函数(中文版)
2009/09/07 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
2020/07/17 Javascript
design vue 表格开启列排序的操作
2020/10/28 Javascript
videocapture库制作python视频高速传输程序
2013/12/23 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
python中的变量如何开辟内存
2018/06/26 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
Java多线程实现四种方式原理详解
2020/06/02 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
python request 模块详细介绍
2020/11/10 Python
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
青春励志演讲稿
2014/04/29 职场文书
2015年六一儿童节演讲稿
2015/03/19 职场文书
MongoDB使用profile分析慢查询的步骤
2021/04/30 MongoDB
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL