在 Python 中获取对象的唯一 ID

在 Python 中获取对象的唯一 ID

Get an object’s unique ID in Python

使用该id()函数获取对象的唯一 ID,例如
result = id(object). id()函数返回一个唯一的整数,表示所提供对象的身份。

main.py
dict1 = {'name': 'bobbyhadz', 'salary': 100} print(id(dict1)) # 👉️ 140176720308032 dict2 = {'name': 'bobbyhadz', 'salary': 100} print(id(dict2)) # 👉️ 140176720308288 print(id(dict1) == id(dict2)) # 👉️ False

我们使用id()函数来获取对象的标识。

该函数返回一个整数,该整数保证在对象的生命周期内是唯一且不变的。

id()函数返回 CPython 中对象在内存中的地址。

以下字典存储在内存中的不同位置,即使它们存储相同的键值对。

main.py
dict1 = {'name': 'bobbyhadz', 'salary': 100} print(id(dict1)) # 👉️ 140176720308032 dict2 = {'name': 'bobbyhadz', 'salary': 100} print(id(dict2)) # 👉️ 140176720308288 print(id(dict1) == id(dict2)) # 👉️ False

如果两个变量引用同一个对象,它们将指向内存中的相同位置并且具有相同的 ID。

main.py
dict1 = {'name': 'bobbyhadz', 'salary': 100} print(id(dict1)) # 👉️ 139807401338688 dict2 = dict1 print(id(dict2)) # 👉️ 139807401338688 print(id(dict1) == id(dict2)) # 👉️ True

这在处理基元(例如字符串)时略有不同。

main.py
str1 = 'bobbyhadz.com' str2 = 'bobbyhadz.com' print(id(str1)) # 👉️ 139797744953264 print(id(str2)) # 👉️ 139797744953264 print(id(str1) == id(str1)) # 👉️ True

这两个变量存储相同的字符串并指向内存中的相同位置,因此它们具有相同的 ID。

原始的、不可变的对象,如字符串、整数和浮点数,将始终指向内存中的相同位置,并在程序中具有相同的 ID。

而非原始的可变对象(如列表和字典)可能存储相同的值,但指向内存中的不同位置并具有多个 ID。