Names changed to protect the guilty
Aahz
aahz at pythoncraft.com
Sat Oct 7 23:19:10 EDT 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
>it looks.
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
mailing list