Well put. Got it. Thanks Kent tj * Kent Johnson <[EMAIL PROTECTED]> [051113 14:44]: > Tim Johnson wrote: > > * Liam Clarke-Hutchinson <[EMAIL PROTECTED]> [051113 12:41]: > > > >>Someone correct me if I'm wrong, but I believe there is no specific iterator > >>object, but rather objects that have a method for __iter___... > > > > > > Some light is slowly dawning here (I think) .... from > > http://docs.python.org/ref/yield.html > > > > It appears that a generator, is an object, but > > not derived from a class, but from a generator function, > > using yield. > > I would say it is an object of a built-in class created by calling a > generator function, which is a function that uses yield. > > You can create your own iterators by defining a class that defines the > special methods __iter__() and next(). __iter__ just returs self, and next() > returns the next item in the iteration or raises StopIteration. See > http://docs.python.org/lib/typeiter.html > > Generators provide a convenient short-cut for creating many kinds of > iterators because generator state is maintained implicitly. For example, a > class for iterators that count from 1 to 10 might look like this: > > class counter: > def __init__(self): > self.count = 0 > def __iter__(self): > return self > def next(self): > if self.count < 10: > self.count += 1 > return self.count > raise StopIteration > > The equivalent generator function could be > > def counter(): > for count in range(1, 11): > yield count > > or, maybe a fairer comparison would be > > def counter(): > count = 0 > if count < 10: > count += 1 > yield count > > which is still much shorter and easier to understand than the class version. > Usage of all three is identical: > > for i in counter(): > print i > > Kent > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor
-- Tim Johnson <[EMAIL PROTECTED]> http://www.alaska-internet-solutions.com _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor