如何在Python获取对象的内存地址
在Python,一切都是对象,从变量到列表和字典,一切都被视为对象。在本文中,我们将在Python获取对象的内存地址。
方法一:使用 id()
我们可以使用 id()函数获取地址。 id()函数给出特定对象的地址。
句法:
id(object)
其中对象是数据变量。
示例:获取不同对象地址的Python程序
Python3
# get id of list
a = [1, 2, 3, 4, 5]
print(id(a))
# get id of a variable
a = 12
print(id(a))
# get id of tuple
a = (1, 2, 3, 4, 5)
print(id(a))
# get id of a dictionary
a = {'a': 1, 'b': 2}
print(id(a))
Python3
# import addressof and c_int modules
# from ctypes module
from ctypes import c_int, addressof
# get memory address of variable
a = 44
print(addressof(c_int(a)))
Python3
# get id of list in hexadecimal representation
a = [1, 2, 3, 4, 5]
print(hex(id(a)))
# get id of a variable in hexadecimal
# representation
a = 12
print(hex(id(a)))
# get id of tuple in hexadecimal
# representation
a = (1, 2, 3, 4, 5)
print(hex(id(a)))
# get id of a dictionary in hexadecimal
# representation
a = {'a': 1, 'b': 2}
print(hex(id(a)))
输出:
140234866534752
94264748411744
140234904267376
140234866093264
方法二:使用c_int,addressof modules
ctypes 是Python的外部函数库。它提供与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。
句法:
addressof(c_int(object))
其中 object 是数据变量
示例: Python程序获取变量的内存地址
蟒蛇3
# import addressof and c_int modules
# from ctypes module
from ctypes import c_int, addressof
# get memory address of variable
a = 44
print(addressof(c_int(a)))
输出:
140234866278064
也可以获取十六进制格式的内存地址。这里我们将调用 hex(address)函数,将内存地址转换为十六进制表示。
句法:
hex(id(object))
在哪里,
- hex() 是地址的内存十六进制表示
- id 用于获取对象的内存
- 对象是数据
示例:获取十六进制表示的内存地址的Python程序。
蟒蛇3
# get id of list in hexadecimal representation
a = [1, 2, 3, 4, 5]
print(hex(id(a)))
# get id of a variable in hexadecimal
# representation
a = 12
print(hex(id(a)))
# get id of tuple in hexadecimal
# representation
a = (1, 2, 3, 4, 5)
print(hex(id(a)))
# get id of a dictionary in hexadecimal
# representation
a = {'a': 1, 'b': 2}
print(hex(id(a)))
输出:
0x7fba9b0ae8c0
0x5572da858b60
0x7fba9f3c4a10
0x7fba9b05b8c0