Ich habe ein wirklich seltsames Verhalten mit der Hash-Funktion auf Python. Wenn ich den folgenden Befehl unter Mac OS (10.10) ausführe, bekomme ich unterschiedliche Werte von verschiedenen Anrufen.Warum ändert sich Hash (None) auf verschiedenen Plattformen und in verschiedenen Aufrufen?
$ python -c "print hash(None)"
-9223372036579216774
$ python -c "print hash(None)"
-9223372036582852230
In der anderen Hand, wenn ich die gleiche Sache auf Ubuntu 14.04 laufen erhalte ich:
$ python -c "print hash(None)"
596615
$ python -c "print hash(None)"
596615
Für mich ist es wie folgt aussieht, in OS X, Python die Speicheradresse irgendwie verwendet, und Ubuntu nicht. Daraus kann ich ersehen, dass die Hash-Funktion wahrscheinlich implementierungsabhängig ist. Aber sollte es nicht nur auf dem "Wert" von None basieren? Was bedeuten diese Zahlen? Warum verhält es sich selbst auf der gleichen Python-Version anders als auf anderen Betriebssystemen?
Verwandte: http://stackoverflow.com/q/7681786/1639625 –
Welche Version (en) von Python? – jonrsharpe
@tobias_k Danke, das habe ich gesehen. Aber es sagt mir nicht, warum es sich auf beiden Betriebssystemen anders verhält. –