Wie wird ein Hash-Wert einer bestimmten Zeichenfolge in CPython2.7 berechnet?Python Hash() Funktion auf Strings
Zum Beispiel dieser Code:
print hash('abcde' * 1000)
den gleichen Wert zurückgibt, auch nachdem ich den Python-Prozess neu starten, und versuchen Sie es erneut (ich habe es viele Male).
So scheint es, dass id()
(Speicheradresse) der String nicht in dieser Berechnung verwendet wird, nicht wahr? Wie dann?
„gibt den gleichen Wert auch nachdem ich das Python-Prozess und versuchen Sie es erneut starten“ - nicht garantiert, und in der Regel nicht wahr auf Python 3. "Es scheint, dass ID() (Speicheradresse) der Zeichenfolge nicht in dieser Berechnung verwendet wird" - na ja, natürlich nicht. Andernfalls hätten wir nicht die Invariante, dass "a == b" impliziert "hash (a) == hash (b)". – user2357112
Ich denke, Sie müssen 'help (hash)' und 'help (id)' ausführen, um den Unterschied zwischen den beiden zu verstehen, weil sie nicht gleich sind ... –
Vielleicht wird dieser Thread etwas Licht vergießen? http://stackoverflow.com/questions/6008026/how-hash-is-implemented-in-python-3-2 – BorrajaX