Antoon Pardon wrote: >> Other than in PHP, Python has clear rules when an object of a builtin type >> is considered false (i.e. when it's empty). So why not take advantage of >> this? > > Because it doesn't always do what I want. > > I once had a producer consumer code. When the client asked whether new > items were available the function could return three different values > > 1) a list with items, to be consumed > 2) an empty list (meaning there were no items available for the > moment but there could be in the future > 3) None (meaning the producer was done) > > Just testing for the truth value of the returned result in order > to see whether the client should continue or not would often > have made the client exit prematurely. > > IME such cases where testing for the truth value of an object > don't give the expected result, happen often enough to make me > carefully think about what I want to test for and then explicitly > do so.
You're right, carefully thinking is always a good thing. Not using a language feature just because it would fail in another case is not. Georg -- http://mail.python.org/mailman/listinfo/python-list