def hash(instance: object) -> int
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.
__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' >>>
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 | Description |
---|---|
instance : object |
L'objet dont on veut obtenir la valeur de hachage. |
La valeur de retour est de type str.
Elle correspond à la valeur de hachage de l'objet donné.
TypeError :Une exception de ce type sera déclenchée si le type de la donnée passée en paramètre n'est pas hashable (dit autrement, s'il ne propose pas la méthode
__hash__
).
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}") |
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 $>
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 :