python中Genarator函数用法分析


Posted in Python onApril 08, 2015

本文实例讲述了python中Genarator函数用法。分享给大家供大家参考。具体如下:

Generator函数的定义与普通函数的定义没有什么区别,只是在函数体内使用yield生成数据项即可。Generator函数可以被for循环遍历,而且可以通过next()方法获得yield生成的数据项。

def func(n): 
  for i in range(n):
    yield i 
for i in func(3):
  print i 
r=func(3) 
print r.next() 
print r.next() 
print r.next() 
print r.next()

运行结果如下:

0
1
2
0
1
2
Traceback (most recent call last):
 File "generator.py", line 10, in <module>
  print r.next()
StopIteration

yield保留字与return 语句的返回值和执行原理都不相同。yield生成值并不会中止程序的执行,返回值后程序继续往后执行。return 返回值后,程序将中止执行。

Generator函数一次只返回一个数据项,占用更少的内存。每次生成数据都要记录当前的状态,便于下一次生成数据。

当程序需要较高的性能或一次只需要一个值进行处理时,使用generator函数。当需要获取一次性一组元素的值时,使用序列。

函数里只要有了yield,这个函数就会被编译成一个generator 函数。generator函数object支持python iterator protocol。 每次调用这个对象的next,generator函数就执行到yield,获取到yield生成的值。如果函数返回,就抛出一个异常。这里有个概念就是generator 函数使用yield生成一个值,而不是返回一个值。生成之后函数还没结束,返回了函数就结束了。

>>> x = gensquares(5)
>>> print x
<generator object at 0x00B72D78>
>>> print x.next()
0
>>> print x.next()
1
>>> print x.next()
4
>>> print x.next()
9
>>> print x.next()
16
>>> print x.next()
Traceback (most recent call last):
 File "<stdin>", line 1, in ?
StopIteration
>>>

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

Python 相关文章推荐
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
解析Python中的异常处理
Apr 28 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
Python实现的计数排序算法示例
Nov 29 Python
python将文本分每两行一组并保存到文件
Mar 19 Python
python中datetime模块中strftime/strptime函数的使用
Jul 03 Python
python使用pip安装模块出现ReadTimeoutError: HTTPSConnectionPool的解决方法
Oct 04 Python
Python切图九宫格的实现方法
Oct 10 Python
Python 字典中的所有方法及用法
Jun 10 Python
python实现快速文件格式批量转换的方法
Oct 16 Python
Python如何把不同类型数据的json序列化
Apr 30 Python
Python趣味挑战之用pygame实现简单的金币旋转效果
May 31 Python
探索Python3.4中新引入的asyncio模块
Apr 08 #Python
Windows下用py2exe将Python程序打包成exe程序的教程
Apr 08 #Python
Python bsddb模块操作Berkeley DB数据库介绍
Apr 08 #Python
Python使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 #Python
在Python中使用M2Crypto模块实现AES加密的教程
Apr 08 #Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
Apr 08 #Python
Python打印scrapy蜘蛛抓取树结构的方法
Apr 08 #Python
You might like
PHP模板引擎Smarty中的保留变量用法分析
2016/04/11 PHP
PHP 匿名函数与注意事项详细介绍
2016/11/26 PHP
Yii2 中实现单点登录的方法
2018/03/09 PHP
PHP实现动态删除XML数据的方法示例
2018/03/30 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
Javascript中的五种数据类型详解
2014/12/26 Javascript
AngularJS压缩JS技巧分析
2016/11/08 Javascript
利用Vue v-model实现一个自定义的表单组件
2017/04/27 Javascript
angular4中引入echarts的方法示例
2019/01/29 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
详解React 元素渲染
2020/07/07 Javascript
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
Python面向对象编程基础解析(二)
2017/10/26 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Pyqt QImage 与 np array 转换方法
2019/06/27 Python
pygame实现打字游戏
2021/02/19 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
Staples美国官方网站:办公用品一站式采购
2016/07/28 全球购物
英国拖鞋购买网站:Bedroom Athletics
2020/02/28 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
策划主管的工作职责
2013/11/24 职场文书
结婚邀请函范文
2014/01/14 职场文书
学校门卫管理制度
2014/01/30 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
影子教师研修方案
2014/06/14 职场文书
地球上的星星观后感
2015/06/02 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
导游词之青城山景区
2019/09/27 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
Python 恐龙跑跑小游戏实现流程
2022/02/15 Python
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers
Java完整实现记事本代码
2022/06/16 Java/Android