Metoda hash() w Pythonie

Funkcja hash() w Pythonie jest funkcją wbudowaną i zwraca wartość skrótu obiektu, jeśli taki posiada. Wartość skrótu to liczba całkowita używana do szybkiego porównywania kluczy słownika podczas przeglądania pliku słownik .

Funkcja hash() w Pythonie Składnia

Składnia: skrót (obiekt)

Parametry: obj: Obiekt, który musimy przekonwertować na hash.

Zwroty : Jeśli to możliwe, zwraca wartość mieszaną.

Właściwości funkcji hash().

  • Obiekty hash() są nieodwracalne, co prowadzi do utraty informacji.
  • hash() zwraca wartość mieszaną tylko dla obiektów niezmiennych, dlatego może służyć jako wskaźnik do sprawdzania obiektów zmiennych/niezmiennych.
  • Możemy kodować dane dla bezpieczeństwa w Pythonie za pomocą funkcji hash().

Przykłady funkcji hash() w Pythonie

Przykład 1: Demonstracja działania funkcji hash()

W tym przykładzie używamy funkcji hash() do wydrukowania liczby całkowitej, łańcucha znaków i wartości skrótu zmiennoprzecinkowego za pomocą funkcji hash() w Pyton .

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

Wyjście

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

Przykład 2: Demonstracja właściwości hash()

Ten kod Pythona pokazuje, jak hash()> funkcja zachowuje się z obiekty niezmienne i zmienne . Najpierw inicjuje krotkę i listę z tymi samymi elementami. Kod pomyślnie drukuje wartość skrótu krotki. Jednakże, gdy próbuje wydrukować wartość skrótu listy, która jest zmienna, zgłasza a TypeError> ponieważ obiekty zmienne, takie jak listy, nie mogą być bezpośrednio mieszane.

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

Wyjście:

The tuple hash value is : 8315274433719620810 

Wyjątki:

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' 

Przykład 3: hash() dla niezmiennego obiektu krotki

Ten kod Pythona inicjuje krotkę o nazwie var> zawierające znaki „G”, „E”, „E” i „K”. The hash()> Funkcja służy do generowania wartości skrótu dla krotki var> . W tym przypadku kod wypisuje wartość skrótu krotki, która jest unikalną liczbą całkowitą reprezentującą krotkę na podstawie jej zawartości i struktury.

Python3




# hash() for immutable tuple object> var> => (> 'G'> ,> 'E'> ,> 'E'> ,> 'K'> )> print> (> hash> (var))>

Wyjście

3843673861956289951 

Przykład 4: funkcja hash() włączona ich użyteczny obiekt

hash() używana przez jeden niezmienny obiekt, jeśli użyjemy jej na zmiennym obiekcie, takim jak lista, zestaw, słowniki, wygeneruje to błąd.

Python3




l> => [> 1> ,> 2> ,> 3> ,> 4> ]> print> (> hash> (l))>

Wyjście

TypeError: unhashable type: 'list' 

Przykład 5: hash() na obiekcie niestandardowym

Tutaj zastąpimy metody __hash()__, aby wywołać funkcję hash(), a metoda __eq__() sprawdzi równość dwóch niestandardowych obiektów.

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

Wyjście

The hash is: 7627717261227283506 The hash is: 7627717261227283506