On Thu, 14 Oct 2010 14:43:29 -0400, Albert Hopkins wrote:
> There may be times, however, that a generator may "know" that it > doesn't/isn't/won't generate any values, and so you may be able to > override boolean evaluation. Consider this example: [snip example] This is a good example, but it's not a generator, it's an iterator :) The two are similar in that they both produce values lazily, as required, but generators are a special case of iterators: generators are a special form of the function syntax which returns a lightweight and simple iterator. Iterators are more general. They're an interface rather than a type, so any class you build which matches the iterator protocol is an iterator, but only a function with a yield is a generator. Other than this nit-pic, your idea of making a custom iterator with a __nonzero__ method is an excellent idea. -- Steven -- http://mail.python.org/mailman/listinfo/python-list