查找和打印变量地址的Python程序
在本文中,我们将看到如何查找和打印Python变量的地址。
可以通过以下方式完成:
- 使用 id()函数
- 使用 addressof()函数
- 使用 hex()函数
方法一:使用 id() 查找并打印变量的地址
我们可以使用 id()函数获取地址,id()函数给出特定对象的地址。
Syntax: id(object)
where, object is the data variables.
在这里,我们将找到列表、变量、元组和字典的地址。
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,
# 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
方法二:使用addressof()查找并打印变量的地址
我们还可以使用这些函数获取内存地址,ctypes 是Python的外部函数库。它提供与 C 兼容的数据类型,并允许调用 DLL 或共享库中的函数。
Syntax:addressof(c_int(object))
where object is the data variables
示例:获取变量内存地址的Python程序。
蟒蛇3
# import addressof,
# 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
方法 3:使用查找和打印变量的地址 十六进制()
这里我们将调用 hex(address)函数,将内存地址转换为十六进制表示。
Syntax: hex(id(object))
where,
- hex() is the memory hexadecimal representation to the address
- id is used to get the memory of the object
- object is the data
示例:获取十六进制表示的内存地址的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