📜  如何在Python获取对象的内存地址

📅  最后修改于: 2022-05-13 01:54:32.422000             🧑  作者: Mango

如何在Python获取对象的内存地址

在Python,一切都是对象,从变量到列表和字典,一切都被视为对象。在本文中,我们将在Python获取对象的内存地址。

方法一:使用 id()

我们可以使用 id()函数获取地址。 id()函数给出特定对象的地址。

句法:

其中对象是数据变量。



示例:获取不同对象地址的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)))


输出:

方法二:使用c_int,addressof modules

ctypes 是Python的外部函数库。它提供与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。

句法:



其中 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)))

输出:

也可以获取十六进制格式的内存地址。这里我们将调用 hex(address)函数,将内存地址转换为十六进制表示。

句法:

在哪里,

  • 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)))

输出: