On Sun, 01 Jul 2012 16:33:15 +1000, Chris Angelico wrote: > On Sun, Jul 1, 2012 at 4:27 PM, Steven D'Aprano > <steve+use...@pearwood.info> wrote: >> Yes, you can find specially crafted examples where adding parentheses >> in certain places, but not others, doesn't change the overall >> evaluation of the expression. > > My point was that adding parentheses around the tightest-binding > operator is a common, clear, and usually insignificant, way of > demonstrating operator precedence. So FOR THAT USE they must not change > evaluation of the expression. Obviously if you put them anywhere else, > they change evaluation. Nice job knocking down a straw man.
We *really did have* somebody arguing that chained comparisons are Bad because you can't stick parentheses around bits of it without changing the semantics. That was an actual argument, not a straw-man. It's a stupid argument, but don't blame me for pointing out it's stupidity. The author *assumed* that a chain of < must be left- associative in the same way that a chain of + operators is left- associative, but it isn't. That's an invalid and unsafe assumption -- even in C-like languages, there are operators which aren't left- associative, e.g. exponentiation ** which is usually right-associative. (For the record, C itself doesn't have an exponentiation operator.) When you make unsafe assumptions about an operator, and get bitten by it, the *correct* conclusion should be that the assumption was wrong, not that the language is wrong. Technically, < in Python is left-associative: a < b < c first evaluates a, not b or c. But it is left-associative under the rules of comparison operator chaining, not arithmetic operator chaining. -- Steven -- http://mail.python.org/mailman/listinfo/python-list