Names changed to protect the guilty
aahz at pythoncraft.com
Sun Oct 8 05:19:10 CEST 2006
In article <877izb1vwe.fsf at pobox.com>, John J. Lee <jjl at pobox.com> wrote:
>aahz at pythoncraft.com (Aahz) writes:
>> The following line of lightly munged code was found in a publicly
>> available Python library...
>> if schema.elements.has_key(key) is False:
>> Sorry, just had to vent.
>I think I was reading the same code recently (epydoc?) and was also
>momentarily horrified ;-) until I realized that it was quite
>deliberately using three-valued logic (True, False, None) for some
>presumably-sensible reason. Since None is false, they had to use
>"is". So, given the need for three-valued logic, it's not as silly as
My take is that even in that case, one should use "is" only with None.
There is too much ground for bugs with True/False, particularly if you
either intend to work across version *or* you might possibly accept a
user's object (because *they* might be working across versions and
therefore returning 1/0 instead of True/False). I think it's safest to
simply ban this idiom. No exceptions, never.
And, no, this wasn't epydoc.
Aahz (aahz at pythoncraft.com) <*> http://www.pythoncraft.com/
"If you don't know what your program is supposed to do, you'd better not
start writing it." --Dijkstra
More information about the Python-list