生成器是是一个带有yield语句的函数,一个函数或者子程序只返回一次,但一个生成器能暂停执行并返回一个中间的结果---那就是yield语句的功能,返回一个值给调用者并暂停执行。当生成器的next方法被调用的时候,它会准确地从离开地方继续。
from random import randintdef randGen(aList): while len(aList) > 0: yield aList.pop(randint(0, len(aList)))for item in randGen(['rock', 'paper', 'scissors']): print item
Python 2.5中,一些加强特性加入到生成器中,除了next()来获得下个生成的值,用户可以将值送给生成器[send()],在生成器中抛出异常,以及要求生成器退出[close()]。