我想知道在 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/