logo

Метод Python hash().

Функція 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>