Python의 변수 ID에서 개체 참조 검색
Python의 id() 함수는 개체의 고유 ID를 반환합니다. 이 프로세스를 거꾸로 하고 해당 ID에서 객체를 얻는 것이 가능한지 궁금합니다.
구체적으로, 변수의 ID를 역참조하면 원래 객체를 검색하는지 확인하고 싶습니다.
dereference(id(a)) == a
이 질문에 접근할 때는 Python에서 역참조의 개념과 그 잠재력을 이해하는 것이 핵심입니다.
Python에서 역참조
역참조에는 변수 ID에서 기본 개체나 값을 검색하는 작업이 포함됩니다. 불행하게도 Python은 ID를 직접 역참조하는 기본 메커니즘을 제공하지 않습니다.
학술적 접근 방식
Python의 내장 기능의 한계에도 불구하고 다음을 개발하는 것은 가능합니다. id() 함수의 역을 시뮬레이션하는 유틸리티 함수입니다. 이 함수 di()는 C 수준 API와 유형 추론의 조합을 활용하여 해당 ID에서 객체 참조를 검색합니다.
import _ctypes
def di(obj_id):
return _ctypes.PyObj_FromPtr(obj_id)
예제
di() 함수를 사용하여 해당 ID에서 원본 객체를 검색할 수 있습니다:
a = 42 b = 'answer' print(di(id(a))) # -> 42 print(di(id(b))) # -> answer
주의
이 접근 방식은 Python에서 변수 ID 역참조에 대한 이론적 이해를 제공하지만, 다음이 중요합니다. 잠재적인 메모리 안전성 및 안정성 문제로 인해 di() 함수를 주의해서 사용해야 합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3