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下MySQLdb用法实例分析
Jun 08 Python
python中import reload __import__的区别详解
Oct 16 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
Python编程深度学习计算库之numpy
Dec 28 Python
python实现批量nii文件转换为png图像
Jul 18 Python
Python基础之变量基本用法与进阶详解
Jan 03 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Python实现汇率转换操作
May 03 Python
Python中flatten( ),matrix.A用法说明
Jul 05 Python
Python使用windows设置定时执行脚本
Nov 12 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 Python
基于PyQT5制作一个桌面摸鱼工具
Feb 15 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 正则学习实例
2008/07/30 PHP
深入eAccelerator与memcached的区别详解
2013/06/06 PHP
php实现图片局部打马赛克的方法
2015/02/11 PHP
php 在线导入mysql大数据程序
2015/06/11 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
php+html5+ajax实现上传图片的方法
2016/05/14 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
jquery动态更换设置背景图的方法
2014/03/25 Javascript
javascript设计模式之解释器模式详解
2014/06/05 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
Node.js 8 中的重要新特性
2017/06/28 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
浅谈vuejs实现数据驱动视图原理
2018/02/23 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
python读写Excel表格的实例代码(简单实用)
2019/12/19 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
详解Python yaml模块
2020/09/23 Python
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
党委班子剖析材料
2014/08/21 职场文书
2015年行政人事部工作总结
2015/05/13 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android
ubuntu20.04虚拟机无法上网的问题及解决
2022/12/24 Servers