Python的生成器和迭代器之间的区别
迭代器和生成器有什么区别? 有关何时使用每种情况的一些示例会有所帮助。 #1楼 迭代器: 迭代器是使用 next() 方法获取序列的下一个值的对象。 发电机: 生成器是使用 yield 方法生成或生成值序列的函数。 生成器函数(如以下示例中的ex: foo() 函数)返回的生成器对象(如以下示例中的ex: f next() 上的每个 next() 方法调用,都会按顺序生成下一个值。 调用生成器函数时,它甚至不开始执行该函数就返回生成器对象。 首次调用 next() 方法时,该函数开始执行直到到达yield语句,该语句返回产生的值。 收益跟踪(即记住上一次执行)。 第二个 next() 调用从上一个值继续。 下面的示例演示了yield和生成器对象上的next方法的调用之间的相互作用。 >>> def foo(): ... print "begin" ... for i in range(3): ... print "before yield", i ... yield i ... print "after yield", i ... print "end" ... >>> f = foo() >>> f.next() begin before yield 0 # Control is in for loop 0 >>> f.next() after yield 0 before