Método hash() de Python

Función hash() de Python es una función incorporada y devuelve el valor hash de un objeto si lo tiene. El valor hash es un número entero que se utiliza para comparar rápidamente claves de diccionario mientras se mira un diccionario .

Sintaxis de la función hash() de Python

Sintaxis: hash(obj)

Parámetros:obj: El objeto que necesitamos convertir en hash.

Devoluciones : Devuelve el valor hash si es posible.

Propiedades de la función hash()

  • Los objetos codificados mediante hash() son irreversibles y provocan la pérdida de información.
  • hash() devuelve un valor hash solo para objetos inmutables, por lo que puede usarse como indicador para verificar objetos mutables/inmutables.
  • Podemos codificar datos por seguridad en Python usando la función hash().

Ejemplos de funciones hash() de Python

Ejemplo 1: Demostrando el funcionamiento de hash()

En este ejemplo, estamos usando la función hash() para imprimir el valor hash entero, de cadena y flotante usando hash() en Pitón .

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

Producción

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

Ejemplo 2: Demostrando la propiedad de hash()

Este código Python demuestra cómo hash()> la función se comporta con objetos inmutables y mutables . Primero inicializa una tupla y una lista con los mismos elementos. El código imprime con éxito el valor hash de la tupla. Sin embargo, cuando intenta imprimir el valor hash de la lista, que es mutable, genera un TypeError> porque los objetos mutables como las listas no se pueden aplicar hash directamente.

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

Producción:

The tuple hash value is : 8315274433719620810 

Excepciones:

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' 

Ejemplo 3: hash() para objeto tupla inmutable

Este código Python inicializa una tupla llamada var> que contiene los caracteres 'G', 'E', 'E' y 'K'. El hash()> La función se utiliza para generar un valor hash para la tupla. var> . En este caso, el código imprime el valor hash de la tupla, que es un número entero único que representa la tupla en función de su contenido y estructura.

Python3




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

Producción

3843673861956289951 

Ejemplo 4: hash() activado a ellos objeto utilizable

Método hash() utilizado por un objeto inmutable, si usamos esto en un objeto mutable como lista, conjunto, diccionarios, generará un error.

Python3




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

Producción

TypeError: unhashable type: 'list' 

Ejemplo 5: hash() en un objeto personalizado

Aquí anularemos los métodos __hash()__ para llamar a hash(), y el método __eq__() verificará la igualdad de los dos objetos personalizados.

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

Producción

The hash is: 7627717261227283506 The hash is: 7627717261227283506