13
我正在面對Python上散列函數的一個非常奇怪的行爲。當我在Mac OS(10.10)上運行以下命令時,會從不同的調用中獲得不同的值。爲什麼散列(無)在不同的平臺和不同的調用中改變?
$ python -c "print hash(None)"
-9223372036579216774
$ python -c "print hash(None)"
-9223372036582852230
在另一方面,當我在Ubuntu 14.04上運行同樣的事情,我得到:
$ python -c "print hash(None)"
596615
$ python -c "print hash(None)"
596615
對於我來說,它看起來像,在OS X,Python是莫名其妙地使用內存地址和Ubuntu是不。從這我可以看到哈希函數可能是實現相關的。但是,它不應該只基於None的「價值」嗎?這些數字代表什麼?爲什麼即使在相同的Python版本上,但在不同的操作系統上,其行爲也不同?
相關:http://stackoverflow.com/q/7681786/1639625 –
Python的哪個版本? – jonrsharpe
@tobias_k謝謝,我看到了。但它並沒有告訴我爲什麼它在兩個操作系統上表現不同。 –