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 相关文章推荐
linux系统使用python监测系统负载脚本分享
Jan 15 Python
python开发环境PyScripter中文乱码问题解决方案
Sep 11 Python
浅谈numpy数组中冒号和负号的含义
Apr 18 Python
python matlibplot绘制多条曲线图
Feb 19 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
python实现海螺图片的方法示例
May 12 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
python scipy卷积运算的实现方法
Sep 16 Python
Python爬虫使用代理IP的实现
Oct 27 Python
Django视图、传参和forms验证操作
Jul 15 Python
python数字图像处理之图像的批量处理
Jun 28 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
PHP应用JSON技巧讲解
2013/02/03 PHP
PHP可变函数的使用详解
2013/06/14 PHP
thinkPHP3.x常量整理(预定义常量/路径常量/系统常量)
2016/05/20 PHP
PHP 使用位运算实现四则运算的代码
2021/03/09 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
javascript 复杂的嵌套环境中输出单引号和双引号
2009/05/26 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
2012/03/13 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
jQuery事件用法实例汇总
2014/08/29 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
JS实现的数组全排列输出算法
2015/03/19 Javascript
如何用jQuery实现ASP.NET GridView折叠伸展效果
2015/09/26 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
JavaScript数组去重实现方法小结
2020/01/17 Javascript
[09:59]DOTA2-DPC中国联赛2月7日Recap集锦
2021/03/11 DOTA
Python程序设计入门(3)数组的使用
2014/06/16 Python
python中实现定制类的特殊方法总结
2014/09/28 Python
Python内存管理方式和垃圾回收算法解析
2017/11/11 Python
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
瑞士国际航空官网:SWISS
2016/07/21 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
自荐信需注意事项
2014/01/25 职场文书
参观接待方案
2014/03/17 职场文书
中秋节主持词
2014/04/02 职场文书
股东合作协议书
2014/04/14 职场文书
实习报告评语
2014/04/26 职场文书
设计师求职信
2014/07/01 职场文书
golang协程池模拟实现群发邮件功能
2021/05/02 Golang