> For the complete documentation index, see [llms.txt](https://bemind.gitbook.io/neural/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bemind.gitbook.io/neural/python/vstroennye-funkcii-python/hash.md).

# hash()

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

**Назначение**:

* Получение хеш-значения неизменяемого объекта.
* Использование для быстрого поиска и хранения элементов в хеш-таблицах (словарях, множествах).

**Возврат**:

* Возвращает целочисленное хеш-значение объекта.

**Описание**:

* Принимает один аргумент - объект, для которого нужно вычислить хеш-значение.
* Объект должен быть неизменяемым (immutable), например, число, строка, кортеж.
* Изменяемые объекты (списки, множества, словари) не могут быть хешированы.
* Для одного и того же объекта хеш-значение будет одинаковым при повторных вызовах.
* Разные объекты могут иметь одинаковые хеш-значения (коллизия).

**Примеры**:

1. Вычисление хеш-значения строки
2. Использование хеш-значения для поиска в словаре
3. Хеширование кортежа

{% tabs %}
{% tab title="1." %}

```python
text = "Hello, World!"
hash_value = hash(text)
print(hash_value)  # Вывод: -809305619480624843
```

{% endtab %}

{% tab title="2." %}

```python
person = {"name": "Alice", "age": 25}
key = hash(("name", "Alice"))
print(person.get(key, "Key not found"))  # Вывод: 25
```

{% endtab %}

{% tab title="3." %}

```python
point = (3, 4)
hash_value = hash(point)
print(hash_value)  # Вывод: 518328665644623975
```

{% endtab %}
{% endtabs %}

**Использование**:

* В хеш-таблицах (словарях, множествах) для эффективного хранения и поиска элементов.
* В алгоритмах и структурах данных, которые полагаются на хеширование для быстрого доступа к элементам.
* В криптографии для создания цифровых отпечатков данных.
* В кэшировании для быстрого доступа к данным.
* В системах идентификации и аутентификации.

Следует помнить, что `hash()` может быть вызвана только для неизменяемых объектов. Для изменяемых объектов, таких как списки или множества, вызов `hash()` приведет к ошибке `TypeError`. Если вам нужно хешировать изменяемый объект, вы можете преобразовать его в неизменяемый тип данных, например, кортеж или замороженное множество (frozenset).
