The OpenNET Project / Index page

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



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

Оглавление

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

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


53. "Python опередил Java по числу проектов на GitHub"  +1 +/
Сообщение от анонимно (?), 08-Ноя-19, 11:22 
Наверно считать по гитхабу ну не красиво. Всё же java много в кровавом, а они, понятное дело все на внутренних репозиториях сидят.

А хотите загадку про Python?

data = (1,2,3,[4,5])
data[3] += [0,0]

Получите исключение, а теперь загляните в data. Почему так?

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

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ообщить модератору

64. "Python опередил Java по числу проектов на GitHub"  –1 +/
Сообщение от Эффективный менеджер (?), 08-Ноя-19, 11:46 
- Доктор, когда я делаю вот  так, у меня вот тут болит
- А вы не делайте так.
Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

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

65. "Python опередил Java по числу проектов на GitHub"  –1 +/
Сообщение от Аноним (65), 08-Ноя-19, 11:49 
Потому что сначала к списку добавляется два элемента, потом элементу кортежа присваивается указатель на тот же список, отчего возникает эксепшон. Такой ботвы можно наестся от души если мешать изменяемые и неизменяемые типы данных.
Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

67. "Python опередил Java по числу проектов на GitHub"  +3 +/
Сообщение от проходил (?), 08-Ноя-19, 11:49 
с дата всё просто - объект list [4, 5] mutable и он вполне может поменяться, а вот потом зачем то идёт попытка обновить ссылку в 4ом элементе tuple и райзится ошибка - вероятно это сделано, чтоб подобное выражение отрабатывало и для immutable типов у которых += возвращает новый объект.. вот так всё отработает

data = (1,2,3,[4,5])
v = data[3]
v += [0,0]
print(data)

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

259. "Python опередил Java по числу проектов на GitHub"  +/
Сообщение от ADR (ok), 09-Ноя-19, 18:00 
На самом деле это действительно тупо сделали, что `a += [1]` != `a = a + [1]` для листов.

Один из з малова чесла косяков Python`a

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

175. "Python опередил Java по числу проектов на GitHub"  –1 +/
Сообщение от Аноним (-), 08-Ноя-19, 20:01 
Мои питоно-проекты в домашнем локальном репозитории. ;)
Ответить | Правка | К родителю #53 | Наверх | Cообщить модератору

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

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




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

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