Well, it is convenient in Python that {} and [] are also false values, but hardly satisfactory to me. It lacks a delicious explicitness. Let’s put it to bed, because it was hardly my main point.
My main point is that the magic values should not change the meaning of the variable. This is the thing I’ve been seeing that lead to the rant, and on that I feel very confident.
If there are going to be variables, each should be a fact and the semantic of the fact should be stable and reflected in the name. I think that “eitherNameOrDateOfBirthForNonResidents” would make a particularly crappy variable name, and a sign of sloppy thinking.