Встречается на собеседованиях • сегодня

Может ли изменяться хеш-функция во время существования объекта

Нет, хеш-функция объекта в Python должна оставаться постоянной на протяжении всего времени его существования. Это важно для корректной работы словарей и множеств, которые используют хеш для быстрого доступа. Если хеш изменится, объект может стать "потерянным" в коллекции.

Пример:

python
class BadHash:
    def __init__(self, value):
        self.value = value
    
    def __hash__(self):
        return hash(self.value)  # Хеш зависит от value

obj = BadHash(1)
d = {obj: 'test'}
obj.value = 2  # Изменяем value -> хеш тоже изменится
print(obj in d)  # Может вернуть False, хотя объект в словаре

Для неизменяемых объектов (int, str, tuple) хеш постоянен. Для изменяемых (list, dict) хеш вообще не определён.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы