python – hashlib – 为什么摘要匹配但是裸对象不匹配?

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

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

返回false.但…

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

返回true.我理解hexdigest / digest返回最后的字符串表示,但由于相同的数据已直接输入到两个哈希对象中,它们不应该评估为彼此相等吗?当调用magic __eq__方法时,md5 HASH对象不会意识到内部标识吗?为什么对象本身会评估不平等?真的很好奇.

最佳答案 hashlib.md5对象没有相等比较,因此它们是不同的对象,结果为false.

.hexdigest方法生成一个字符串(如果你在Python 3上,则生成字节串),并且可以比较字符串.

BTW:

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