Развёрнутое пояснение
1️⃣Выражение 𝚊 = 𝚋 = [𝟷, 𝟸] вычисляет список один раз и присваивает ссылку на него обеим переменным 𝚊 и 𝚋 — они указывают на один и тот же объект.
2️⃣Вызов 𝚊.𝚊𝚙𝚙𝚎𝚗𝚍(𝟹) модифицирует этот список на месте: теперь он содержит [𝟷, 𝟸, 𝟹], и обе переменные видят это изменение.
3️⃣Выражение 𝚋 = 𝚋 + [𝟺] создаёт новый список из элементов 𝚋 плюс элемент 𝟺, и перепривязывает переменную 𝚋 к этому новому списку [𝟷, 𝟸, 𝟹, 𝟺]; переменная 𝚊 продолжает указывать на старый объект.
4️⃣Функция 𝚙𝚛𝚒𝚗𝚝(𝚊, 𝚋) выводит [1, 2, 3] [1, 2, 3, 4].
Почему это важно
Задача демонстрирует разницу между мутацией объекта (𝚊𝚙𝚙𝚎𝚗𝚍, +=) и созданием нового объекта (+). При цепочке присваиваний с изменяемыми объектами легко получить неожиданное разделение состояния между переменными.
Post #4553
746
- 👍 6