Функция hash() в Python
hash()является встроенной функцией в Python, используемой для возврата хеш-значения объекта.
Хеш-значение — это целое число, используемое для быстрого сравнения объектов. Ключи словарей и элементы множеств должны быть хешируемыми. Неизменяемые объекты обычно хешируемы.
Значение слова: hash 意为"哈希",返回对象的哈希值。
Базовый синтаксис и параметры
Формат синтаксиса
hash(object)
Описание параметра
- Параметр object:
- Тип: любой объект
- Описание: объект, для которого вычисляется хеш-значение.
Описание функций
- Возвращаемое значение: возвращает хеш-значение (целое число) объекта.
- Требование: объект должен быть хешируемым (т. е. реализует метод __hash__).
Примеры
Пример 1: Базовое использование
Пример
# Числа
print(hash(1)) # Вывод: 1
print(hash(3.14)) # Вывод: 314159
print(hash(-100)) # Вывод: -100
# Строки
print(hash("hello")) # Вывод: значение хеша
print(hash("world")) # Вывод: другое значение хеша
# Кортеж (хешируемый)
print(hash((1, 2, 3))) # Вывод: значение хеша
# Список (нехешируемый)
# print(hash([1, 2, 3])) # вызовет TypeError
print(hash(1)) # Вывод: 1
print(hash(3.14)) # Вывод: 314159
print(hash(-100)) # Вывод: -100
# Строки
print(hash("hello")) # Вывод: значение хеша
print(hash("world")) # Вывод: другое значение хеша
# Кортеж (хешируемый)
print(hash((1, 2, 3))) # Вывод: значение хеша
# Список (нехешируемый)
# print(hash([1, 2, 3])) # вызовет TypeError
Ожидаемый вывод:
Объекты с одинаковым значением всегда имеют одинаковое значение хеша.
Пример 2: Использование в словарях и множествах
Пример
# Ключи словаря должны быть хешируемыми
d = {"name": "Tom", "age": 20}
print(d["name"]) # Вывод: Tom
# Элементы множества должны быть хешируемыми
s = {1, 2, 3, "hello"}
print(3 in s) # Вывод: True
# Хеш пользовательского класса
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __hash__(self):
return hash((self.x, self.y))
p = Point(1, 2)
print(hash(p)) # Вывод: значение хеша
d = {"name": "Tom", "age": 20}
print(d["name"]) # Вывод: Tom
# Элементы множества должны быть хешируемыми
s = {1, 2, 3, "hello"}
print(3 in s) # Вывод: True
# Хеш пользовательского класса
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __hash__(self):
return hash((self.x, self.y))
p = Point(1, 2)
print(hash(p)) # Вывод: значение хеша
Вывод:
Хеш-значения позволяют использовать объекты в качестве ключей словаря и элементов множества.
hash()Это основа операций, связанных с хешированием, в Python.
Другие расширения
Встроенные функции Python3