python - 十六进制和十进制中的相同数字返回不同的 id
问题描述
如果使用相同的值,我假设id()
python 中的不可变数据类型应该是相同的
但是,如果我存储相同整数的十进制和十六进制版本,这将失败:
In [1]: a = 0x1234
In [2]: b = 4660
In [3]: a == b
Out[3]: True
In [4]: id(a) == id(b)
Out[4]: False
In [5]: id(a)
Out[5]: 140579138155600
In [6]: id(b)
Out[6]: 140579138154736
为什么?
解决方案
这与转换无关,每次您分配一个大整数时,Python 解释器都会创建对象,因此它们具有不同的对象。解释器启动时会创建 -1 到 255 之间的数字,并且它们id
在所有程序中都相同。
推荐阅读
- c++ - 如何使用游标从查询中获取所有结果?
- utf-8 - 使用特殊字符执行 COPY INTO TABLE 时出现问题
- java - 如何在工具栏中的项目上设置点击事件?
- visual-studio-2017 - SonarLint 从分析中排除不起作用
- python - 抓取/下载图像但抓取唯一图像时抓取返回重复的项目字段
- mysql - UUID 主键未按预期与标准 existsById Jpa 映射
- arrays - Postgresql 可以使用步长访问 ARRAY 切片,即。返回一个下采样的数组?
- python - 均衡分散 3D 分布的高度(Python)
- apache-spark - 如何确定 Apache Spark 数据帧中的分区大小
- javascript - 获取一个数组,删除对象的一些值