The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Python опередил Java по числу проектов на GitHub, opennews (??), 08-Ноя-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


60. "Python опередил Java по числу проектов на GitHub"  +1 +/
Сообщение от Анонист (?), 08-Ноя-19, 11:39 
Потому что кортежи не изменяемы?
Ответить | Правка | Наверх | Cообщить модератору

61. "Python опередил Java по числу проектов на GitHub"  +/
Сообщение от анонимно (?), 08-Ноя-19, 11:41 
Кортежи не изменяемые, а почему data изменилась?
Ответить | Правка | Наверх | Cообщить модератору

63. "Python опередил Java по числу проектов на GitHub"  +/
Сообщение от Анонист (?), 08-Ноя-19, 11:46 
Хм... Потому что картеж хранит ссылку на массив? Проверил в "лайв" режиме. И вправду изменяется.
Ответить | Правка | Наверх | Cообщить модератору

103. "Python опередил Java по числу проектов на GitHub"  +1 +/
Сообщение от Коньвпальто (?), 08-Ноя-19, 13:40 
Содержимое кортежа на изменилось, оно как содержало ссылку на массив та и содержит туже саму ссылку на тот же массив, изменился сам массив. Если вас это удивляет - вы не понимаете базовой концепции языка. Раз уж вам так хочется чтобы его содержимое нельзя было поменять - поместите в кортеж ссылку на кортеж, а не на массив.
Ответить | Правка | Наверх | Cообщить модератору

106. "Python опередил Java по числу проектов на GitHub"  –1 +/
Сообщение от Коньвпальто (?), 08-Ноя-19, 13:50 
От того, что вы определили ссылку на список в конструкторе кортежа он не стал его содержать. Срочно перечитайте первые двадцать страничек любой нормальной книжки по этому яп. А если не хотите - просто оставьте идею делать по нему выводы. Они никому не интересны.
Ответить | Правка | Наверх | Cообщить модератору

110. "Python опередил Java по числу проектов на GitHub"  +/
Сообщение от jOKer (ok), 08-Ноя-19, 14:28 
Потому что изменились данные по ссылке, но не сама ссылка.

Загадка на уровне джуна питона. Уже мидлы смотрят на загадывателя с недоумением, а сеньоры и вовсе и не обращают внимания))
Ответить | Правка | К родителю #61 | Наверх | Cообщить модератору

185. "Python опередил Java по числу проектов на GitHub"  +1 +/
Сообщение от Аноним (185), 08-Ноя-19, 20:19 
А почему тогда ругается, если ссылка не меняется?
Ответить | Правка | Наверх | Cообщить модератору

212. "Python опередил Java по числу проектов на GitHub"  +/
Сообщение от jOKer (ok), 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])

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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