我想知道在 python 2.7 中观察到的行为的实际原因是什么:

import hashlib
hashlib.md5('foo') == hashlib.md5('foo')

返回假。但...
import hashlib
hashlib.md5('foo').hexdigest() == hashlib.md5('foo').hexdigest()

返回真。我知道 hexdigest/digest 返回最终的字符串表示,但是由于相同的数据已直接输入到两个哈希对象中,它们不应该彼此评估吗?当神奇的 md5 HASH 方法被调用时, __eq__ 对象不会知道内部身份吗?对象本身会出于什么原因评估不平等?真的只是好奇。

最佳答案

hashlib.md5 对象没有相等比较,因此,由于它们是不同的对象,结果为假。
.hexdigest 方法生成一个字符串(或字节字符串,如果您使用的是 Python 3)并且可以比较字符串。

顺便提一句:

x = hashlib.md5('foo')
x == x # is True because it's the same object

关于python - hashlib - 为什么摘要匹配但裸对象不匹配?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11252911/

10-12 23:10