生成器是一个创建迭代器的简单而有力的工具。它们书面写时就像规范的函数,但是用yield语句在任何时候都可以返回数据。每次在它上调用next()方法,生成器继续回到一起它离开的位置。(它记录所有数据值以及最后执行的语句)。下面自己就是展示生成器如何方便创建:
用生成器可以做任何于底层迭代器相关的事情,正如前面章节中描述的。让生成器更加紧凑的办法就是自动创建的_iter_()和_next_()方法。
生成器其他重要的特性就是在调用过程中局部变量和执行状态可以自动的保存。这让函数更加容易编写。也比通过调用实例变量像self.index和self.data更加清楚。
除了自动创建方法和保存程序状态之外,当生成器终止后,它们自动抛出stopIteration异常。总的来说,这些特性都让创建迭代器更加有效率简单。
有些简单的生成器可以使用类似列表推导式的符号简单编码为表达式,但无序带有中括号。 这种表达式是专门为某种场景而设计的,在那里,生成器被一个封闭函数所使用。生成器表达式比完成生成器定义更加简单但是缺乏通用性。而且比等价的列表表达式更容易记住。
Python3.2官方文档翻译--生成器以及生成器表达式,布布扣,bubuko.com
原文地址:http://blog.csdn.net/sxb0841901116/article/details/25347711