Augmented assignment operators such as += and *= behave differently depending on whether the Python object is mutable or immutable. Let’s take += as an example: Python first checks if the first object implements __iadd__ special method. If not, Python falls back on __add__. Since immutable objects don’t implement any inplace operations, statement like x += y is the same as x = x + y.
For mutable objects such as lists:
l = [1, 2]
old_id = id(l)
l += [3]            # the same as l.extend([3])
print(l)            #=> [1, 2, 3]
old_id == id(l)     #=> TrueFor mutable objects such as tuples:
t = [1, 2]
old_id = id(t)
t += (3,)           # the same as t = t + (3,)
print(t)            #=> (1, 2, 3)
old_id == id(t)     #=> False