Python hash() 関数
hash()オブジェクトのハッシュ値を返すためのPythonの組み込み関数です。
ハッシュ値はオブジェクトを高速に比較するための整数です。辞書のキーと集合の要素は、すべてハッシュ可能(hashable)であることが要求されます。不変オブジェクトは通常ハッシュ可能です。
単語の意味: hash 意为"哈希",返回对象的哈希值。
基本構文とパラメータ
構文形式
hash(object)
パラメータの説明
- パラメータ object:
- 型: 任意のオブジェクト
- 説明: ハッシュ値を計算するオブジェクト。
関数の説明
- 戻り値: オブジェクトのハッシュ値(整数)を返します。
- 要件: オブジェクトはハッシュ可能でなければなりません(つまり __hash__ メソッドを実装している必要があります)。
例
例1:基本的な使い方
例
# 数値
print(hash(1)) # 出力: 1
print(hash(3.14)) # 出力: 314159
print(hash(-100)) # 出力: -100
# 文字列
print(hash("hello")) # 出力: ハッシュ値
print(hash("world")) # 出力: 別のハッシュ値
# タプル(ハッシュ可能)
print(hash((1, 2, 3))) # 出力: ハッシュ値
# リスト(ハッシュ不可能)
# print(hash([1, 2, 3])) # TypeError がスローされます
print(hash(1)) # 出力: 1
print(hash(3.14)) # 出力: 314159
print(hash(-100)) # 出力: -100
# 文字列
print(hash("hello")) # 出力: ハッシュ値
print(hash("world")) # 出力: 別のハッシュ値
# タプル(ハッシュ可能)
print(hash((1, 2, 3))) # 出力: ハッシュ値
# リスト(ハッシュ不可能)
# print(hash([1, 2, 3])) # TypeError がスローされます
実行結果の予想:
同じ値のオブジェクトは常に同じハッシュ値を持ちます。
例2:辞書とセットでの使用
例
# 辞書のキーはハッシュ可能でなければなりません
d = {"name": "Tom", "age": 20}
print(d["name"]) # 出力: Tom
# 集合の要素はハッシュ可能でなければなりません
s = {1, 2, 3, "hello"}
print(3 in s) # 出力: True
# カスタムクラスのハッシュ
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __hash__(self):
return hash((self.x, self.y))
p = Point(1, 2)
print(hash(p)) # 出力: ハッシュ値
d = {"name": "Tom", "age": 20}
print(d["name"]) # 出力: Tom
# 集合の要素はハッシュ可能でなければなりません
s = {1, 2, 3, "hello"}
print(3 in s) # 出力: True
# カスタムクラスのハッシュ
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __hash__(self):
return hash((self.x, self.y))
p = Point(1, 2)
print(hash(p)) # 出力: ハッシュ値
実行結果:
ハッシュ値により、オブジェクトは辞書のキーや集合の要素として使用できます。
hash()これは Python におけるハッシュ関連操作の基礎です。
その他の拡張