все 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Сообщить о неточности