Monday, September 24, 2012

python what are generators and iterators?


python what are generators and iterators?

http://stackoverflow.com/questions/2776829/difference-between-python-generators-vs-iterators



iterator is a more general concept: any object whose class has a next method (__next__ in Python 3) and an __iter__ method that does return self.
Every generator is an iterator, but not vice versa. A generator is built by calling a function that has one or more yield expressions (yield statements, in Python 2.5 and earlier), and is an object that meets the previous paragraph's definition of an iterator.








For example, a generator such as:
def squares(start, stop):
    for i in xrange(start, stop):
        yield i * i
or the equivalent generator expression (genexp)
(i*i for i in xrange(start, stop))










would take more code to build as a custom iterator:
class Squares(object):
    def __init__(self, start, stop):
       self.start = start
       self.stop = stop
    def __iter__(self): return self
    def next(self):
       if self.start >= self.stop:
           raise StopIteration
       current = self.start * self.start
       self.start += 1
       return current





No comments:

Post a Comment