TGViewer
Python: задачки и вопросы Python: задачки и вопросы @quiz_python · 6.93K subscribers
Post #4693 816
Разбор по шагам

1️⃣Выражение t[1] += [3] под капотом разбивается на две операции: t[1].__iadd__([3]) и последующее присваивание t[1] = ...

2️⃣Первый шаг выполняется успешно — метод __iadd__ мутирует список на месте, и он становится [2, 3].

3️⃣Второй шаг (присваивание обратно по индексу) бросает TypeError, так как кортежи неизменяемы.

4️⃣Ошибка перехватывается блоком except, где выводится строка 'Error ' без перехода на новую строку.

5️⃣Выполнение продолжается, и print(t) выводит кортеж с уже изменённым списком: (1, [2, 3]).

Почему это важно
Пример наглядно показывает, почему хранение мутабельных объектов (списков) внутри иммутабельных (кортежей) — плохая архитектурная практика. Операции над ними могут вызывать ошибки, но при этом оставлять данные в изменённом (грязном) состоянии.
  • ✍ 9
More from @quiz_python
  1. Sep 21, 2026Развёрнутое пояснение: 1. Вызывается persist_order, и блок try печатает строку write. 2. И…
  2. Sep 21, 2026Post #4878
  3. Sep 14, 2026А вы уже забрали свой подарок ко Дню программиста? Мы в Tproger вместе с нашими друзьями с…
  4. Aug 30, 2026Развёрнутое пояснение: 1. Создаётся список batch с двумя разными словарями. 2. Вызов enric…
  5. Aug 30, 2026Post #4875
  6. Aug 30, 2026Развёрнутое пояснение: 1. Создаётся внутренний список ['', '', ''] — три пустые строки. 2.…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →