如何通过id访问变量?

时间:2013-01-10 11:53:09

标签: python pointers reference pass-by-reference pass-by-value

  

可能重复:
  Get object by id()?

>>> var = 'I need to be accessed by id!'
>>> address = id(var)
>>> print(address)
33003240

有没有办法在var提供的内存中使用id()的地址来访问var的值?

UPD:
我还想说,如果这不能在标准Python中完成,那么它也会很有趣,如果这可以通过黑客攻击Python的C ++内部来实现。

UPD2: 同样有趣的是,如何更改 var的价值。

1 个答案:

答案 0 :(得分:8)

仅针对您的情况的解决方案是:

var = 'I need to be accessed by id!'
address = id(var)
print(address)
var2 = [x for x in globals().values() if id(x)==address]

它也可以在像

这样的函数中运行
def get_by_address(address):
    return [x for x in globals().values() if id(x)==address]

var = 'I need to be accessed by id!'
address = id(var)
print(address)
var2 = get_by_address(address)

但其他人指出:首先确保没有更好的解决方案更符合您的需求