Is this valid ?

Steven D'Aprano steve at REMOVE-THIS-cybersource.com.au
Thu Mar 20 19:06:54 EDT 2008


On Thu, 20 Mar 2008 15:09:08 +0100, Rolf van de Krol wrote:

> John Machin wrote:
>> Of course. You can chain comparisons as much as you like and is
>> (semi-)sensible, e.g.
>>   
> Hmm, 'of course' is not the correct word for it.


Not at all. The Original Poster tried something, and it worked. There 
were two alternatives:

(1) Writing a == b == 2 is valid.

(2) In the sixteen years that Python has been publicly available, with 
tens of thousands or more developers using it, nobody had noticed that 
Python had a bug in the compiler which incorrectly allowed a == b == 2 
until Stef Mientki came along and discovered it.

Given those two alternatives, (2) would be very surprising indeed, and so 
I think "of course" is well justified.

That Python allows chaining comparisons this way isn't really surprising. 
That's a very natural thing to do. What's surprising is that other 
languages *don't* allow chaining comparisons, but force you to write the 
inefficient and (sometimes) confusing "(a == 2) and (b == 2)" instead.


-- 
Steven



More information about the Python-list mailing list