Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Module « builtins » Python 3.11.3

Fonction hash - module builtins

Signature de la fonction hash

 def hash(instance: object) -> int

Description

La fonction hash() prend un objet en paramètre et renvoie sa valeur de hachage. La notion de hash, ou hachage, est un processus par lequel on transforme un objet en une valeur unique et de taille fixe, appelée valeur de hachage ou hash. Cette transformation est effectuée par une fonction de hachage, qui est conçue de manière à ce que des objets différents produisent des valeurs de hachage distinctes. Par contre, deux données identiques doivent renvoyer la même valeur. Le hachage est utilisé dans divers domaines, tels que la cryptographie, la vérification de l'intégrité des données et l'optimisation des structures de données comme les dictionnaires ou les ensembles en Python.

voici quelques propriétés importantes des fonctions de hachage :
  • Déterminisme : pour un même objet donné, la fonction de hachage doit toujours renvoyer la même valeur de hachage.

  • Uniformité : les valeurs de hachage générées par la fonction de hachage doivent être uniformément réparties, c'est-à-dire qu'il y a peu de chance que deux objets différents produisent la même valeur de hachage (gestion des collisions).

  • Rapidité : la fonction de hachage doit être rapide à calculer pour optimiser les opérations qui en dépendent.

>>> hash("Hello World")
6891305847555103230
>>> hash(3.5)
1152921504606846979
>>> 

Si la fonction est invoquée sur un objet, alors elle y invoquera la méthode __hash__. Si tel est le cas, sachez que la fonction hash() pourra tronquer la valeur de retour en fonction de la largeur en bits de la machine hôte.

les types de données Python ne sont pas tous « hashable ». Si une classe ne fournit pas la méthode __hash__, alors ses instances ne pourront être traitées par la fonction hash.
>>> str.__hash__
<slot wrapper '__hash__' of 'str' objects>
>>> hash("Hello World")
6891305847555103230
>>> 
>>> dict.__hash__ is None
True
>>> hash({"a": 1, "b": 3})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'dict'
>>> 

help(builtins.hash)

Return the hash value for the given object.

Two objects that compare equal must also have the same hash value, but the
reverse is not necessarily true.

Paramètre

ParamètreDescription
 instance : object 
L'objet dont on veut obtenir la valeur de hachage.

Valeur de retour

La valeur de retour est de type str.

Elle correspond à la valeur de hachage de l'objet donné.

Exception

Exemple(s) de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
#!/usr/bin/python

string_object = "Hello World"
integer_object = 42
tuple_object = (1, 2, 3)

hash_string = hash(string_object)
hash_integer = hash(integer_object)
hash_tuple = hash(tuple_object)

print(f"Hash of '{string_object}': {hash_string}")
print(f"Hash of {integer_object}: {hash_integer}")
print(f"Hash of {tuple_object}: {hash_tuple}")
Exemple d'utilisation de la fonction hash.

Et voici les résultats produits par cet exemple.

$> python sample.py
Hash of 'Hello World': 6891305847555103230
Hash of 42: 42
Hash of (1, 2, 3): 529344067295497451
$> 

Voir aussi

Classe dict
Classe set