Pythonにおけるhash(-1) == hash(-2)の不思議なケース

2025-01-10

Redditで、Pythonにおいて`hash(-1) == hash(-2)`となる理由についての質問が投稿され、調査が始まりました。CPythonのソースコードを調べた結果、-1が`PyObject_Hash`関数においてエラーを示す指標として使用されていることが分かりました。そのため、計算結果が-1の場合、-2に変換されます。これはPythonのイースターエッグではなく、CPythonのCコードがエラーを処理する方法によるものです。