TGViewer
PyThrone PyThrone @pythrone · 13 subscribers
Post #10 116
Что выведет этот код?

hash() - функция, которая возвращает хэш-значение объекта, если объект хэшируемый (имеет __hash__).

Хэш-значение это всегда целое число.

Хэш-значение целых чисел есть само целое число. Но в зависимости от разрядности платформы. Если у Вас 64-битовая платформа, то hash() вернет значение от -2^63 до 2^63-1.

Хорошо, что насчет нашего кода?

True - имеет hash = 1

print(hash(True)) # 1
print(isinstance(True, int)) # True
print(True == 1) # True


1 - int в допустимом диапазоне, поэтому hash() вернет его же.

И для всех чисел, которые равны какому то целому числу, хэш функция вернет это целое число:

print(1 == 1.0) # True
print(hash(1.0)) # 1


А в классе Item мы переопределили два метода:
__hash()__ -> 1
и __eq__ -> 1 == other

item = Item()
print(1 == item) # True
print(hash(item)) # 1


В итоге получается, что все ключи равны и у всех ключей одно и то же хэш-значение.

Поэтому ответ 1.

#hash #числа
  • 👍 3
More from @pythrone
  1. Mar 10, 2023Как можно вызывать эту функцию? Правильный ответ # 1 и # 2. arg1 - только позиционный аргу…
  2. Mar 9, 2023В данном случае будет выведено None, потому что оператор and возвращает первое ложное знач…
  3. Feb 27, 2023Что выведет этот код? Iterable - это объект по которому можно пройтись. Для питона это люб…
  4. Feb 22, 2023Что выведет этот код? Могло показаться, что выведется словарь с буквами и их повторением в…
  5. Feb 20, 2023Set - это множество, в котором элементы не имеют порядок. Т.е. порядок не гарантируется, н…
  6. Feb 16, 2023Что выведет этот код? Когда мы выполняем операции вида: left + right Вызывается метод left…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →