python生成器generator用法实例分析


Posted in Python onJune 04, 2015

本文实例讲述了python生成器generator用法。分享给大家供大家参考。具体如下:

使用yield,可以让函数生成一个结果序列,而不仅仅是一个值

例如:

def countdown(n): 
  print "counting down" 
  while n>0: 
    yield n #生成一个n值 
    n -=1 
>>> c = countdown(5) 
>>> c.next() 
counting down 
5 
>>> c.next() 
4 
>>> c.next() 
3

next()调用生成器函数一直运行到下一条yield语句为止,此时next()将返回值传递给yield.而且函数将暂停中止执行。再次调用时next()时,函数将继续执行yield之后的语句。此过程持续执行到函数返回为止。

通常不会像上面那样手动调用next(), 而是使用for循环,例如:

>>> for i in countdown(5): 
...   print i 
...   
counting down 
5 
4 
3 
2 
1

next(), send()的返回值都是yield 后面的参数, send()跟next()的区别是send()是发送一个参数给(yield n)的表达式,作为其返回值给m, 而next()是发送一个None给(yield n)表达式, 这里需要区分的是,一个是调用next(),send()时候的返回值,一个是(yield n)的返回值,两者是不一样的.看输出结果可以区分。

def h(n): 
  while n>0: 
    m = (yield n) 
    print "m is "+str(m) 
    n-=1 
    print "n is "+str(n) 
>>> p= h(5) 
>>> p.next() 
5 
>>> p.next() 
m is None 
n is 4 
4 
>>> p.send("test") 
m is test 
n is 3 
3

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python中常用的各种数据库操作模块和连接实例
May 29 Python
Python脚本处理空格的方法
Aug 08 Python
python编写分类决策树的代码
Dec 21 Python
python如何通过twisted实现数据库异步插入
Mar 20 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
ubuntu17.4下为python和python3装上pip的方法
Jun 12 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
使用Django连接Mysql数据库步骤
Jan 15 Python
Python语言检测模块langid和langdetect的使用实例
Feb 19 Python
Python 文件数据读写的具体实现
Jan 24 Python
Python selenium爬虫实现定时任务过程解析
Jun 08 Python
解决Pytorch半精度浮点型网络训练的问题
May 24 Python
python函数装饰器用法实例详解
Jun 04 #Python
Python中函数的参数定义和可变参数用法实例分析
Jun 04 #Python
python类装饰器用法实例
Jun 04 #Python
python获得一个月有多少天的方法
Jun 04 #Python
Python中threading模块join函数用法实例分析
Jun 04 #Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 #Python
python创建进程fork用法
Jun 04 #Python
You might like
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
smarty高级特性之对象的使用方法
2015/12/25 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
bootstrap fileinput 上传插件的基础使用
2017/02/17 Javascript
react性能优化达到最大化的方法 immutable.js使用的必要性
2017/03/09 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
vue复合组件实现注册表单功能
2017/11/06 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
小程序怎样让wx.navigateBack更好用的方法实现
2019/11/01 Javascript
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
在Python中使用列表生成式的教程
2015/04/27 Python
python 编写简单网页服务器的实例
2018/06/01 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
Python实例方法、类方法、静态方法区别详解
2020/09/05 Python
Python在centos7.6上安装python3.9的详细教程(默认python版本为2.7.5)
2020/10/15 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
python中实现栈的三种方法
2020/12/19 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
酒店副总经理岗位职责范本
2014/02/04 职场文书
学习朴航瑛老师爱岗敬业先进事迹思想汇报
2014/09/17 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
环卫个人总结
2015/03/03 职场文书
2015年售后服务工作总结
2015/04/25 职场文书
关于倡议书的范文
2015/04/29 职场文书
python多线程方法详解
2022/01/18 Python