вот скажи, что делает i += 1?
Да, действительно, мы же переназначили переменную🌚
Теперь сделай тоже самое со списком например
x += y Это то же самое, что x = x.__iadd__(y)
Не, со списком я шарю. Тут чисто тупанул, подумал что мы изменяем объект в то время как мы просто переопределяем ссылку на другой
Ты запихнул в i другой объект, до этого действительно был один и тот же
Числа иммутабельные. Если пытаешься изменить(прибавить, вычесть), то получаешь новый объект с новым значением, а не меняешь старый
Но есть нюанс: >>> a = 42 >>> b = 42 >>> c = 0 >>> c += b >>> a is c True >>> b is c True >>> a is a True
и так для чисел от -5 до 255, кажется
может и так
Но это не особо важно, да
я могу себе представить около нуля применений этого факта
Ну это из серии "очевидное-невероятное-бесполезное"
Совершенно не гарантированное поведение. Факт в том, что в обоих случаях ты не c получил после сложения
Факт в том, что в конкретном случае в конкретной реализации a, b, c — ссылки на один и тот же объект (:
Обсуждают сегодня