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