我希望有一个像函数一样的指针。因为我只能将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类型可能性很大,这样我也可以传递一个可调用的对象。
发布于 2016-12-15 18:20:02
更新:
因为主线程和后台线程在同一个程序上并且共享内存。您可以使用单个字典来创建用于存储变量及其键的容器:
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()来实现这一点。
https://stackoverflow.com/questions/41161396
复制相似问题