调用生成器函数时,执行到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))