2

가능한 중복 :
Get object by id()?ID로 변수에 액세스하는 방법은 무엇입니까?

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

메모리에 var의 주소를 사용할 수있는 방법이 var의 값에 액세스하는데, id()에서 제공 있는가?

UPD : 나는 또한이 표준 파이썬에서 수행 할 수없는 경우이 어떻게 든 파이썬의 C++ 내부를 해킹을 통해 구현 될 수 있다면, 그것은 또한, 재미있을 것, 말하고 싶은
.

UPD2 : 는 또한 알고 흥미로운 일이 될 것이다, 어떻게 변화 var 값. 또한

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) 

같은 함수 내부에서 작동

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

그러나 다른 사람들이 지적했듯이 :

+4

수 없습니다. 'id()'의 반환 값은 참조가 아닙니다. cpython이 여기에 메모리 주소를 반환한다는 사실은 구현 세부 사항이며 이것을 참조로 사용하는 것은 함수의 목적이 아닙니다. –

+1

왜 신성의 이름을 원하십니까? Martijn은 CPython에서 어떻게 든 해킹 할 수 있다고하더라도 올바르게 구현됩니다. – pcalcao

+0

왜이 작업을 수행 하시겠습니까? – Keith

답변

6

해결책, 만 경우에, 것 먼저 어떤이 있는지 확인 귀하의 요구에 더 잘 맞는 더 나은 솔루션

+1

참조 또한 http://stackoverflow.com/a/1396690/514485. 거의 모든 사람들처럼 내가 당신에게주의를 기울일 것입니다. 아마 이것을 원하거나 원하지 않을 것입니다. – jimhark

관련 문제