In article <[EMAIL PROTECTED]>, John J. Lee <[EMAIL PROTECTED]> wrote:
>[EMAIL PROTECTED] (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 ([EMAIL PROTECTED])           <*>         http://www.pythoncraft.com/

"If you don't know what your program is supposed to do, you'd better not
start writing it."  --Dijkstra
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to