Python 변수의 인쇄 메모리 주소
파이썬 2.7에서 변수의 메모리 주소를 어떻게 인쇄합니까?id()가 변수 또는 개체의 'id'를 반환한다는 것을 알고 있지만 메모리 주소에 대해 볼 것으로 예상했던 0x3357e182 스타일을 반환하지 않습니다.저는 다음과 같은 것을 하고 싶습니다.print &x
여기서 x는 예를 들어 C++ int 변수입니다.파이썬에서 어떻게 해야 합니까?
id
사용할 방법은 다음과 같습니다. 16진수로 변환합니다.
hex(id(variable_here))
예를 들어:
x = 4
print hex(id(x))
내게 준 것:
0x9cf10c
그게 당신이 원하는 거죠, 그렇죠?
(재미있는 사실은, 두 변수를 동일하게 묶는 것입니다.int
동일한 메모리 주소가 사용될 수 있습니다.)
시도:
x = 4
y = 4
w = 9999
v = 9999
a = 12345678
b = 12345678
print hex(id(x))
print hex(id(y))
print hex(id(w))
print hex(id(v))
print hex(id(a))
print hex(id(b))
이것은 저에게 큰 정수에 대해서도 동일한 쌍을 주었습니다.
설명서에 따르면, Cython에서.id()
변수의 실제 메모리 주소입니다.만약 16진수 형식으로 원한다면, 전화하세요.hex()
그 위에
x = 5
print hex(id(x))
이것은 x의 메모리 주소를 인쇄할 것입니다.
일반적으로 Python 2.7에서는 값의 메모리 주소를 가져올 수 없습니다.Jython 또는 PyPy에서는 구현이 값의 주소도 알지 못합니다(또한 동일한 위치에 유지된다는 보장도 없습니다. 예를 들어, 쓰레기 수집기가 원할 경우 해당 값을 이동할 수 있습니다).
하지만 당신이 CPython에만 관심이 있다면, 는 이미 주소를 반환하고 있습니다.특정한 방식으로 정수를 포맷하는 것이 유일한 문제라면 정수를 포맷하는 것과 같습니다.
>>> hex(33)
0x21
>>> '{:#010x}'.format(33) # 32-bit
0x00000021
>>> '{:#018x}'.format(33) # 64-bit
0x0000000000000021
등등.
하지만, 이것에 대한 좋은 이유는 거의 없습니다.만약 당신이 실제로 어떤 물체의 주소가 필요하다면, 그것은 아마도 그것을 전달하는 것입니다.ctypes
또는 유사한 경우, 어떤 경우를 사용해야 합니다.ctypes.addressof
또는 그와 유사합니다.
언급URL : https://stackoverflow.com/questions/16408472/print-memory-address-of-python-variable
'sourcetip' 카테고리의 다른 글
셀의 값이 다른 열의 값과 같으면 조건부로 셀 형식 지정 (0) | 2023.07.17 |
---|---|
다른 테이블에 대한 외부 키를 포함하는 테이블의 행을 삭제하는 방법 (0) | 2023.07.17 |
셀러리가 유형(실행 예제)의 등록되지 않은 작업을 받았습니다. (0) | 2023.07.17 |
상한은 '자동'으로 설정하되 하한은 고정하는 방법 (0) | 2023.07.17 |
Excel - 다른 목록을 기준으로 데이터 추출 (0) | 2023.07.17 |