Python id() 函数
id() 是 Python 中用于获取对象唯一标识符的内置函数。
在 Python 中,每个对象都有一个唯一的整数标识符,这个标识符在对象的生命周期内是唯一的且恒定的。id() 返回这个标识符,通常对应对象的内存地址。
单词释义: id 是 identifier(标识符)的缩写。
基本语法与参数
语法格式
id(object)
参数说明
- 参数 object:
- 类型: 任意对象
- 描述: 要获取标识符的对象。
函数说明
- 返回值: 返回一个整数,表示对象的唯一标识符。
- 特点: 在对象的生命周期内,id 是恒定不变的。
实例
示例 1:基础用法
实例
# 查看整数的 id
a = 10
print(id(a)) # 输出: 一个整数,如 4302400000
# 查看字符串的 id
s = "hello"
print(id(s)) # 输出: 一个整数
# 查看列表的 id
lst = [1, 2, 3]
print(id(lst)) # 输出: 一个整数
a = 10
print(id(a)) # 输出: 一个整数,如 4302400000
# 查看字符串的 id
s = "hello"
print(id(s)) # 输出: 一个整数
# 查看列表的 id
lst = [1, 2, 3]
print(id(lst)) # 输出: 一个整数
运行结果预期:
返回对象的唯一标识符(整数)。
代码解析:
- 每个对象都有唯一的 id。
- 不同对象的 id 通常不同。
示例 2:验证对象同一性
实例
# 同一对象多次引用
a = [1, 2, 3]
b = a
print(id(a) == id(b)) # 输出: True(a 和 b 指向同一对象)
# 复制对象
a = [1, 2, 3]
b = a.copy()
print(id(a) == id(b)) # 输出: False(a 和 b 是不同对象)
# 整数缓存(小整数)
a = 256
b = 256
print(id(a) == id(b)) # 输出: True(小整数被缓存)
a = 257
b = 257
print(id(a) == id(b)) # 输出: False(大整数不缓存)
a = [1, 2, 3]
b = a
print(id(a) == id(b)) # 输出: True(a 和 b 指向同一对象)
# 复制对象
a = [1, 2, 3]
b = a.copy()
print(id(a) == id(b)) # 输出: False(a 和 b 是不同对象)
# 整数缓存(小整数)
a = 256
b = 256
print(id(a) == id(b)) # 输出: True(小整数被缓存)
a = 257
b = 257
print(id(a) == id(b)) # 输出: False(大整数不缓存)
运行结果预期:
True False True False
代码解析:
- 使用
==比较 id 可以判断是否是同一对象。 - Python 会对小整数(-5 到 256)进行缓存,所以相同值的变量可能共享 id。
示例 3:实际应用
实例
# 检查是否是同一对象
def check_same_object(a, b):
return id(a) == id(b)
# 测试
list1 = [1, 2, 3]
list2 = list1
list3 = [1, 2, 3]
print(check_same_object(list1, list2)) # 输出: True
print(check_same_object(list1, list3)) # 输出: False
# 作为字典键(虽然不常用)
d = {}
obj = object()
d[obj] = "value"
print(d[obj]) # 输出: value
# 调试时查看对象
class Person:
pass
p = Person()
print(f"对象 id: {id(p)}")
print(f"类 id: {id(Person)}")
def check_same_object(a, b):
return id(a) == id(b)
# 测试
list1 = [1, 2, 3]
list2 = list1
list3 = [1, 2, 3]
print(check_same_object(list1, list2)) # 输出: True
print(check_same_object(list1, list3)) # 输出: False
# 作为字典键(虽然不常用)
d = {}
obj = object()
d[obj] = "value"
print(d[obj]) # 输出: value
# 调试时查看对象
class Person:
pass
p = Person()
print(f"对象 id: {id(p)}")
print(f"类 id: {id(Person)}")
运行结果预期:
True False value 对象 id: ... 类 id: ...
id() 主要用于调试、检查对象同一性、理解 Python 内存管理等方面。
Python3 内置函数
点我分享笔记