用户工具



带有yield的函数叫生成器函数(当然也有yield表达式)

调用生成器函数时,执行到yield语句时,yield生成一个值并返回给调用者,然后自己暂停执行。直到调用者调用next函数,生成器函数从上次暂停的地方继续执行。

def a():
    for i in range(3):
        x = yield i
        print "send: "+str(x)
        
b=a()
print type(b)  # 结果:<type 'generator'>
print next(b)  # 获取下一个值
结果:
0
print b.send(5)   #发送5给yield,最终由x接收到这个值。send函数也会触发next函数,导致yield返回下一个值
结果:
send: 5 
1                        
print next(b)  # 获取下一个值
结果:
send: None
2

生成器表达式

列表、字典解析类似,只是最外层的括号不停

( x for x in range(3))