The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Python опередил Java по числу проектов на GitHub"
Отправлено jOKer, 08-Ноя-19 21:29 
> А почему тогда ругается, если ссылка не меняется?

Потому что ругается не на изменение списка, а на попытку ссылку на список присвоить элементу кортежа. При этом собственно сама ссылка не меняется.

Если разобраться, то тут питон делает последовательно три действия

1. Берет ссылку на список из элемента кортежа
2. Модифицирует список по ссылке
3. Пытается _ту же самую_ ссылку присвоить элементу кортежа.

И вот на третьем действии кортеж и выдает исключение, поскольку присваивать новые значения элементам кортежа нельзя. Но ссылка та же самая, и даже отказавшись выполнить третье действие, он по ней показывает уже новые данные как ни в чем ни бывало. Все логично.

>>> data = (1,2,3,[4,5])
>>> id(data[3])

4401056072
>>> v = data[3]
>>> id(v)

4401056072
>>> data[3] += [0, 1]

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> id(data[3])

4401056072
>>> id(v)

4401056072
>>> v

[4, 5, 0, 1]
>>> data

(1, 2, 3, [4, 5, 0, 1])

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру