Срез как копия списка словарей: что окажется в исходных данных
Перед пересчётом заказа разработчик сделал «снимок» строк, чтобы не портить исходные данные:
rows = [{"id": 1, "qty": 0}, {"id": 2, "qty": 0}]
snapshot = rows[:]
snapshot[0]["qty"] = 5
snapshot.append({"id": 3, "qty": 0})
print(len(rows), rows[0]["qty"])
Что напечатает последняя строка?
- 2 5 — новый список, но словари внутри те же самые объекты
- 2 0 — срез делает полностью независимую копию данных
- 3 5 — snapshot и rows остались одним и тем же объектом
- 3 0 — добавление элемента видно в обоих списках, изменение словаря — нет
