PEP-308 a "simplicity-first" alternative

Erik Max Francis max at
Fri Feb 14 06:48:25 CET 2003

Bengt Richter wrote:

> I take it think that Python's and/or semantics was a design mistake.
> Perhaps so ;-)

There is nothing wrong with Python's `and' and `or' semantics; they're
very similar in functionality to those used in Lisp, for instance. 
However, the use of the _idiom_ combining the two in order to attempt to
the effect of a conditional operator -- `C and x or y' -- is idiomatic,
unreadable, and _wrong_.  There are ways to fix it (with single-element
lists or lambdas) that make it not wrong, but even more idiomatic and
unreadable.  These aren't good solutions.

What PEP 308 seeks to find is a _conditional operator_ that stands on
its own and is something the community can live with.  Any approaches
which start by repairing the and/or idiom may fix the problem with it
being wrong, but can't fix the problems with it being idiomatic and

For that reason, your `C and {x} or y' suggestion is simply more
idiomatic and unreadable, for the reasons that I've stated several times
by now.  The problem is the horrible and/or idiom; if you're going to
fix it, it should be fixing it by replacing it, not making it _more_

 Erik Max Francis / max at /
 __ San Jose, CA, USA / 37 20 N 121 53 W / &tSftDotIotE
/  \ The average dog is a nicer person than the average person.
\__/ Andrew A. Rooney
    Python chess module /
 A chess game adjudicator in Python.

More information about the Python-list mailing list