This is one of what we call In-place Operators, which are operators executed jointly with the allocation operator on the object itself (hence the term in-place).
In this case, the operator //= is nothing more than the operator // together with the allocation operator =, being equivalent to:
aux = aux // 10
Assignment operators were defined precisely to avoid the need to type the same object twice within the expression.
The operator // is known as floor Division because it returns only the entire part of the division between the operands, different from the operator /, so-called true Division, which returns a floating point number. It is interesting to note that implicitly the operator // will call the method __ifloordiv__ of its object, then, by making aux //= 10 you implicitly are running aux.__ifloordiv__(10), or operator.ifloordiv(aux, 10).
Other operators in-place sane:
x += y, equivalent to x = x + y
x &= y, equivalent to x = x and y
x <<= y, equivalent to x = x << y
x %= y, equivalent to x = x % y
x *= y, equivalent to x = x * y
x @= y, equivalent to x = x @ y
x |= y, equivalent to x = x | y
x **= y, equivalent to x = x **y
x >>= y, equivalent to x = x >> y
x -= y, equivalent to x = x - y
x /= y, equivalent to x = x / y
x ^= y, equivalent to x = x ^y
+1 great answer, but what is the name and function of
x @= y?I saw in the documentation that calls the method__imatmul__, but in practice it would be useful to?– Luiz Augusto
@Luizaugusto It is for matrix multiplication (matrices). To my knowledge no native object uses this operator, but it exists precisely to allow it to be overloaded in user-defined classes.
– Woss