[Python-Dev] Boolean transition

Greg Ewing greg@cosc.canterbury.ac.nz
Mon, 11 Mar 2002 14:28:54 +1300 (NZDT)


Tim Peters <tim.one@comcast.net>:

> There's nothing reprehensible about, e.g.,
> 
>     days_in_year = 365 + is_leap(year)

This is bug-prone, because it relies on is_leap always
returning a "normalised" boolean value. I don't think
it would be a bad thing if you had to write it

  days_in_year = 365 + ord(is_leap(year))

or, even better,

  days_in_year = 365 + bit(is_leap(year))

where bit() is a function that takes a boolean (and only
a boolean) and returns 0 or 1.

>    print [("off", "on")[switch] for switch in switch_list]

No, no, what you really mean is

  print [{False:"off", True:"on"}[switch] for switch in switch_list]

or perhaps

  print ["on" if switch else "off" for switch in switch_list]

and similarly

  days_in_year = 365 + 1 if is_leap(year) else 0

(Yes, I know that one's already been rejected. I can't stop
liking it, though...)

Greg Ewing, Computer Science Dept, +--------------------------------------+
University of Canterbury,	   | A citizen of NewZealandCorp, a	  |
Christchurch, New Zealand	   | wholly-owned subsidiary of USA Inc.  |
greg@cosc.canterbury.ac.nz	   +--------------------------------------+