我对使用Python 2.7.4
得到的以下结果感到惊讶:
>>> id(5)
5068376
>>> id(5)
5068376
计算表达式5时,将创建标识为5068376的新对象。现在,我希望重复相同的语句将创建另一个新对象,其标识将是唯一的,因为简单地计算表达式不会产生对该对象的任何引用,并且该对象应该被垃圾收集。你知道吗
解释器也不是在重复使用相同的内存地址:
>>> id(6)
5068364
>>> id(5)
5068376
那是什么原因呢?解释器是否进行文本的幕后绑定?你知道吗
Tags:
在Python中有一系列小的数字作为单例保存;任何引用都将始终返回相同的对象,并且它们永远不会被垃圾收集。你知道吗
这里有两件事:
小的Python整数(从-5到256,包括-5到256)是内部的;一个文本整数被转换成相同数字的完全相同的对象。对于这些整数,它们的
id()
是常数。id()
仅在对象的生存期内是唯一的;如果第一个对象再次被清除,则可以在以后对另一个对象重用它。您不会将文本存储在任何地方,因此可以再次重用内存地址:这里
'foo bar'
和'bar baz'
是两个不同的对象,但它们的生命周期并不重叠。第一个是创建的,传递给id()
函数,然后再次销毁。然后创建第二个字符串,传递给id()
,然后依次销毁。相关问题 更多 >
编程相关推荐