Функція Python hash(). є вбудованою функцією, яка повертає хеш-значення об’єкта, якщо воно є. Хеш-значення — це ціле число, яке використовується для швидкого порівняння ключів словника під час перегляду a словник .
Синтаксис функції Python hash().
Синтаксис: хеш (об'єкт)
Параметри: obj: Об'єкт, який нам потрібно перетворити на хеш.
Повернення: Повертає хешоване значення, якщо це можливо.
Властивості функції hash().
- Об’єкти, хешовані за допомогою hash(), є незворотними, що призводить до втрати інформації.
- hash() повертає хешоване значення лише для незмінних об’єктів, тому може використовуватися як індикатор для перевірки змінних/незмінних об’єктів.
- Ми можемо кодувати дані для безпеки в Python за допомогою функції hash().
Приклади функції Python hash().
приклад 1: Демонстрація роботи hash()
У цьому прикладі ми використовуємо функцію hash() для друку цілого числа, рядка та хеш-значення з плаваючою точкою за допомогою hash() у Python .
Python3
# initializing objects> int_val>=> 4> str_val>=> 'techcodeview.com'> flt_val>=> 24.56> # Printing the hash values.> # Notice Integer value doesn't change> # You'll have answer later in article.> print>(>'The integer hash value is : '> +> str>(>hash>(int_val)))> print>(>'The string hash value is : '> +> str>(>hash>(str_val)))> print>(>'The float hash value is : '> +> str>(>hash>(flt_val)))> |
файл зміни linux
>
>Вихід
The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688>
приклад 2: Демонстрація властивості hash()
Цей код Python демонструє, якhash()>функція поводиться з незмінні та змінні об’єкти . Спочатку він ініціалізує кортеж і список з однаковими елементами. Код успішно друкує хеш-значення кортежу. Однак, коли він намагається надрукувати хеш-значення списку, який є змінним, він викликає aTypeError>оскільки такі змінні об’єкти, як списки, не можна хешувати безпосередньо.
Python3
# initializing objects> # tuple are immutable> tuple_val>=> (>1>,>2>,>3>,>4>,>5>)> # list are mutable> list_val>=> [>1>,>2>,>3>,>4>,>5>]> # Printing the hash values.> # Notice exception when trying> # to convert mutable object> print>(>'The tuple hash value is : '> +> str>(>hash>(tuple_val)))> print>(>'The list hash value is : '> +> str>(>hash>(list_val)))> |
>
>
Вихід:
збереження gimp як jpeg
The tuple hash value is : 8315274433719620810>
Винятки:
Traceback (most recent call last): File '/home/eb7e39084e3d151114ce5ed3e43babb8.py', line 15, in print ('The list hash value is : ' + str(hash(list_val))) TypeError: unhashable type: 'list'> Приклад 3: hash() для об’єкта незмінного кортежу
Цей код Python ініціалізує кортеж з іменемvar>містить символи «G», «E», «E» і «K». Thehash()>функція використовується для створення хеш-значення для кортежуvar>. У цьому випадку код друкує хеш-значення кортежу, яке є унікальним цілим числом, яке представляє кортеж на основі його вмісту та структури.
Python3
# hash() for immutable tuple object> var>=> (>'G'>,>'E'>,>'E'>,>'K'>)> print>(>hash>(var))> |
>
>Вихід
3843673861956289951>
Приклад 4: hash() увімкнено М придатний для використання об’єкт
метод hash(), який використовується одним незмінним об’єктом, якщо ми використовуємо його для змінного об’єкта, такого як список, набір, словники, тоді це спричинить помилку.
Python3
l>=> [>1>,>2>,>3>,>4>]> print>(>hash>(l))> |
>
друкувати масив у java
>
Вихід
TypeError: unhashable type: 'list'>
Приклад 5: hash() для спеціального об’єкта
Тут ми замінимо методи __hash()__ для виклику hash(), а метод __eq__() перевірить рівність двох настроюваних об’єктів.
Python3
class> Emp:> >def> __init__(>self>, emp_name,>id>):> >self>.emp_name>=> emp_name> >self>.>id> => id> >def> __eq__(>self>, other):> > ># Equality Comparison between two objects> >return> self>.emp_name>=>=> other.emp_name>and> self>.>id> =>=> other.>id> >def> __hash__(>self>):> > ># hash(custom_object)> >return> hash>((>self>.emp_name,>self>.>id>))> emp>=> Emp(>'Ragav'>,>12>)> print>(>'The hash is: %d'> %> hash>(emp))> # We'll check if two objects with the same> # attribute values have the same hash> emp_copy>=> Emp(>'Ragav'>,>12>)> print>(>'The hash is: %d'> %> hash>(emp_copy))> |
>
>Вихід
The hash is: 7627717261227283506 The hash is: 7627717261227283506>