id(obj) trả về số nguyên duy nhất đại diện cho danh tính (identity) của đối tượng trong bộ nhớ (thường là địa chỉ bộ nhớ trong CPython).
Cú pháp
id(đối_tượng) -> int
Ví dụ minh họa
str_1 = "Tutorials"
str_2 = "Tutorials"
print("id(str_1):", id(str_1))
print("id(str_2):", id(str_2))
print("Same id?", id(str_1) == id(str_2)) # True (string interning)
# Nối chuỗi -> object mới
str_1 = str_1 + str_2
print("After concat, same id?", id(str_1) == id(str_2)) # False
# Gán tham chiếu
str_2 = str_1
print("After assignment, same id?", id(str_1) == id(str_2)) # True
Kết quả
id(str_1): 46939355256048 id(str_2): 46939355256048 Same id? True After concat, same id? False After assignment, same id? True
Lưu ý quan trọng
id()duy nhất trong thời gian sống của object. Sau khi object bị GC, id có thể tái sử dụng.id(a) == id(b)⇔a is b(kiểm tra identity).- String interning: Python tự động intern một số string ngắn, identifier-like → cùng id.
- Không dùng
id()để so sánh giá trị (dùng==).
Kết luận
id() trả về identity address. Dùng chủ yếu cho debug, hiểu cơ chế memory model, hoặc implement cache/map keyed by object identity.