Josh Dukes wrote:


I was actually aware of that (thank you, though, for trying to help).
What I was not clear on was if the boolean evaluation is a method of an
object that can be modified via operatior overloading (in the same way
+ is actually .__add__()) or not. Clearly __nonzero__ is the operator I
was curious about. Thanks for that info.

.__bool__ in 3.0.


The thing I don't understand is why a generator that has no iterable
values is different from an empty list. Why shouldn't bool ==
has_value?? Technically a list, a tuple, and a string are also objects
but if they lack values they're evaluated as False. It seems to me that
a generator is an object that intends to replace lists where lazy
evaluation would be more efficent. Here is one place where that's
definitely true.

Generator functions are abbreviated iterator classes. If you want iterators with more functionality, write an iterator class. In particular, you can add a .__bool__ method for empty or not or even a .__len__ method if you can accurately calculate the number of items remaining.

The main reason I'm interested in this is that it improves performance
immensely over boolean evaluation of large lists (as the attached code
shows). It seems to me if I could use find a good use for it in my
experimentation that someone else might also want to do the same thing
in real-world code.

Terry Jan Reedy

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to