Python metóda hash().

Funkcia hash() v Pythone je vstavaná funkcia a vracia hash hodnotu objektu, ak ju má. Hodnota hash je celé číslo, ktoré sa používa na rýchle porovnanie kľúčov slovníka pri pohľade na a slovník .

Syntax funkcie hash() v Pythone

Syntax: hash(obj)

Parametre : obj : Objekt, ktorý potrebujeme previesť na hash.

Návraty: Ak je to možné, vráti hašovanú hodnotu.

Vlastnosti funkcie hash().

  • Objekty hašované pomocou hash() sú nevratné, čo vedie k strate informácií.
  • hash() vracia hašovanú hodnotu len pre nemenné objekty, preto sa dá použiť ako indikátor na kontrolu meniteľných/nezmeniteľných objektov.
  • Údaje môžeme zakódovať pre bezpečnosť v Pythone pomocou funkcie hash ().

Príklady funkcií hash() Pythonu

Príklad 1: Ukážka fungovania hash()

V tomto príklade používame funkciu hash() na vytlačenie hodnoty hash celého čísla, reťazca a float pomocou hash() v 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)))>

Výkon

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

Príklad 2: Preukázanie vlastnosti hash()

Tento kód Pythonu ukazuje, ako hash()> funkcia sa správa s nemenné a premenlivé predmety . Najprv inicializuje n-ticu a zoznam s rovnakými prvkami. Kód úspešne vytlačí hodnotu hash n-tice. Keď sa však pokúsi vytlačiť hodnotu hash zoznamu, ktorý je premenlivý, vyvolá a TypeError> pretože meniteľné objekty, ako sú zoznamy, nemožno hašovať priamo.

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

Výkon:

The tuple hash value is : 8315274433719620810 

Výnimky:

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' 

Príklad 3: hash() pre Immutable Tuple Object

Tento kód Pythonu inicializuje n-ticu s názvom var> obsahujúce znaky „G“, „E“, „E“ a „K“. The hash()> funkcia sa používa na generovanie hodnoty hash pre n-ticu var> . V tomto prípade kód vypíše hašovaciu hodnotu n-tice, čo je jedinečné celé číslo, ktoré predstavuje n-ticu na základe jej obsahu a štruktúry.

Python3




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

Výkon

3843673861956289951 

Príklad 4: hash() on M použiteľný objekt

hash() metóda používaná jedným nemenným objektom, ak ju použijeme na meniteľnom objekte, ako je zoznam, množina, slovníky, vygeneruje chybu.

Python3




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

Výkon

TypeError: unhashable type: 'list' 

Príklad 5: hash() na vlastnom objekte

Tu prepíšeme metódy __hash()__ na volanie hash() a metóda __eq__() skontroluje rovnosť dvoch vlastných objektov.

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

Výkon

The hash is: 7627717261227283506 The hash is: 7627717261227283506