Python hash()方法
Python hash()函数是一个内置函数,如果对象有哈希值,则返回该对象的哈希值。哈希值是一个整数,用于在查看字典时快速比较字典键。
Python hash()方法语法:
语法:杂凑(obj)
参数:obj : 我们需要转换成 hash 的对象。
返回:如果可能,返回散列值。
hash()函数的属性
- 使用 hash()散列的对象是不可逆的,会导致信息丢失。
- hash()只为不可变对象返回哈希值,因此可以用作检查可变/不可变对象的指示器。
Python 哈希()方法示例
示例 1: 演示哈希()的工作原理
Python 3
# Python 3 code to demonstrate
# working of hash()
# initializing objects
int_val = 4
str_val = 'GeeksforGeeks'
flt_val = 24.56
# Printing the hash values.
# Notice Integer value doesn't change
# You'l have answer later in article.
print("The integer hash value is : " + str(hash(int_val)))
print("The string hash value is : " + str(hash(str_val)))
print("The float hash value is : " + str(hash(flt_val)))
输出:
The integer hash value is : 4
The string hash value is : -5570917502994512005
The float hash value is : 1291272085159665688
示例 2: 演示哈希()的属性
Python 3
# Python 3 code to demonstrate
# property of hash()
# initializing objects
# tuple are immutable
tuple_val = (1, 2, 3, 4, 5)
# list are mutable
list_val = [1, 2, 3, 4, 5]
# Printing the hash values.
# Notice exception when trying
# to convert mutable object
print("The tuple hash value is : " + str(hash(tuple_val)))
print("The list hash value is : " + str(hash(list_val)))
输出:
The tuple hash value is : 8315274433719620810
异常:
Traceback (most recent call last):
File "/home/eb7e39084e3d151114ce5ed3e43babb8.py", line 15, in
print ("The list hash value is : " + str(hash(list_val)))
TypeError: unhashable type: 'list'
示例 3:不可变元组对象的 hash()
Python 3
# hash() for immutable tuple object
var = ('G','E','E','K')
print(hash(var))
输出:
5434435027328283763
示例 4:在可变对象上散列()
在不可变对象上使用的 hash()方法,如果我们在像 list、set、dictionaries 这样的可变对象上使用这个方法,那么它会产生一个错误。
Python 3
l = [1, 2, 3, 4]
print(hash(l))
输出:
TypeError: unhashable type: 'list'
示例 5:自定义对象上的哈希()
这里我们将重写 hash() 方法来调用 hash(),而 eq()方法将检查两个自定义对象的相等性。
Python 3
class Emp:
def __init__(self, emp_name, id):
self.emp_name = emp_name
self.id = id
def __eq__(self, other):
# Equality Comparison between two objects
return self.emp_name == other.emp_name and self.id == other.id
def __hash__(self):
# hash(custom_object)
return hash((self.emp_name, self.id))
emp = Emp('Ragav', 12)
print("The hash is: %d" % hash(emp))
# We'll check if two objects with the same
# attribute values have the same hash
emp_copy = Emp('Ragav', 12)
print("The hash is: %d" % hash(emp_copy))
输出:
The hash is: -674930604243231063
The hash is: -674930604243231063
版权属于:月萌API www.moonapi.com,转载请注明出处