Python Idioms [pdf]
Interesting philosophical points.To me personally, testing for 'truthy' and 'falsy' values, or relying on exceptions rather than checking values in advance, feels like sloppy and imprecise programming.A string being empty or not, or an array having items or not, or a boolean being true or false, are all qualitatively totally different things to me -- and just because Python can treat them the same, doesn't mean a programmer should take advantage of that fact. Sometimes it's possible to over-simplify things in a way that obfuscates instead of clarifying.When I read:    if name and pets and owners

I have no intuitive idea of what that means, of what's going on in the program. When I read    if name != '' and len(pets) > 0 and owners != {}

I understand it exactly.But by this point, I've come to understand that, for a lot of people, it seems to be the opposite. It seems to be more of a philosophical difference, not right/wrong.