我想有一个像函数一样的指针。由于我只允许传递int
作为参数,我希望能够将所有类型的数据传递给函数。 (我无法修改此功能,它在SDK中硬编码)
所以我想使用变量的id,然后将值重新分配给我的函数中的另一个值。
我希望有类似的工作
import ctypes
a = 10
b = 12
print b #here I want 12
ctypes.memset(id(b), a, 8)
print b #here I want 10
使用python类型的可能性很大,这样我也可以传递一个可调用的对象。
答案 0 :(得分:-1)
更新
由于主线程和后台线程在同一程序上并共享内存。您可以使用单个字典来创建用于存储变量及其键的容器:
import random
mystorage = {}
def getint(value):
while True:
key = random.randint(0, 0xffffffff)
if key in mystorage:
continue
mystorage[key] = value
return key
def getvalue(key):
return mystorage.get(key)
在测试时,如果密钥根据您的情况发生冲突,您可能需要添加写锁定。但通常这适用于多线程程序。
只是想使用int
(实际为long
)类型来传递任何可选对象:
import codecs
import pickle
def dumps(payload):
data = pickle.dumps(payload)
return int(codecs.encode(data, 'hex'), 16)
def loads(intval):
data = codecs.decode(hex(intval)[2:].encode('ascii'), 'hex')
return pickle.loads(data)
assert loads(dumps({'foo': 'bar'})) == {'foo': 'bar'}
# no error
如果您使用的是Python 3.2+,您还可以使用int.from_bytes()
和int.to_bytes()
来实现此目的。