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 3中print函数的使用方法总结
Aug 08 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
Jan 09 Python
详解Python使用tensorflow入门指南
Feb 09 Python
Python检测网络延迟的代码
May 15 Python
python画折线图的程序
Jul 26 Python
Python集中化管理平台Ansible介绍与YAML简介
Jun 12 Python
使用python制作一个解压缩软件
Nov 13 Python
django框架单表操作之增删改实例分析
Dec 16 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
python 用递归实现通用爬虫解析器
Apr 16 Python
如何解决.cuda()加载用时很长的问题
May 24 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 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实现的功能是显示8条基色色带
2006/10/09 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
PHP遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
基于laravel-admin 后台 列表标签背景的使用方法
2019/10/03 PHP
js字符编码函数区别分析
2008/06/05 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
javascript学习笔记(七)Ajax和Http状态码
2014/10/08 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
2015/11/06 Javascript
DWR中各种java方法的调用
2016/05/04 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
weUI应用之JS常用信息提示弹层的封装
2016/11/21 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
jQuery插件FusionCharts绘制的3D环饼图效果示例【附demo源码】
2017/04/02 jQuery
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
Angular directive递归实现目录树结构代码实例
2017/05/05 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
vue权限问题的完美解决方案
2019/05/08 Javascript
Node.js API详解之 util模块用法实例分析
2020/05/09 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
python的一些加密方法及python 加密模块
2019/07/11 Python
HTML5 canvas 瀑布流文字效果的示例代码
2018/01/31 HTML / CSS
Java方面的关于数组和继承的笔面试题
2015/09/18 面试题
雪山饭庄的创业计划书范文
2014/01/18 职场文书
运动会800米加油稿
2014/02/22 职场文书
计算机网络专业自荐信
2014/07/04 职场文书
党员群众路线对照检查材料
2014/08/31 职场文书
2014年信访工作总结
2014/11/17 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
公历12个月名称的由来
2022/04/12 杂记