Sivaram Konanki

February 10, 2025

Hashes in Python

I found out some interesting details about hashing in Python.

An object is hashable if it has `__hash__()`, that has hash value that never changes.

Immutable data, or even mutable data that is guaranteed to no change, has hash available.

Hashable types:


These are commonly hashable in Python, int, float, complex, str, bytes, bytearray, tuples (if elements are hashable), frozenset (immutable, so data is constant, therefore hashable), or any object that has `__hash__` and `__eq__`.

Non hashable types:


`list`, `dict`, `set` because their data can change (behind a pointer), most mutable objects.