如何通过id访问变量?

Gil*_*tes 6 python pointers reference pass-by-reference pass-by-value

可能重复:
通过id()获取对象?

>>> var = 'I need to be accessed by id!'
>>> address = id(var)
>>> print(address)
33003240
Run Code Online (Sandbox Code Playgroud)

有没有办法使用的地址var在内存中,所提供的id(),用于访问的价值var

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

UPD2: 知道如何改变价值也会很有趣var.

Tho*_*anz 9

解决方案,仅适用于您的情况,将是:

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

它也可以在函数内部工作

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)
Run Code Online (Sandbox Code Playgroud)

但正如其他人所指出的那样:首先要确保没有更好的解决方案能够更好地满足您的需求

  • 另见 http://stackoverflow.com/a/1396690/514485。就像我提醒您的几乎所有其他人一样,您可能不想/不需要这样做。 (2认同)