1 > 0 == True -> False

Steven D'Aprano steve+comp.lang.python at pearwood.info
Thu Jan 30 10:09:03 EST 2014


On Thu, 30 Jan 2014 09:08:58 -0500, Roy Smith wrote:

> 1) Assume that you don't have the full operator precedence table
> memorized and just parenthesize everything.

Oh really? Do you actually write stuff like this?

b = ((2*a) + 1)
if (b >= (-1)):
    ...


I would hope not.


> 2) In cases where the expression is so simple, you couldn't possibly be
> wrong, see rule #1.


Or, you can avoid superstitious responses *wink*

(1) Learn the operator precedences to the best of your ability. It's
    not hard, most of it works just like the precedences you're used
    to from maths class (remember that?) or in the most intuitively
    useful way.

    E.g. `1 + x == 2` does the useful thing of calculating 1 + x 
    before testing for equality, rather than the stupid thing of
    calculating x == 2 first then adding it to 1.

(2) When in doubt, use parentheses.

(3) When the expression is complex, a few extra parentheses can
    help make it easier to understand. "Seven, plus or minus two"
    is (roughly) the number of distinct items the human short-
    term memory can hold. Grouping terms together can help reduce
    the distinct number of items the reader needs to keep in 
    short-term memory.

    E.g. `x+1 > 0 and y >= 5` is potentially as many as 9 distinct
    items to keep in short-term memory. But bracketing some terms 
    as in `(x+1 > 0) and (y >= 5)` can reduce that down to as few
    as two items.

(4) But too many parens obscure the meaning of the expression too. Aim
    for a good balance, neither too few nor too many. Your judgement 
    of the right number of parens is a skill, which will come with 
    experience.




-- 
Steven



More information about the Python-list mailing list