python乱炖5——id()函数

python乱炖5------id()函数


文章目录


id()

Python 中的 id() 函数用于获取对象的唯一标识

id(object)

  • 参数:object - 任何 Python 对象
    返回值:一个整数,表示该对象的唯一标识
复制代码
a = 10
b = 10
print(id(a))  # 输出 a 的 ID
print(id(b))  # 输出 b 的 ID

c = [1, 2, 3]
d = [1, 2, 3]
print(id(c))  # 输出 c 的 ID
print(id(d))  # 输出 d 的 ID

在示例中,a 和 b 都指向整数 10,因为在 Python 中,小整数对象(通常在 -5 到 256 之间)是被缓存的,所以 a 和 b 的 ID 相同。

c 和 d 是两个独立的列表对象,即使它们的内容相同,它们的 ID 也不同。


内存分配

  • 不可变对象(如 int、float、str、tuple)一旦创建,就不能改变。如果你尝试修改不可变对象,Python 会创建一个新的对象,并分配新的内存。例如:

    x = 10
    print(id(x)) # 打印 x 的 ID

    x = x + 5
    print(id(x)) # 打印修改后 x 的 ID

x 的值从 10 变为 15,虽然我们看起来是修改了 x,但实际上 Python 为 15 创建了一个新的对象,并将 x 指向这个新的对象。由于整数是不可变的,所以对 x 的修改实际上是一个新的分配。

  • 可变对象(如 list、dict、set)的内容是可以修改的。如果你改变了一个可变对象的内容,不会创建新的对象,而是在原有的内存地址上进行修改

    lst = [1, 2, 3]
    print(id(lst)) # 打印 lst 的 ID

    lst.append(4)
    print(id(lst)) # 打印修改后 lst 的 ID

在这段代码中,lst 是一个列表(可变对象)。当我们使用 append 方法向列表中添加元素时,列表的 ID 并没有改变。这是因为可变对象在原有的内存地址上进行了修改,而没有创建新的对象

相关推荐
老歌老听老掉牙2 分钟前
基于STL模型的轴向截面轮廓提取与三维可视化方法
python·stl
yi01111 分钟前
DAY22: LeetCode 733:图像渲染——从二维网格开始理解 DFS 和 BFS
数据结构·笔记·python·算法·leetcode·深度优先·宽度优先
Είναι η κοπέλα44 分钟前
llama.cpp 与 GGUF 格式:本地大模型的“裸引擎“
开发语言·人工智能·pytorch·python·conda
大草原的小灰灰1 小时前
Python面向对象编程
开发语言·python
华研前沿标杆游学1 小时前
企业参访入口 | 走进华为坂田基地,深圳华为坂田基地考察游学参访
python
朝朝辞暮i2 小时前
VLA 系统学习第 12 课:为什么机器人不能只看一帧?——时间序列、Observation History 与 Action Chunk
人工智能·python·深度学习·神经网络·vla
朝朝辞暮i2 小时前
VLA 系统学习第 8 课:Optimizer 到底在干什么?——从 Learning Rate 到 SGD、Momentum 和 Adam
人工智能·python·深度学习·神经网络·vla
镜子AI2 小时前
教培机构多模态内容跨模态检索系统:基于CLIP的统一表征与图文混合召回算法
人工智能·python·算法·机器学习
落魄大学生之流水线上谋生计2 小时前
Selenium 入门到实战:用 Python 写出稳定的浏览器自动化
python·selenium·自动化
汤米粥2 小时前
后端开发主流技术方案
java·python·golang·php·nodejs·后端开发