Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Xem thảo luận
Cải thiện bài viết
Lưu bài viết
Đọc
Bàn luận
Trong Python, mọi thứ đều là một đối tượng, từ các biến đến danh sách và từ điển, mọi thứ đều được coi là đối tượng. & NBSP; Trong bài viết này, chúng ta sẽ lấy địa chỉ bộ nhớ của một đối tượng trong Python. & NBSP;
Syntax:
id[object]
Phương pháp 1: Sử dụng ID []
Chúng ta có thể nhận được một địa chỉ bằng hàm id []. Hàm id [] cung cấp địa chỉ của đối tượng cụ thể.Python program to get the address of different objects
Python3
trong đó đối tượng là các biến dữ liệu.
a
4a
5a
6a
7
Ví dụ: Chương trình Python để có được địa chỉ của các đối tượng khác nhau
a
4a
5a
6a
7
a
=
[
1
,
____________,
3
____5____5____10____5____a
2
a
4a
5a
6a
7
a
=
=
0
a
4a
5a
6a
7
Output:
140234866534752
94264748411744
140234904267376
140234866093264
a
=
a
51
,
____________,
3
____5____5____10____5__12
a
=
1
41
51
61
,
____491
6____________,
2
Syntax:
addressof[c_int[object]]
Phương pháp 2: Sử dụng các mô -đun C_int, Địa chỉ
CTYPES là một thư viện chức năng nước ngoài cho Python. Nó cung cấp các loại dữ liệu tương thích C và cho phép gọi các chức năng trong DLL hoặc thư viện được chia sẻ. Python program to get the memory address of a variable
Python3
trong đó đối tượng là các biến dữ liệu
Ví dụ: Chương trình Python để lấy địa chỉ bộ nhớ của & nbsp; một biến
a
42
5
Output:
140234866278064
,
7 ,
8,
9 2
0
Syntax:
hex[id[object]]
where,
a
=
2
3- Cũng có thể nhận được địa chỉ bộ nhớ ở định dạng thập lục phân. Ở đây chúng tôi sẽ gọi hàm HEX [địa chỉ], để chuyển đổi địa chỉ bộ nhớ thành đại diện thập lục phân.
- hex [] là đại diện thập lục phân của bộ nhớ đến địa chỉ
ID được sử dụng để có được bộ nhớ của đối tượng Python program to get the memory address in hexadecimal representation.
Python3
trong đó đối tượng là các biến dữ liệu.
a
4a
53
1a
5a
63
4
Ví dụ: Chương trình Python để có được địa chỉ của các đối tượng khác nhau
a
4a
53
1a
5a
63
4
a
=
[
1
,
____________,
3
____5____5____10____5____a
2
a
4a
53
1a
5a
63
4
a
=
=
0
a
4a
53
1a
5a
63
4
Output:
0x7fba9b0ae8c0
0x5572da858b60
0x7fba9f3c4a10
0x7fba9b05b8c0
Có một vài vấn đề ở đây không được đề cập bởi bất kỳ câu trả lời nào khác.
Đầu tiên, a
6 chỉ trả về:
Bản sắc của người Viking của một đối tượng. Đây là một số nguyên [hoặc số nguyên dài] được đảm bảo là duy nhất và không đổi cho đối tượng này trong suốt vòng đời của nó. Hai đối tượng có tuổi thọ không chồng chéo có thể có cùng giá trị
a
31.
Trong Cpython, điều này xảy ra là con trỏ tới a
32 đại diện cho đối tượng trong trình thông dịch, đó là điều tương tự mà a
33 hiển thị. Nhưng đây chỉ là một chi tiết thực hiện của Cpython, không phải là điều đúng với Python nói chung. Jython không giao dịch trong các gợi ý, nó liên quan đến các tài liệu tham khảo của Java [điều mà JVM tất nhiên có thể đại diện là con trỏ, nhưng bạn không thể nhìn thấy những người đó và không muốn, vì GC được phép di chuyển chúng xung quanh]. PYPY cho phép các loại khác nhau có các loại a
6 khác nhau, nhưng tổng quát nhất chỉ là một chỉ mục vào một bảng các đối tượng bạn gọi là a
6 trên, rõ ràng sẽ không phải là một con trỏ. Tôi không chắc chắn về Ironpython, nhưng tôi nghi ngờ nó giống Jython hơn là Cpython về vấn đề này. Vì vậy, trong hầu hết các triển khai Python, không có cách nào để có được bất cứ điều gì xuất hiện trong a
36 đó và không có ích gì nếu bạn đã làm.
Nhưng nếu bạn chỉ quan tâm đến Cpython thì sao? Đó là một trường hợp khá phổ biến, sau tất cả.
Chà, trước tiên, bạn có thể nhận thấy rằng a
6 là một số nguyên;* Nếu bạn muốn chuỗi a
38 đó thay vì số a
39, bạn sẽ phải tự định dạng. Theo bìa, tôi tin rằng a
33 cuối cùng đang sử dụng định dạng a
42 của ____ 141, mà bạn không có từ Python, nhưng bạn luôn có thể làm điều này:
format[id[spam], '#010x' if sys.maxsize.bit_length[]