Search code examples
pythonpointersreferencepass-by-referencepass-by-value

How to access variable by id?


Possible Duplicate:
Get object by id()?

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

Is there any way to use address of var in memory, provided by id(), for accessing value of var?

UPD:
I also want to say, that if this cannot be done in standard Python, it also would be interesting, if this somehow could be implemented via hacking C++ internals of Python.

UPD2: Also would be interesting to know, how to change value of var.


Solution

  • A solution, only for your case, would be:

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

    It also works from inside a function like

    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)
    

    But as others pointed out: First make sure there is no better solution that better fits your needs