---- ====== 带有yield的函数叫生成器函数(当然也有yield表达式) ====== 调用生成器函数时,执行到yield语句时,yield生成一个值并返回给调用者,然后自己暂停执行。直到调用者调用next函数,生成器函数从上次暂停的地方继续执行。 def a(): for i in range(3): x = yield i print "send: "+str(x) b=a() print type(b) # 结果: 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))