MiddleКодИногдаЕщё не отвечали
Что произойдёт при t[0] += [100] на кортеже?
Предскажите, что делает каждая строка.
t = ([1], 2)
t[0].append(99) # (1)
print(t)
t[0] += [100] # (2) что произойдёт?
Определите вывод и объясните.
(1) проходит → ([1, 99], 2): кортеж неизменяем, но список, на который он ссылается, изменяем. (2) — знаменитая ловушка: += изменяет список И пытается переназначить t[0], поэтому возникает TypeError — но список всё равно изменяется до [1, 99, 100]. Операция выполняется наполовину.
- ✗Думать, что неизменяемость кортежа защищает изменяемые объекты, которые он держит
- ✗Ожидать, что строка (2) оставит список неизменным после ошибки
- ✗Считать, что
TypeErrorоткатывает изменение на месте
- →Почему
+=и изменяет список, и пытается присвоить вt[0]? - →Что это говорит о том, действительно ли кортеж «неизменяем»?