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的id()函数解密过程
Dec 25 Python
python中列表元素连接方法join用法实例
Apr 07 Python
Python语言实现机器学习的K-近邻算法
Jun 11 Python
python如何实现远程控制电脑(结合微信)
Dec 21 Python
python批量添加zabbix Screens的两个脚本分享
Jan 16 Python
python3使用requests模块爬取页面内容的实战演练
Sep 25 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
python实现归并排序算法
Nov 22 Python
python中必要的名词解释
Nov 20 Python
python二维键值数组生成转json的例子
Dec 06 Python
PyQt5实现画布小程序
May 30 Python
python编写一个会算账的脚本的示例代码
Jun 02 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实例分享之mysql数据备份
2014/05/19 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
火狐4、谷歌12不支持Jquery Validator的解决方法分享
2011/06/20 Javascript
不用构造函数(Constructor)new关键字也能实现JavaScript的面向对象
2013/01/11 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
javascript实现倒计时(精确到秒)
2015/06/26 Javascript
Centos6.8下Node.js安装教程
2017/05/12 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
2019/08/26 Javascript
JavaScript中变量提升机制示例详解
2019/12/27 Javascript
python2.7实现FTP文件下载功能
2018/04/15 Python
windows下python和pip安装教程
2018/05/25 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
在pycharm中实现删除bookmark
2020/02/14 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
2020/08/17 Python
Python hashlib模块的使用示例
2020/10/09 Python
CSS3为背景图设置遮罩并解决遮罩样式继承问题
2020/06/22 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
高中生毕业学习总结的自我评价
2013/11/14 职场文书
自荐书封面下载
2013/11/29 职场文书
幸福家庭事迹材料
2014/02/03 职场文书
大学生学习2014全国两会心得体会
2014/03/13 职场文书
大学生党员自我评价范文
2014/04/09 职场文书
优秀员工推荐信
2014/05/10 职场文书
卖车协议书范例
2014/09/16 职场文书
职称评定个人总结
2015/03/05 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android