python中的yield使用方法


Posted in Python onFebruary 11, 2014

今天在看其他同事的代码时,发现一个没使用过的python关键字 :yield

      先问了一下同事,听他说了几句,有个模糊的印象,仅仅是模糊而已。于是自己去搜搜资料看。看了半天,逐渐清晰了。不过在工作机制以及应用上还是有点迷茫。嗯,先把初始接触的印象记下来吧。

      yield 简单说来就是一个生成器(Generator)。生成器是这样一个函数:它记住上一次返回时在函数体中的位置。对生成器函数的第二次(或第 n 次)调用跳转至该函数中间,而上次调用的所有局部变量都保持不变。

      你看到某个函数包含了yield,这意味着这个函数已经是一个Generator,它的执行会和其他普通的函数有很多不同。

      可能看到这里还是迷迷糊糊,先看一些实例吧:

      def test( data_list ):
            for x in data_list:
                 yield x + 1
      data = [1,2,3,4]
      for y in test( data ):
           print y

      则输出结果为:

      2       3       4        5

      另外一种用法:

      handle = test(data)

      handle.next()     输出  2

      handle.next()     输出  3

      handle.next()     输出  4

      handle.next()     输出  5

      handle.next()     则会报错

      这只是 yield 的初步印象,接下来慢慢摸索吧。

Python 相关文章推荐
python发布模块的步骤分享
Feb 21 Python
python paramiko模块学习分享
Aug 23 Python
详细解读tornado协程(coroutine)原理
Jan 15 Python
Python request设置HTTPS代理代码解析
Feb 12 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
关于Python正则表达式 findall函数问题详解
Mar 22 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
python采集微信公众号文章
Dec 20 Python
Python实现直方图均衡基本原理解析
Aug 08 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
Django rest framework如何自定义用户表
Jun 09 Python
python重试装饰器示例
Feb 11 #Python
python网络爬虫采集联想词示例
Feb 11 #Python
python基础教程之实现石头剪刀布游戏示例
Feb 11 #Python
python使用递归解决全排列数字示例
Feb 11 #Python
python基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 #Python
python基础教程之python消息摘要算法使用示例
Feb 10 #Python
go和python调用其它程序并得到程序输出
Feb 10 #Python
You might like
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
AngularJS中的表单简单入门
2016/07/28 Javascript
类似于QQ的右滑删除效果的实现方法
2016/10/16 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
Vue实现选择城市功能
2017/05/27 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
JS实现按钮添加背景音乐示例代码
2017/10/17 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
Layui 数据表格批量删除和多条件搜索的实例
2019/09/04 Javascript
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
结合axios对项目中的api请求进行封装操作
2020/09/21 Javascript
[45:38]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第一局
2016/03/02 DOTA
Django实现组合搜索的方法示例
2018/01/23 Python
Python模块的加载讲解
2019/01/15 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
python binascii 进制转换实例
2019/06/12 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
门卫班长岗位职责
2013/12/15 职场文书
报到证丢失证明
2014/01/11 职场文书
元旦获奖感言
2014/03/08 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
小学国庆节活动总结
2015/03/23 职场文书
2015年高三班主任工作总结
2015/05/21 职场文书
Jupyter Notebook 如何修改字体和大小以及更改字体样式
2021/06/03 Python
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
MySQL库表太大怎么办? 数据库分库分表项目实践
2022/04/11 MySQL
详解Spring Bean的配置方式与实例化
2022/06/10 Java/Android