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, jakhash()>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 aTypeError>ponieważ obiekty zmienne, takie jak listy, nie mogą być bezpośrednio mieszane.
Python3
plik zmiany Linuksa
# 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 nazwievar>zawierające znaki „G”, „E”, „E” i „K”. Thehash()>Funkcja służy do generowania wartości skrótu dla krotkivar>. 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
terminal Kali Linux
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>