code review

Steven D'Aprano steve+comp.lang.python at
Mon Jul 2 03:26:57 CEST 2012

On Sun, 01 Jul 2012 05:55:24 -0400, Terry Reedy wrote:

> On 7/1/2012 2:54 AM, Steven D'Aprano wrote:
>> So no, Python has always included chained comparisons, and yes, it is
>> shameful that a language would force you to unlearn standard notation
>> in favour of a foolish consistency with other operators. Comparisons
>> aren't special because they return bools. They are special because of
>> the way they are used.
>> C treats comparison operators as if they were arithmetic operators, and
>> so the behaviour of a chained comparison is the same as the behaviour
>> as a sequence of arithmetic operators: a foolish consistency. Python
>> treats comparison operators as comparison operators, and gives them
>> behaviour appropriate to comparisons.
> I considered this a great feature of Python when I first learned it.
> Reading about how rare it is among programming languages to treat
> comparisons in the standard way in mathematics reinforces that.

Apart from Python, Mathematica, Perl 6, CoffeeScript, Cobra and Clay give 
chained comparisons the standard meaning. It is, or was, a feature 
request for Boo, but I can't tell whether it has been implemented or not.

C-like semantics are next to useless, except perhaps for obfuscation:

And surprising:

C-like semantics are a clear case of purity of implementation overruling 
functional usefulness.


More information about the Python-list mailing list