Hàm id[] trả về danh tính của bất kỳ đối tượng Python nào. Điều này sẽ trả về một số nhận dạng số nguyên cho các đối tượng khác nhau
Việc triển khai CPython cơ bản sử dụng hàm
a = 1233.45 b = a print[id[a]] print[id[b]]0 làm địa chỉ của đối tượng, trong bộ nhớ
Hãy hiểu điều này nhiều hơn một chút, sử dụng một số ví dụ
Cú pháp cơ bản của hàm id[] trong Python
Hàm này lấy bất kỳ đối tượng Python nào - có thể là số nguyên, float, chuỗi, danh sách, Lớp, hàm, lambda, v.v. và trả về id số nguyên
val = id[object]
Sử dụng id[] trong Python
Id của một đối tượng rất hữu ích để Python lưu trữ các giá trị của các biến đó. Cơ chế truy xuất các giá trị được lưu trong bộ nhớ cache này bằng cách sử dụng
a = 1233.45 b = a print[id[a]] print[id[b]]0 giúp Python hoạt động tốt hơn
Điều này cũng hữu ích trong trường hợp nhiều biến tham chiếu đến cùng một đối tượng
a = 1233.45 b = a print[id[a]] print[id[b]]
đầu ra
2775655780976 2775655780976
Trong trường hợp này, Python sẽ dễ dàng theo dõi đối tượng được tham chiếu hơn, vì vậy id[] của a sẽ giống với id[] của b
Bây giờ, hãy thử sử dụng điều này trên một số đối tượng Python đơn giản
print[id[103]] # Int print[id[104]] print[id[10.25]] # Float print[id['Hello from AskPython']] # String print[id[[1, 2, 3]]] # List print[id[lambda x: x * x]] # Lambda
đầu ra
1658621232 1658621264 2775655780976 2775665230232 2775665206344 2775656111776
Như bạn có thể quan sát, đối với các số nguyên 103 và 104, chỉ có sự khác biệt là 32 trong số ID của chúng. Điều này thật ý nghĩa. Tại sao?
Hãy nhớ rằng chúng tôi đã đề cập rằng
a = 1233.45 b = a print[id[a]] print[id[b]]0 đề cập đến địa chỉ của đối tượng?
Id[104] là khối địa chỉ tiếp theo sau số nguyên 103. Vì các số nguyên trong Python được lưu trữ dưới dạng 4 byte, nên số này đại diện cho 32 bit và đó chính xác là sự khác biệt giữa các số id của chúng
Vì vậy, Python lưu trữ danh sách tất cả các số nguyên trong các khối liên tiếp, cách đều nhau. Có ý nghĩa?
Bây giờ, hãy kiểm tra chúng trên các chuỗi
________số 8
đầu ra
2775656418080 2775656418080
Như bạn có thể quan sát, Python thực sự lưu trữ các chuỗi để bảo vệ bộ nhớ
Hãy nhớ rằng bộ nhớ đệm chỉ có thể hoạt động trên các đối tượng Python bất biến, như số nguyên, chuỗi và số float. Bộ dữ liệu, Danh sách, v.v. là các đối tượng có thể thay đổi, vì vậy bộ nhớ đệm sẽ không hoạt động ở đây
Để chứng minh điều này, hãy kiểm tra id của hai danh sách có cùng phần tử
val = id[object]0
Ở đây, vì các danh sách có thể thay đổi nên không có bất kỳ bộ nhớ đệm nào liên quan
Sử dụng id[] trên Đối tượng tùy chỉnh
Chúng ta cũng có thể sử dụng hàm id[] trên các đối tượng tùy chỉnh
Hãy lấy một ví dụ đơn giản
val = id[object]1
đầu ra
val = id[object]2
Điều này đề cập đến địa chỉ bộ nhớ nơi các đối tượng được lưu trữ, rõ ràng là khác nhau đối với hai trường hợp
Phần kết luận
Trong bài viết này, chúng ta đã tìm hiểu về cách sử dụng hàm id[] trong Python. Điều này đại diện cho địa chỉ bộ nhớ cơ bản của đối tượng Python, rất hữu ích trong việc lưu trữ các đối tượng bất biến vào bộ đệm
Hàm id[] trong Python là một hàm sẵn có trả về một số nguyên duy nhất của một đối tượng. Danh tính này phải là 100% duy nhất và không đổi đối với đối tượng này trong suốt thời gian tồn tại của nó, mặc dù hai đối tượng có thể có cùng giá trị id[] nếu chúng có thời gian tồn tại không chồng chéo
Ghi chú triển khai CPython. Id[] là địa chỉ của đối tượng trong bộ nhớ
Điểm quan trọng
- Hàm id[] là một hàm sẵn có của Python
- Hàm id[] trả về một id [danh tính] duy nhất cho đối tượng được chỉ định
- Mỗi đối tượng Python có id duy nhất của nó
- id được gán cho đối tượng tại thời điểm nó được tạo
- Hai đối tượng có thể có id giống nhau nếu chúng có thời gian sống không chồng chéo
- id[] hoạt động như một địa chỉ của một đối tượng trong bộ nhớ
- Hầu hết hàm id[] được sử dụng nội bộ trong Python
cú pháp
val = id[object]3
Tham số
Hàm Id[] lấy đối tượng làm tham số. Nó có thể là bất kỳ đối tượng nào, Chuỗi, Số nguyên, Danh sách, v.v.
Giá trị trả về
Hàm Id[] trả về danh tính duy nhất cho đối tượng được chỉ định
Ví dụ về id[] trong Python
1] Khai báo và khởi tạo biến có giá trị nguyên
val = id[object]4
đầu ra
val = id[object]5
2] Khai báo và khởi tạo biến với giá trị chuỗi
val = id[object]6
đầu ra
val = id[object]7
3] Khai báo và khởi tạo bộ dữ liệu
val = id[object]8
đầu ra
val = id[object]9
4] Khai báo và khởi tạo từ điển
a = 1233.45 b = a print[id[a]] print[id[b]]0
đầu ra
a = 1233.45 b = a print[id[a]] print[id[b]]1
5] Hàm id trong Python sử dụng Đối tượng tùy chỉnh
a = 1233.45 b = a print[id[a]] print[id[b]]2
đầu ra
val = id[object]40
6] Hàm id trong Python có Danh sách
val = id[object]41
đầu ra
val = id[object]42