| # Augmented assignment test. | 
 |  | 
 | x = 2 | 
 | x += 1 | 
 | x *= 2 | 
 | x **= 2 | 
 | x -= 8 | 
 | x /= 2 | 
 | x %= 12 | 
 | x &= 2 | 
 | x |= 5 | 
 | x ^= 1 | 
 |  | 
 | print x | 
 |  | 
 | x = [2] | 
 | x[0] += 1 | 
 | x[0] *= 2 | 
 | x[0] **= 2 | 
 | x[0] -= 8 | 
 | x[0] /= 2 | 
 | x[0] %= 12 | 
 | x[0] &= 2 | 
 | x[0] |= 5 | 
 | x[0] ^= 1 | 
 |  | 
 | print x | 
 |  | 
 | x = {0: 2} | 
 | x[0] += 1 | 
 | x[0] *= 2 | 
 | x[0] **= 2 | 
 | x[0] -= 8 | 
 | x[0] /= 2 | 
 | x[0] %= 12 | 
 | x[0] &= 2 | 
 | x[0] |= 5 | 
 | x[0] ^= 1 | 
 |  | 
 | print x[0] | 
 |  | 
 | x = [1,2] | 
 | x += [3,4] | 
 | x *= 2 | 
 |  | 
 | print x | 
 |  | 
 | x = [1, 2, 3] | 
 | y = x | 
 | x[1:2] *= 2 | 
 | y[1:2] += [1] | 
 |  | 
 | print x | 
 | print x is y | 
 |  | 
 | class aug_test: | 
 |     def __init__(self, value): | 
 |         self.val = value | 
 |     def __radd__(self, val): | 
 |         return self.val + val | 
 |     def __add__(self, val): | 
 |         return aug_test(self.val + val) | 
 |  | 
 |  | 
 | class aug_test2(aug_test): | 
 |     def __iadd__(self, val): | 
 |         self.val = self.val + val | 
 |         return self | 
 |  | 
 | class aug_test3(aug_test): | 
 |     def __iadd__(self, val): | 
 |         return aug_test3(self.val + val) | 
 |  | 
 | x = aug_test(1) | 
 | y = x | 
 | x += 10 | 
 |  | 
 | print isinstance(x, aug_test) | 
 | print y is not x | 
 | print x.val | 
 |  | 
 | x = aug_test2(2) | 
 | y = x | 
 | x += 10 | 
 |  | 
 | print y is x | 
 | print x.val | 
 |  | 
 | x = aug_test3(3) | 
 | y = x | 
 | x += 10 | 
 |  | 
 | print isinstance(x, aug_test3) | 
 | print y is not x | 
 | print x.val | 
 |  | 
 | class testall: | 
 |  | 
 |     def __add__(self, val): | 
 |         print "__add__ called" | 
 |     def __radd__(self, val): | 
 |         print "__radd__ called" | 
 |     def __iadd__(self, val): | 
 |         print "__iadd__ called" | 
 |         return self | 
 |  | 
 |     def __sub__(self, val): | 
 |         print "__sub__ called" | 
 |     def __rsub__(self, val): | 
 |         print "__rsub__ called" | 
 |     def __isub__(self, val): | 
 |         print "__isub__ called" | 
 |         return self | 
 |  | 
 |     def __mul__(self, val): | 
 |         print "__mul__ called" | 
 |     def __rmul__(self, val): | 
 |         print "__rmul__ called" | 
 |     def __imul__(self, val): | 
 |         print "__imul__ called" | 
 |         return self | 
 |  | 
 |     def __div__(self, val): | 
 |         print "__div__ called" | 
 |     def __rdiv__(self, val): | 
 |         print "__rdiv__ called" | 
 |     def __idiv__(self, val): | 
 |         print "__idiv__ called" | 
 |         return self | 
 |  | 
 |     def __mod__(self, val): | 
 |         print "__mod__ called" | 
 |     def __rmod__(self, val): | 
 |         print "__rmod__ called" | 
 |     def __imod__(self, val): | 
 |         print "__imod__ called" | 
 |         return self | 
 |  | 
 |     def __pow__(self, val): | 
 |         print "__pow__ called" | 
 |     def __rpow__(self, val): | 
 |         print "__rpow__ called" | 
 |     def __ipow__(self, val): | 
 |         print "__ipow__ called" | 
 |         return self | 
 |  | 
 |     def __or__(self, val): | 
 |         print "__or__ called" | 
 |     def __ror__(self, val): | 
 |         print "__ror__ called" | 
 |     def __ior__(self, val): | 
 |         print "__ior__ called" | 
 |         return self | 
 |  | 
 |     def __and__(self, val): | 
 |         print "__and__ called" | 
 |     def __rand__(self, val): | 
 |         print "__rand__ called" | 
 |     def __iand__(self, val): | 
 |         print "__iand__ called" | 
 |         return self | 
 |  | 
 |     def __xor__(self, val): | 
 |         print "__xor__ called" | 
 |     def __rxor__(self, val): | 
 |         print "__rxor__ called" | 
 |     def __ixor__(self, val): | 
 |         print "__ixor__ called" | 
 |         return self | 
 |  | 
 |     def __rshift__(self, val): | 
 |         print "__rshift__ called" | 
 |     def __rrshift__(self, val): | 
 |         print "__rrshift__ called" | 
 |     def __irshift__(self, val): | 
 |         print "__irshift__ called" | 
 |         return self | 
 |  | 
 |     def __lshift__(self, val): | 
 |         print "__lshift__ called" | 
 |     def __rlshift__(self, val): | 
 |         print "__rlshift__ called" | 
 |     def __ilshift__(self, val): | 
 |         print "__ilshift__ called" | 
 |         return self | 
 |  | 
 | x = testall() | 
 | x + 1 | 
 | 1 + x | 
 | x += 1 | 
 |  | 
 | x - 1 | 
 | 1 - x | 
 | x -= 1 | 
 |  | 
 | x * 1 | 
 | 1 * x | 
 | x *= 1 | 
 |  | 
 | x / 1 | 
 | 1 / x | 
 | x /= 1 | 
 |  | 
 | x % 1 | 
 | 1 % x | 
 | x %= 1 | 
 |  | 
 | x ** 1 | 
 | 1 ** x | 
 | x **= 1 | 
 |  | 
 | x | 1 | 
 | 1 | x | 
 | x |= 1 | 
 |  | 
 | x & 1 | 
 | 1 & x | 
 | x &= 1 | 
 |  | 
 | x ^ 1 | 
 | 1 ^ x | 
 | x ^= 1 | 
 |  | 
 | x >> 1 | 
 | 1 >> x | 
 | x >>= 1 | 
 |  | 
 | x << 1 | 
 | 1 << x | 
 | x <<= 1 |