Those are in place bit arithmetic operators. They modify the LH value in place (or reassign the lh value the new calculated value if the lh is immutable) with the same style operators as C.
Python calls them shifting operators (<< and >>) and binary bit operators (&,^ and |).
With the addition of the = after the operator, the assignment is back to the original LH name, so |= does an in place or and <<= does an in-place left shift.
So x<<=3 is the same as x=x<<3 or the value of x bit shifted to the left 3 places.
Bit shift:
>>> b=0x1
>>> b<<=3
>>> bin(b)
'0b1000'
>>> b>>=2
>>> bin(b)
'0b10'
Bit or:
>>> bin(b)
'0b1'
>>> bin(c)
'0b100'
>>> c|=b
>>> bin(c)
'0b101'
Technically, if the LH value is immutable, the result is rebound to the LH name rather than an actual in-place transformation of the value.
This can be shown by examining that address of item:
>>> id(i)
4298178680 # original address (in CPython, id is the address)
>>> i<<=3
>>> id(i)
4298178512 # New id; new int object created
Unlike using C (in this case, ctypes):
>>> import ctypes
>>> i=ctypes.c_int(1)
>>> ctypes.addressof(i)
4299577040
>>> i.value<<=3
>>> ctypes.addressof(i)
4299577040
Since C integers are mutable, the bit shift is done in place with no new address for the C int.