Python Glossary English

все Python 3Встроенные функциипонятие

hash

интроспекция

Возвращает целочисленный хеш объекта. Объект должен быть хешируемым: хеш не меняется за время жизни, а равные объекты дают равные хеши. Используется словарями и множествами.

Синтаксис

hash(object)

У str и bytes хеш заново рандомизируется при каждом запуске интерпретатора (PYTHONHASHSEED) — это защита от атак на коллизии, а не контрольная сумма, поэтому сохранять его в файл или сравнивать между процессами нельзя; для стабильного отпечатка берите hashlib. И действует правило «равные объекты — равные хеши»: hash(1) == hash(1.0) == hash(True), а свой класс становится нехешируемым, как только вы определили __eq__ и не определили __hash__.

Примеры

print(hash(42))      # → 42
print(hash('hello')) # → ? хеш строки солится PYTHONHASHSEED и меняется от запуска
print(hash((1,2,3))) # → ? хеш кортежа считается из хешей элементов
try:
    hash([1,2,3])  # список нехешируем — будет TypeError
except TypeError as e: print(e)  # → unhashable type: 'list'
print(hash(42) == hash(42.0))  # → True (равные объекты)

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности