As a guess, Rob, precedence rules for not may not bind as strongly as you think.

1 + (not 1)

With parentheses, "not 1" is a subexpression that should be performed first and 
might return the value "False"

1 + False

treats False in a numeric context as a zero so evaluates to 1.

But

1 + not 1 

Looks a bit ambiguous as "+ " expects something it considers a number or that 
can be converted to a number. Without parentheses, it may try to do 

1 + not

Which gets the same Syntax error.

I looked and operator "not" is evaluated much later than "+" and just before 
"and" and "or" so you need parentheses to force the interpretation you may 
intend. Similarly, some used of "and" require parentheses as do other operators.

-----Original Message-----
From: Python-list <python-list-bounces+avigross=verizon....@python.org> On 
Behalf Of Rob Cliffe via Python-list
Sent: Wednesday, March 3, 2021 10:19 PM
To: Python <python-list@python.org>
Subject: a + not b

I can't work out why
     1 + - 1
     1 + (not 1)
are legal syntax, but
     1 + not 1
isn't.
Is there a good reason for this?
Thanks
Rob Cliffe

-- 
https://mail.python.org/mailman/listinfo/python-list

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to