码迷,mamicode.com
首页 > 编程语言 > 详细

python生成器

时间:2015-03-11 17:10:46      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:python   yield   生成器   

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

简单实例

def gen():
    yield 1
    yield 2
    yield 3

f = gen()
print f.next()
print f.next()
print f.next()

输出结果

1
2
3

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

加强的生成器

在 python2.5 中,一些加强特性加入到生成器中,所以除了 next()来获得下个生成的值,用户
可以将值回送给生成器[send()],在生成器中抛出异常,以及要求生成器退出[close()]

def gen(x):
    count = x
    while True:
        val = (yield count) 
        if val is not None:
            count = val
        else:
            count += 1

f = gen(5)
print f.next()
print f.next()
print f.next()
print ‘====================‘
print f.send(9)#发送数字9给生成器
print f.next()
print f.next()

输出

5
6
7
====================
9
10
11

python生成器

标签:python   yield   生成器   

原文地址:http://blog.csdn.net/csujiangyu/article/details/44201403

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!