擅长:python、mysql、java
<p>这是因为CPython在内部保留了一个已经创建的整数对象,并且内部变量指向它。
只有一个这样的对象是有意义的,因为它是不可变的。在</p>
<p>同样的事情也适用于字符串文本,因为它们是不可变的编译器,通常在内存中保存一个唯一的字符串并使变量指向它。在</p>
<p>文字越独特,内部创建的机会就越小。在</p>
<pre><code>>>> sys.getrefcount(1337)
3
>>> sys.getrefcount('p')
14
>>> sys.getrefcount('StackOverflow')
3
</code></pre>
<p>正如您在这里的内部结构中看到的,一些小整数对象被创建并缓存以进行一些小的优化。
<a href="https://github.com/python/cpython/blob/2.7/Objects/intobject.c#L74" rel="nofollow noreferrer">https://github.com/python/cpython/blob/2.7/Objects/intobject.c#L74</a></p>