### Augmented assignment in Python

If you are new to `Python`

, you should probably stop reading here. But, if you have used `Python`

and `numpy`

, then read on. Before, that try these bits of code.

import numpy a = numpy.array([1,2]) a = a + 0.5j print a

[ 1.+0.5j 2.+0.5j]

The “same thing”, in a slightly different way.

import numpy a = numpy.array([1,2]) a += 0.5j print a

[1 2]

Both the code blocks, look really the same, until you look carefully. Under normal circumstances `a = a + b`

and `a += b`

behave exactly similarly, and we really don’t need to bother about the differences between them.

But, `+=`

, which is an augmented assignment operator, actually tries to perform the operation in-place, unlike the other statement where `+`

actually returns a new object which is again being referenced by the name `a`

.

But, when dealing with `numpy`

arrays, this will lead to trouble. When assigning to an array, it’s `dtype`

is not changed and hence the trouble.

The right way to use the augmented assignment operator, would be:

import numpy a = numpy.array([1,2], dtype=complex) a += 0.5j print a

[ 1.+0.5j 2.+0.5j]

The same thing is explained in this thread. Also, Thanks to Bhanukiran for asking me this.