2015-01-21 4 views
0

파이썬 변수 (int, list, tuple)가 메모리에서 어떻게 보이는지 알고 싶습니다. 그리고 지금이 바로 지금입니다.파이썬 변수가 메모리에서 어떻게 보이는지

from ctypes import string_at 
from sys import getsizeof 
from binascii import hexlify 
string_at(id(a), getsizeof(a)) 

변수의 16 진수 표현을 메모리에 반환 할 것으로 기대합니다. 나는 \ X01 \ X02 ... 등을 볼 수있는, 가까운 중간에

1 - '\xd6\x05\x00\x00\x00\x00\x00\x00\xc0\x92\x17\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00' 
2 - '\x17\x02\x00\x00\x00\x00\x00\x00\xc0\x92\x17\x00\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00' 
3 - '\xdc\x00\x00\x00\x00\x00\x00\x00\xc0\x92\x17\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00' 
4 - '\x06\x01\x00\x00\x00\x00\x00\x00\xc0\x92\x17\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00' 

어딘가에 :

그러나, 여기에 내가 변수 'A'에 가치 1,2,3를 할당 할 때의 출력입니다 . 그러나, 여기 내 다른 질문은 다음과 같습니다 초에

  1. , 나는 다른 두 바이트가 변경 볼 수 있습니다, 그 가치는 무엇인가?

  2. \ x00을 제외하고는 ...\xc0\x92\x17\x00\x01...과 같은 몇 가지 다른 바이트를 볼 수 있습니까?

  3. 파이썬이 메모리에 변수를 저장하는 방법을 배우기 위해 사용할 수있는 리소스가 있습니까?

답변

2

다운로드 파이썬 C 소스와 그것들을 연구한다. "거의 모든 것"이 PyObject* - PyObjectstruct에 대한 포인터임을 알 수 있습니다. \x01 & c는 그 포인터 중 일부의 임의의 바이트이며,보고있는 터플 인 1,2,3과는 아무 관련이 없습니다. 적어도 직접적으로는 아닙니다!

관련 문제