擅长:python、mysql、java
<p>对于旧的python(至少是我的python 2.7),似乎</p>
<pre><code>hash(<some type>) = id(<type>) / 16
</code></pre>
<p>对于CPython<code>id()</code>是内存中的地址-<a href="http://docs.python.org/2/library/functions.html#id" rel="noreferrer">http://docs.python.org/2/library/functions.html#id</a></p>
<pre><code>>>> id(int) / hash(int)
16
>>> id(int) % hash(int)
0
</code></pre>
<p>所以我猜Android端口对内存地址有一些奇怪的约定?</p>
<p>无论如何,考虑到上述情况,类型的散列(以及我猜的其他内置)在不同的安装中会有所不同,因为函数位于不同的地址。</p>
<p>相比之下,值的散列(我认为您所说的“非内部对象”(在添加随机对象之前)是根据它们的值计算的,因此很可能是可重复的。</p>
<p>不过,至少还有一个CPython皱纹:</p>
<pre><code>>>> for i in range(-1000,1000):
... if hash(i) != i: print(i)
...
-1
</code></pre>
<p>这里有个答案可以解释。。。</p>