Método hash() de Python

La función Python hash() es una función integrada 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 las claves del diccionario mientras se consulta un diccionario.

Sintaxis del método Python hash():

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 con hash usando hash() son irreversibles, lo que lleva a la pérdida de información.
  • hash() devuelve el valor hash solo para objetos inmutables, por lo tanto, se puede usar como un indicador para verificar objetos mutables/inmutables.

Métodos Python hash() Ejemplos

Ejemplo 1: demostración del funcionamiento de hash() 

Python3

# Python 3 code to demonstrate
# working of hash()
 
# initializing objects
int_val = 4
str_val = 'GeeksforGeeks'
flt_val = 24.56
 
# Printing the hash values.
# Notice Integer value doesn't change
# You'l 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 : -5570917502994512005
The float hash value is : 1291272085159665688

Ejemplo 2: demostración de la propiedad de hash() 

Python3

# Python 3 code to demonstrate
# property of hash()
 
# 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

Python3

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

Producción:

5434435027328283763

Ejemplo 4: hash() en el objeto mutable

hash() método 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__() comprobará 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: -674930604243231063
The hash is: -674930604243231063

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *