在Android实现上运行时,为什么Python哈希函数没有给出相同的值?

在Android实现上运行时,为什么Python哈希函数没有给出相同的值?,第1张

在Android实现上运行时,为什么Python哈希函数没有给出相同的值?

对于旧的python(至少是我的python 2.7),似乎

hash(<some type>) = id(<type>) / 16

并且对于CPython

id()
是内存中的地址-http :
//docs.python.org/2/library/functions.html#id

>>> id(int) / hash(int)         16 >>> id(int) % hash(int)     0

所以我的猜测是Android端口对内存地址有一些奇怪的约定吗?

无论如何,鉴于以上所述,类型(和其他内置函数)的哈希值在安装过程中会有所不同,因为函数位于不同的地址。

相比之下,值的哈希值(我认为您所说的“非内部对象”是指)(在添加随机对象之前)是根据值的哈希值计算的,因此很可能是可重复的。

PS,但至少还有一个CPython折皱

>>> for i in range(-1000,1000):...     if hash(i) != i: print(i)...-1

在某处有一个答案来解释那个…



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5646170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存