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

识别对象,为什么id(...)返回的值发生变化?

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

识别对象,为什么id(...)返回的值发生变化?

由于整数是不可变的,因此每个整数值都是具有唯一ID的不同对象。整数

10
与的ID不同
11
。这样
j=j+1
做不会更改现有整数对象的值,而是会更改
j
为指向的对象
11

看看当我们独立创建一个新变量

k
并为其分配值时会发生什么
11

>>> j=10>>> id(j)8402204>>> j=j+1>>> id(j)8402192>>> k=11>>> id(k)8402192

请注意,并非每个整数都只有一个并且只有一个对应的对象。这仅适用于Python决定缓存的小整数。对于大整数不会发生:

>>> x = 123456789>>> id(x)8404568>>> y = 123456789>>> id(y)8404604

参见https://docs.python.org/3/c-api/long.html#c.PyLong_FromLong:

当前的实现为-5到256之间的所有整数保留一个整数对象数组,当您在该范围内创建int时,实际上实际上是返回对现有对象的引用。



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

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

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