Ram*_*hum 12 python hash caching
我写了一个类,其.__hash__()实现需要很长时间才能执行.我一直在考虑缓存它的哈希值,并将其存储在一个变量中,._hash因此该.__hash__()方法只会返回._hash.(将.__init__()在第一次或第一次结束时计算.__hash__().)
我的理由是:"这个对象是不可变的 - >它的哈希值永远不会改变 - >我可以缓存哈希值."
但现在让我思考:你可以对任何可清洗对象说同样的话.(除了散列为其id的对象外.)
那么有没有理由不缓存对象的哈希值,除了哈希计算速度非常快的小对象?
Tho*_*ers 10
当然,缓存哈希值很好.实际上,Python对字符串本身也这样做.权衡取决于哈希计算的速度和保存哈希值所需的空间.这种权衡是例如为什么元组不缓存它们的哈希值,但是字符串呢(参见增强请求#1462796).