擅长:python、mysql、java
<p>引用三次的不是<code>astrd</code>,而是值<code>123</code>。<code>astrd</code>只是(不可变)数字123的名称,它可以被引用多次。此外,小整数通常是共享的:</p>
<pre><code>>>> astrd = 123
>>> sys.getrefcount(astrd)
4
>>> j = 123
>>> sys.getrefcount(astrd)
5
</code></pre>
<p>在第二个赋值中,不创建新的整数,<code>j</code>只是整数<code>123</code>的一个新名称。在</p>
<p>但是,对于非常大的整数,这不适用于:</p>
^{pr2}$
<p>共享整数是CPython(除其他外)的实现细节。由于小整数经常被实例化,共享它们可以节省大量内存。这是因为整数首先是不可变的。在</p>
<p>对于第二个示例中的附加引用,请参见<a href="https://stackoverflow.com/questions/759740/sys-getrefcount/759763#759763">codeape's answer</a>。在</p>