Why is b=(a+=1) an invalid syntax in python?
python, python-2.7
Solution
Unlike in some other languages, assignment (including augmented assignment, like `+=`) in Python is not an expression. This also affects things like this:
(a=1) > 2
which is legal in C, and several other languages.
The reason generally given for this is because it helps to prevent a class of bugs like this:
if a = 1: # instead of ==
pass
else:
pass
since assignment isn't an expression, this is a SyntaxError in Python. In the equivalent C code, it is a subtle bug where the variable will be modified rather than checked, the check will always be true (in C, like in Python, a non-zero integer is always truthy), and the else block can never fire.
You can still do chained assignment in Python, so this works:
>>> a = 1
>>> a = b = a+1
>>> a
2
>>> b
2
Problem
If I write the following in python, I get a syntax error, why so? ``` a = 1 b = (a+=1) ``` I am using python version 2.7 what I get when I run it, the following: ``` >>> a = 1 >>> b = (a +=1) File "<stdin>", line 1 b = (a +=1) ^ SyntaxError: invalid syntax >>> ```