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 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