может быть только иммютебл но это уже как бы следствия.
А чем причина такого разделения я пока кажется не уловил, как бы в чем удобство ?
Ключ словаря может быть mutable, но всё сложно.
короче место для багов для не опытных и тд
Угу. Ключ словаря должен быть хэшируемым. Но если у нас объект мутабельный настолько, что за время своей жизни как ключа словаря у него поменялся хэш (и важные при сравнении поля) — то как этим всем пользоваться?
да да я понимаю, речь идет в питоне об автоматизации (и более хай лвл программирование), хэш за тебя для словаря уже кто то сделал, не надо ломать голову, просто понять более хай левел разделения категорий языка, в частности mutable/immutable. Уделю этим категориям внимание, я пока по порядку иду, надо еще по ключевым понятиям потом почитать, хотя может просто мимо прошло.
более инструментально все для пользователя, если как бы глубоко самому не лезть.
Хм... не "кто-то за тебя сделал". Просто если важно чтобы объекты были ключами словаря — можно определить, какие из полей существенны для того чтобы отличать их друг от друга. И тут уже важно обеспечить консистентность, если отклоняешься от реализации по-умолчанию.
я согласен, я просто о том, что проще когда ключи иммьютебл, и консистентность практически автоматически таким образом достигается. В любых других случаях уже от рук и опыта зависит.
Вот только куча мьютабл типов, используемых повсеместно в качестве ключей с тобой не согласятся.
функции, классы, сокеты
Ну как куча, используются, конечно, но там сознательно следили, чтобы не шваркнуло и чтобы мутабельная составляющая не лезла в определение хэша. И мы вроде бы искали — но так и не нашли обратных примеров — чтобы иммутабельное не было не хэшируемо. Понятно, что сочинить можно, но чтобы это на практике где-то встречалось — не нашли.
range slice вот был до недавнего времени
Хм. Соглашусь, но он скорее по недосмотру чем по какой-то внятной причине.
ну классы, сокеты понятно, это ресурс менеджмент может быть, классы это тоже понятно в OOP. функции как ключи ? типо тоже как ресурс менеджмент, функции как ключи, и аргументы как значения ? Интересно в каких случаях это используется
Диспетчеризация какая-нибудь, например. Кэш можно забабахать. Ну и надо не забывать, что хэши не только для словарей используются, но и для множеств.
Обсуждают сегодня