Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2017 11:42:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Python. Переменные. Тип переменных

4kpt_IV
Ты не вполне понял. Во-первых, не нужно само преобразование (которое лишняя операция) в большинстве случаев. Я придумал только один юзкейс - использование кортежа как ключа словаря. Во-вторых, операция преобразования элементарна. Перемещения данных при этом не производится, память не выделяется. В твоем примере buffer += i на каждой итерации происходит выделение новой памяти и копирование в нее содержимого кортежа, что более затратно чем преобразование из списка в кортеж. Ну а добавление в конец списка, как понимаешь, тоже почти О(1). То есть по сути операции с кортежами можно сказать совсем не нужны, они безболезненно заменяются на операции со списками на небольшом наборе данных, а на большом наборе операции со списками безальтернативны ввиду в разы меньшей сложности.
Во-вторых, я не против того, что сам по себе пустой кортеж имеет право на существование. Это можно было бы реализовать вот так tuple(), но пустые скобки в питоне крайне противоречивая ситуация, потому что вот это кортеж

 a = ()
а вот это не кортеж
 a = (1)

ровно как вот это множество
 d = {1}
а вот это нет
 d = {}

это какая-то очень некрасивая гнилая вишенка на торте. Когда мы в основном имеем логичный последовательный синтаксис, но вдруг на ровном месте такие кривые исключения. Для пустых значений базовых структур вполне можно было бы обойтись без минимализма и создавать объект как любой другой: list(), dict(), set(), tuple()



Отредактировано FishHook (Янв. 7, 2017 11:42:30)

Офлайн

#2 Янв. 7, 2017 12:10:29

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Python. Переменные. Тип переменных

FishHook
То есть по сути операции с кортежами можно сказать совсем не нужны, они безболезненно заменяются на операции со списками на небольшом наборе данных, а на большом наборе операции со списками безальтернативны ввиду в разы меньшей сложности.

Насчет сложности согласен. Это ты меня не понял. Изменение типа внутри обработчика это избыточная операция и неважно сколько она занимает если она не несет в дальнейшем никакой бизнес логики (перестановку элементов, удаление дублей, и т.п.). Плюс есть такое понятие как соответствие типа принимаемого и возвращаемого значения. Нужно лишний раз следить, чтобы возвращался кортеж, а в функциях где несколько точек выхода приходится городить лишние обработчики или все возвраты оборачивать в tuple. Ну и никто не предлагает на офигенных массивах использовать операцию конкатенации, где задача “обжата” по времени. Даже для текста она затратна. Это и ежику понятно. Просто она имеет право на жизнь и даже иногда может ее облегчить.

FishHook
это какая-то очень некрасивая гнилая вишенка на торте. Когда мы в основном имеем логичный последовательный синтаксис, но вдруг на ровном месте такие кривые исключения. Для пустых значений базовых структур вполне можно было бы обойтись без минимализма и создавать объект как любой другой: list(), dict(), set(), tuple()

Да. Согласен. Как я понимаю оно тянется еще с 1 ветки. Хотя PyCharm уже ругается иногда. Правда пока только на словари.

Отредактировано 4kpt_IV (Янв. 7, 2017 12:10:55)

Офлайн

#3 Янв. 7, 2017 14:29:28

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2823
Репутация: +  185  -
Профиль   Отправить e-mail  

Python. Переменные. Тип переменных

> Хотя, по идее type вообще не должен был всплывать - что указывало бы на динамическую типизацию (отличие Python от других языков).
> Про динамическую типизацию ясно. Однако в данном случае произошла ошибка с примером: пример должен был показать динамический тип переменной а. Что делать?

У тебя переменная “a” меняет свой тип: сначала это число, затем строка, а потом кортеж. Это и есть динамическая типизация.
https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%BD%D0%B0%D0%BC%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Янв. 7, 2017 14:30:06)

Офлайн

#4 Янв. 10, 2017 08:28:47

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Python. Переменные. Тип переменных

я у же реально по вопросам вижу кто читает лутца а кто задает тупые вопросы



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Янв. 11, 2017 11:58:15

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Python. Переменные. Тип переменных

Вот я за свой коммент получил от топик стартера минус с комментарием

“Неинформативность. Хамское поведение”

Камрад - когда ты прочитаешь лутца и осознаешь - ты сам себе сюда ответишь так же…



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version