
On Thu, Aug 09, 2012 at 02:18:53AM +1000, Ben Finney <ben+python@benfinney.id.au> wrote:
What is a compelling use case for checking precisely for True or False? To distinguish False and None for a tri-state variable that can have 3 values - "yes", "no" and "unspecified" - True, False and None in Python-speak.
Oleg. Other cases: 1) I have written a function that returns True, False or a string error message. (No doubt an Exception-subclass object might be better
On 08/08/2012 17:59, Oleg Broytman wrote: style.) So sometimes I really want to test if the result "is True". 2) Say you are writing a function to process an arbitrary object, e.g. a custom version of repr. You might well choose to write if obj is True: # processing elif obj is False: # processing elif type(obj) is int: # processing # etc. etc. I am sure the examples could be multiplied. I can see no reason why we should be discouraged from writing if x is True: if that is really what we mean (and need) and not just a verbose way of spelling "if x:". Also I find the advice that if x is True: is worse than if x==True: baffling. I have been taught that the former executes faster, and indeed when I test it I find it is (significantly faster). What is the rationale? Rob Cliffe