✅ Разбор задачи: почему a изменился?



Вчера мы спрашивали, что выведет этот код:
a = [1, 2, 3]
b = a
b.append(4)
print(a)

🔎 Правильный ответ: [1, 2, 3, 4]

Разбираем, что произошло 👇

1⃣ Списки — изменяемый тип. Метод append() меняет сам объект, а не создаёт новый.

2⃣ b = a не копирует список. Переменные в Python хранят не сам объект, а ссылку на него. После присваивания a и b указывают на один и тот же список в памяти.

3⃣ Изменение через b видно через a. Поэтому append(4) отразился на обеих переменных — это один и тот же объект.

🧠 Как избежать ловушки:

🔹 b = a.copy() — поверхностная копия (для вложенных структур не спасёт)

🔹 b = a[☺ — то же самое через срез

🔹 import copy; b = copy.deepcopy(a) — полная независимая копия

💡 Запомни правило: присваивание списка — это не копирование, а создание второй ссылки. Хочешь независимую копию — копируй явно!

Хочешь пройти старт в Python без таких граблей? 🚀

📘 Забирай гайд «5 ошибок новичков в Python и как их избежать уже на первой неделе» 👉 https://infazy.ru/downloads/5-oshibok-novichkov-v-python/

#Python #Задача #Разбор #Программирование #Код #IT #Обучение
Просмотры: 37
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти