如果仅给出其地址,如何将值存储在python变量中?

时间:2014-01-14 12:17:00

标签: python-2.7

如果变量的地址为“20754060”,我们如何获取存储在该地址中的值?

a=20754060                  #consist of address of some variable

我们如何才能将值存储在'20754060'位置

3 个答案:

答案 0 :(得分:0)

你可能不会,即使你可以 - 你真的不应该。扭曲内存内容,忽略或站在GC的方式是错误的,可能会导致一些奇怪的错误。

答案 1 :(得分:0)

正如人们已经提到的:这是错误的;)

然而,这就是你如何做到的(只是一个开始)。

from ctypes import *
# create c_int (only ctype addresses work)
a = c_int(423)
# get address of a
address = addressof(a)
#print address (just for fun)
print address
# print content of address (this works for size 1)
print c_char_p(address)
#check that it is the same (423 is 1a7 in hex. Note MSB vs LSB)
print hex(423)

打印出来:

35746280
c_char_p('\xa7\x01')
0x1a7

以上只适用于ctype对象,如c_int(= ctypes.c_int)。

c_char_p函数当时获取一个字节的值。对于更复杂的对象,事情变得非常快,并且可能在某些时候存在限制。但如果你愿意,可以在这里开始阅读:

http://docs.python.org/3/library/ctypes.html

答案 2 :(得分:0)

尝试一下,就我而言,它正在工作。

ws

这给出了变量的ID,并使用该ID来检查变量的值

address = id(variable)