Nis*_*sba 1 python hash objectid
该id()
函数的Python文档说
id(object)返回对象的"标识".这是一个整数,在该生命周期内保证该对象是唯一且恒定的.具有非重叠生存期的两个对象可以具有相同的id()值.
因此,实际上,它保证了作为哈希函数的唯一性,但仅在对象生命周期内,并且没有哈希难以重构的酷事.
为什么要使用id()
?
hash
对于相等的对象是相等的,即使对于不相等的对象也可能是相等的.hash
对于可变对象甚至不存在.
id
保证对象在其生命周期内是唯一的,并且它不关心变异.
用例完全不同.
>>> x, y, z = 1, 1.0, [1]
>>> hash(x), hash(y)
(1, 1)
>>> hash(z)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> id(x), id(y)
(10832608, 139668416746072)
>>> id(z)
139668282136008
>>> z.append(2)
>>> id(z)
139668282136008
>>> hash(-1), hash(-2)
(-2, -2)
Run Code Online (Sandbox Code Playgroud)