Python hash() la fonction sur les chaînes de
Comment fonctionne une valeur de hachage de certains chaîne donnée est calculé en CPython2.7?
Par exemple, ce code:
print hash('abcde' * 1000)
renvoie la même valeur, même après avoir redémarrer le Python processus et essayez à nouveau (je l'ai fait à de nombreuses reprises).
Donc, il semble que id()
(adresse mémoire) de la chaîne n'est pas utilisée dans ce calcul, non? Alors comment?
"retourne la même valeur, même après avoir redémarrer le Python processus et essayez de nouveau" - n'est pas garanti, et généralement pas le cas sur Python 3. "il semble que l'id (le) (adresse mémoire) de la chaîne n'est pas utilisée dans ce calcul" - bien, bien sûr que non. Sinon, nous n'aurions pas l'invariant que
Je pense que vous avez besoin pour exécuter
Peut-être que ce thread va jeter un peu de lumière? stackoverflow.com/questions/6008026/...
merci, je vais jeter un oeil
Aussi pertinent: stackoverflow.com/q/19580412/1959808
a == b
implique hash(a) == hash(b)
.Je pense que vous avez besoin pour exécuter
help(hash)
et help(id)
de comprendre la différence entre les deux parce qu'ils ne sont pas les mêmes...Peut-être que ce thread va jeter un peu de lumière? stackoverflow.com/questions/6008026/...
merci, je vais jeter un oeil
Aussi pertinent: stackoverflow.com/q/19580412/1959808
OriginalL'auteur d-d | 2016-10-28
Vous devez vous connecter pour publier un commentaire.
Valeurs de hachage sont ne dépend pas de l'emplacement de la mémoire, mais le contenu de l'objet lui-même. À partir de la la documentation:
Vous pouvez consulter le code source Disponible pour la mise en œuvre de la
hash
méthode destr
classe ici:https://svn.python.org/projects/python/trunk/Objects/stringobject.c
Non, il n'est pas garanti d'être le même à chaque fois, mais il est garanti à retourner la même valeur dans le même processus. Si vous voulez un non-changement de hachage, utiliser les hashlib les fonctions de la place.
ouais, j'y ai pensé, mais j'ai besoin de quelque chose de plus rapide que n'importe quelle fonction de hachage dans ce module. peut-être murmure de hachage ou alors..
Découvrez les différentes fonctions de hachage here
OriginalL'auteur Selcuk