Почему `+=` иногда создаёт новый объект, а иногда нет?
Попробуйте угадать, что выведет этот код. x = 10
print(id(x))
x += 5
print(id(x)) Многие ожидают, что += просто изменит значение переменной. Но если посмотреть на id(), окажется, что после выполнения операции объект стал другим. Получается, что оператор += создал новый объект. Теперь посмотрим почти такой же пример. numbers = [1, 2]
print(id(numbers))
numbers += [3]
print(id(numbers)) На этот раз id() остаётся прежним. Получается совершенно противоположное поведение. В одном случае объект изменился. В другом — нет. Почему? Если вспомнить предыдущие статьи, то ответ уже почти лежит на поверхности...