栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

对Python的id()感到困惑

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对Python的id()感到困惑

通常,一旦您使用整数或字符串或任何其他文字,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运行时始终保持相同)。这是为了避免重复创建和破坏常用整数而进行的优化。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/650723.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号