python - int 和 tuple 的对象内存分配
问题描述
当我检查id(10)
两次(int类型的对象)时,解释器给出了相同的结果。但是,当我尝试对 进行相同操作时tuple object (1,2,3)
,尽管 int 和 tuple 都是不可变的,但我得到了不同的答案。我能知道发生这种情况的原因吗?
解决方案
int
s 在 Python 中有一个非常特殊的行为,直到 257 为止,都没有分配新的对象。拿着这个:
>>> a, b = 257, 257
>>> id(a)
140640774013296
>>> id(b)
140640774013296
但是当你这样做时:
>>> a = 258
>>> b = 258
>>> id(a)
140410944685744
>>> id(b)
140410944685872
请注意,id 是不同的,同样不适用于每次创建新对象的元组。
推荐阅读
- lua - G19罗技重复键lua脚本
- mysql - 从下表中找出 2 月份入职的员工姓名
- c# - log4net:如何从 SQL Server 数据库中读取配置?
- ruby - 您没有 /usr/lib/ruby/gems/2.7.0 目录的写权限(Alpine linux docker image)
- docker - 无法从同一网络中的另一个容器访问 Postgress(在容器中)
- python-3.x - 使用 MDToolbar 时出现 Kivymd 参考错误
- android - 新的沉浸式模式实现在 Android 11 中不包括(使用)状态栏
- java - 在Java中根据它们的大小附加列表
- python - 您如何在 Google Collab 中缩进 - Windows
- typescript - noFallthroughCasesInSwitch - 明确允许通过