I was wondering what the += operator does in python. What is it used for and why would i use it?
-
1`x += y` is shorthand for `x = x + y`. You couldn't be bothered to do a google search on "python operators"?? – John Gordon Jun 30 '16 at 03:06
-
Why would i want to use it? – Poly_J Jun 30 '16 at 03:08
-
Because this way you don't have to re-type the first variable name, which means less typing and fewer chances to make a dumb mistake (i.e. what if you meant to type `x1 = x1 + y1` but instead you typed `x1 = y1 + y1`? You might not even notice, and then spend hours or days tracking down the bug.) – John Gordon Jun 30 '16 at 03:13
4 Answers
As many have pointed out, x += y
is similar to x = x + y
.
One notable difference being that the +=
operator is an "in-place" operation. So x += y
is actually "in-place add". Which means, it modifies the object 'x'.
Whereas x = x + y
adds the values of 'x' and 'y' and stores the result (as a new object) in 'x', discarding its previous value. This becomes more important when dealing with objects, custom numerical types or in any user-defined class where the behaviour can be modified internally.
+
calls the object's __add__()
method.
+=
calls __iadd__()
.
(It can get more complicated, with __radd__
, etc. but I'm glossing over that for now.)
One good reason to use +=
is: depending on the object type, x += y
can be optimised in specific cases, but x = x + y
has to create a new object to re-assign to 'x'.

- 12,983
- 3
- 36
- 66
a += b
is similar to :
a = a + b
It also works with other basic signs, for instance :
a *= b
is similar to :
a = a * b

- 11,804
- 1
- 31
- 49
The other usage is for string, str += 'defg' is the same as str = str + 'defg'
str = 'abc'
str += 'defg'
print(str)
'abcdefg'

- 1
This is known as augmented assignment, and it is not peculiar to the Python language. The advantage is not just saved typing. There is a computational advantage, since x+=1
evaluates x
only once by x=x+1
evaluates x
twice. See https://docs.python.org/2/reference/simple_stmts.html#augmented-assignment-statements

- 9,410
- 15
- 20