通常,一旦您使用整数或字符串或任何其他文字,Python就会在您的内存中创建一个新对象。保证
id在对象的生存期内具有相同的值,即,其引用计数不为零。
当您编写类似的内容时:
>>> id(1000)140497411829680
Python创建整数1000并返回其
id(CPython中对象的内存地址)。完成此 *** 作后,整数对象1000的引用计数为零,并将其删除。这样可以确保您不能仅通过写入
id(something)(也不能将任何变量名绑定到对象)来保持填充内存。
通常,您无法预测何时会发生重用,但是在我的Python Shell中,它会相当一致地发生:
>>> id(1000)140697307078576>>> id(1001)140697307078576>>> id(1002)140697307078576>>> id(1003)140697307078576
您会看到在创建每个新整数时,一次又一次使用相同的内存地址。但是,如果您防止引用计数下降到零,则可以看到使用了新的内存:
>>> a = 1000>>> id(a)140697307078576>>> b = 1001>>> id(b)140697306008368
在CPython中,整数-5到255是特殊情况,因为它们 始终
存在(因此
id在Python运行时始终保持相同)。这是为了避免重复创建和破坏常用整数而进行的优化。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)