3

int.__hash__単純に値を返すようにするのが妥当に思えます。案の定、それが CPython の実装方法のようです:

>>> hash(1)
1
>>> hash(2)
2
>>> hash(123456789)
123456789
>>> hash(-123456789)
-123456789

わかりました、これはすべてのほとんどの整数 xに当てはまりますか?

>>> [x for x in range(-10000, 10000) if hash(x) != x]
[-1]

は?

>>> hash(-1)
-2

なぜ-1この規則の例外なのですか?

4

1 に答える 1