在下面的示例中,我尝试获取m变量的地址但显示错误
>>> import ctypes
>>> m = 1
>>> ctypes.addressof(m)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: invalid type
>>>
>>>
>>> class A:
... pass
...
>>>
>>> a = A()
>>>
>>> ctypes.addressof(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: invalid type
答案 0 :(得分:2)
您传递给addressof
的内容不是变量,第一个示例中是Python int
对象,第二个示例中是A
对象。 addressof
仅适用于ctypes _CData
。
我建议阅读Facts and myths about Python names and values以了解Python如何没有您期望的“变量”概念。
答案 1 :(得分:0)
您可以使用以下命令获取变量的地址:
id(m)
#Example Output : 51148608
要使用十六进制样式使用它:
hex(id(m))
#Output: 0x30c7740
答案 2 :(得分:0)
ctypes.addressof
只能获取ctypes
类型的地址:
>>> from ctypes import *
>>> m = c_int(1)
>>> addressof(m)
56017424