t = ([],)
try:
t[0] += [1]
except TypeError as e:
print("Ошибка:", type(e).__name__)
print(t)
Многие думают:
Ошибка: TypeError
([],)
Но Python выведет:
Ошибка: TypeError
([1],)
Почему?
`t` — tuple, его нельзя менять.
Но внутри tuple лежит список, а список менять можно.
Оператор `+=` сначала мутирует список:
```python
[] -> [1]
```
А потом Python пытается записать результат обратно в tuple:
```python
t[0] = ...
```
И вот тут падает `TypeError`.
Итог странный: ошибка была, но данные уже изменились.
Главный урок:
immutable-контейнер не делает вложенные объекты immutable.
Если внутри tuple лежит list, этот list всё ещё можно изменить.