На данный вопрос уже ответили:
TypeError при изменении списка оператором += внутри кортежа
1 ответ
>>> a = ([],)
>>> a[0].append('pochemy')
>>> a[0] += 'tak'
Traceback (most recent call last):
File "
Почему во втором случае выдается ошибка? Ведь +=, в данном случае, изменяет сам объект, а не создает новый.
Ответ
Потому что код:
a[0] += 'tak'
эквивалентен:
x = a[0]
x = x.__iadd__('tak')
a[0] = x
Вторая строчка нормально выполняется, изменяя список, но на третьей вылетает исключение, поскольку мы пытаемся изменить кортеж.
Update: вот хорошее подробное объяснение https://ru.stackoverflow.com/a/482925/178077
Комментариев нет:
Отправить комментарий