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 |