I thought I might be able to find more fuel for my anti-python argument by investigating exactly what objects are equal to each other (generate a truth table). Also, I wanted to be confident of what values are considered True or False.
The one best practice related to this – that a colleague taught me – is use x is None instead of use if x == None: ... because None could be equal to any object depending on its implementation of __eq__.
The python truth table is actually, very reasonable.

This is a pure and beautiful sight compared to to Javascript or PHP. It is a little surprising to me that [] == [] since I would expect them to be two different list instances, but I would expect equality for (,) = (,) (identical tuples).
There are a few nuances when considering truthiness, however. If you’ve got code that reads if x: ... The following values for x are treated as false:
NoneFalse- zero of any numeric type. Like these:
0,0L,0.0,0j. - any empty string, tuple, or array.
'',(),[]. - an empty dictionary, for example,
{}. - instances of user-defined classes, if the class defines a
__nonzero__()or__len__()method and that method returns the integer0or boolean valueFalse
Everything else is truthy (considered equal to True).

Here’s the code I used to generate the tables above.