在 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。