hash() オブジェクトのハッシュ値
最終更新:2026-09-22
hash() オブジェクトのハッシュ値
hash() はオブジェクトの整数ハッシュ値(ハッシュ可能オブジェクト)を返す。同一オブジェクト(a is b)は必ず同じハッシュを持つ。
| カテゴリ | 組み込み関数 |
|---|---|
| 種類 | 組み込み関数 |
| Python バージョン | all |
📝 構文
hash(object)
⚙️ 引数
| object 必須 | The object to hash; it must be hashable. |
|---|
戻り値:The integer hash of the object; equal objects always hash equal.
💥 例外
TypeError— Raised when the object is unhashable (e.g. list, dict, set).
▶ 例
下のコードを編集し「実行」をクリックすると、出力パネルに結果が表示されます:
実行結果:
529344067295497451
ℹ️ 説明 不変コンテナは通常ハッシュ可能。list / set / dict はハッシュ不可能。
💡 関連するケース
さらに多くのケースは近日公開予定です。
❓ よくある質問
Qなぜ hash([1, 2]) は TypeError になるのですか?
Alist は可変で内容を変更できるため、ハッシュの安定性を保証できず、ハッシュ化不可です。dict や set も同様にハッシュ化不可です。
Qどのオブジェクトがハッシュ化可能ですか?
A不変型は通常ハッシュ化可能です:int、float、str、bytes、tuple、frozenset、None など。tuple でも中に list を含む場合はハッシュ化不可です。
Q等しいオブジェクトのハッシュは必ず同じですか?
A一方向には必ず同じです:a == b なら hash(a) == hash(b)。ただし逆は保証されません。異なるオブジェクトでもハッシュが衝突する可能性があります(ハッシュが同じ=等しいとは限らない)。
Q毎回プログラムを実行しても hash('abc') の結果は同じですか?
A同じとは限りません。文字列ハッシュは既定でランダマイズ(PYTHONHASHSEED)されるため、プロセス間で安定しません。ハッシュ値を永続化やプロセス間の受け渡しに使わないでください。