True inconsistency in Python

Erik Max Francis max at alcyone.com
Mon Nov 17 14:24:54 EST 2003


Ron Adam wrote:

> To me the usefulness of using True and False is that it is defined to
> values consistent with the programming language that you are using.

I agree, insofar as the value of True and False as constants is that now
have values set aside which mean _nothing_ but their Boolean values. 
This is very helpful for writing self-documenting code, something which
I've always been a strong supporter of.  If I have code where 0 or 1
gets assigned to a variable, I'm going to have to look at the whole
block to tell precisely what that's being used for:  Is it a counter
variable, a three-state value (say, -1, 0, and +1), is it an enumerated
value type, or is it a Boolean?  If I'm scanning code and I see

	x = True

then I know right away that what I'm looking at is a variable used as a
Boolean.  (Of course, in proper self-documenting code, the variable
would be named something more helpful than `x', but you see my point.)

> So using them to assign x = True,  or x = False.  insures that when I
> do:
> 
>         x = True
>         if x:
>                 ....
> 
> So I get consistent results for the language and platform I'm using
> now and in the future.  If down the road someone decided to make True
> = 3, and False = -5,  and they change the language so that any boolean
> comparisons return 3 and -5 respectively,  my use of True and False
> will still work.  If I tested for 1 or 0 using the 'if x:' method,
> then my program will break.

While this may be true in some sense, I don't think this is a powerful
argument for using True/False.  The chances of this happening are
utterly remote, since it would break practically all code.  (Obviously
you weren't suggesting it was a real possibility given your choices of
the alternate constants, but still.)

I don't consider insulation from something utterly implausible happening
very persuasive, since I'm not worried about that utterly implausible
thing happening.  I find explicit Boolean constants available for
writing self-documenting code much more compelling.

-- 
   Erik Max Francis && max at alcyone.com && http://www.alcyone.com/max/
 __ San Jose, CA, USA && 37 20 N 121 53 W && &tSftDotIotE
/  \ 
\__/ Why don't you grow up for crying out loud?
    -- Capt. Benjamin "Hawkeye" Pierce




More information about the Python-list mailing list