博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python生成器
阅读量:4677 次
发布时间:2019-06-09

本文共 760 字,大约阅读时间需要 2 分钟。

什么是 python 式的生成器?从句法上讲,生成器是一个带 yield 语句的函数。一个函数或者子

程序只返回一次,但一个生成器能暂停执行并返回一个中间的结果----那就是 yield 语句的功能,返
回一个值给调用者并暂停执行。当生成器的 next()方法被调用的时候,它会准确地从离开地方继续
(当它返回[一个值以及]控制给调用者时)

简单实例

 
  1. def gen():
  2. yield 1
  3. yield 2
  4. yield 3
  5. f = gen()
  6. print f.next()
  7. print f.next()
  8. print f.next()

输出结果

 
  1. 1
  2. 2
  3. 3

从结果我们可以看出每次调用函数对象的next方法时,总是从上次离开的地方继续执行的.

加强的生成器

在 python2.5 中,一些加强特性加入到生成器中,所以除了 next()来获得下个生成的值,用户

可以将值回送给生成器[send()],在生成器中抛出异常,以及要求生成器退出[close()]

 
  1. def gen(x):
  2. count = x
  3. while True:
  4. val = (yield count)
  5. if val is not None:
  6. count = val
  7. else:
  8. count += 1
  9. f = gen(5)
  10. print f.next()
  11. print f.next()
  12. print f.next()
  13. print '===================='
  14. print f.send(9)#发送数字9给生成器
  15. print f.next()
  16. print f.next()

输出

 
  1. 5
  2. 6
  3. 7
  4. ====================
  5. 9
  6. 10
  7. 11

转载于:https://www.cnblogs.com/csu_xajy/p/4342729.html

你可能感兴趣的文章
yii2框架随笔19
查看>>
为什么要使用getter/setter
查看>>
使用7zip把jre集成到绿色运行程序内
查看>>
07_Python的控制判断循环语句1(if判断for循环)_Python编程之路
查看>>
15_Python模块化编程_Python编程之路
查看>>
【leetcode 简单】第十七题 x 的平方根
查看>>
cocos2d-x 3.1 编译脚本android-build.py
查看>>
Java web servers 间是如何实现 session 同步的
查看>>
HDU 6319(单调队列)
查看>>
Codeforces 1041C(贪心+set)
查看>>
Android 常用数据操作封装类案例
查看>>
php方法 隐藏手机号中间四位
查看>>
程序员技术练级攻略
查看>>
Binary Agents
查看>>
需求获取常见的方法是进行客户访谈,结合你的实践谈谈会遇到什么问题,你是怎么解决的?...
查看>>
django之同源策略
查看>>
org.springframework.beans.factory.BeanCreationException...
查看>>
大量文本框非空判断,如何提高灵活性?
查看>>
作用域模型分析
查看>>
js动态创建元素和删除
查看>>