logo

Mètode Python hash().

Funció hash() de Python és una funció integrada i retorna el valor hash d'un objecte si en té un. El valor hash és un nombre enter que s'utilitza per comparar ràpidament les claus del diccionari mentre es mira a diccionari .

Sintaxi de la funció hash() de Python

Sintaxi: hash (obj)



Paràmetres: obj: L'objecte que hem de convertir en hash.

Devolucions: Retorna el valor hash si és possible.

Propietats de la funció hash().

  • Els objectes hash utilitzant hash() són irreversibles, provocant la pèrdua d'informació.
  • hash() retorna el valor hash només per als objectes immutables, per tant es pot utilitzar com a indicador per comprovar si hi ha objectes mutables/immutables.
  • Podem codificar dades per seguretat a Python mitjançant la funció hash().

Exemples de funcions Python hash().

Exemple 1: Demostració del funcionament de hash()

En aquest exemple, estem utilitzant la funció hash() per imprimir el valor hash d'enter, cadena i float utilitzant hash() a Python .



Python 3






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

>

>

Sortida

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

Exemple 2: Demostració de la propietat de hash()

Aquest codi de Python demostra comhash()>funció es comporta amb objectes immutables i mutables . Primer inicialitza una tupla i una llista amb els mateixos elements. El codi imprimeix correctament el valor hash de la tupla. Tanmateix, quan intenta imprimir el valor hash de la llista, que és mutable, genera aTypeError>perquè els objectes mutables com les llistes no es poden utilitzar directament.

Python 3




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

>

>

Sortida:

The tuple hash value is : 8315274433719620810>

Excepcions:

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

Exemple 3: hash() per a l'objecte de tupla immutable

Aquest codi de Python inicialitza una tupla anomenadavar>que conté els caràcters 'G', 'E', 'E' i 'K'. Elhash()>La funció s'utilitza per generar un valor hash per a la tuplavar>. En aquest cas, el codi imprimeix el valor hash de la tupla, que és un nombre enter únic que representa la tupla en funció del seu contingut i estructura.

Python 3




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

>

>

Sortida

3843673861956289951>

Exemple 4: hash() activat la M Objecte utilitzable

El mètode hash() utilitzat per un objecte immutable, si l'utilitzem en un objecte mutable com llista, conjunt, diccionaris, generarà un error.

Python 3




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

>

>

Sortida

TypeError: unhashable type: 'list'>

Exemple 5: hash() en un objecte personalitzat

Aquí anularem els mètodes __hash()__ per cridar el hash(), i el mètode __eq__() comprovarà la igualtat dels dos objectes personalitzats.

Python 3


java convertint nombre enter en cadena



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

>

>

Sortida

The hash is: 7627717261227283506 The hash is: 7627717261227283506>