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