Метод 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)))>

Вихід

The integer hash value is : 4 The string hash value is : 4349415460800802357 The float hash value is : 1291272085159665688 

приклад 2: Демонстрація властивості hash()

Цей код Python демонструє, як hash()> функція поводиться з незмінні та змінні об’єкти . Спочатку він ініціалізує кортеж і список з однаковими елементами. Код успішно друкує хеш-значення кортежу. Однак, коли він намагається надрукувати хеш-значення списку, який є змінним, він викликає a TypeError> оскільки такі змінні об’єкти, як списки, не можна хешувати безпосередньо.

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)))>

Вихід:

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». The hash()> функція використовується для створення хеш-значення для кортежу 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))>

Вихід

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