반응형
파이썬에서 id함수는 객체의 메모리주소값을 알려준다!
정확히 말하면 메모리 주소값에대한 해쉬값이다
C언어를 제외한 나머지 언어들은 메모리 주소를 직접적으로 조작할 수 없도록 디자인되어 있기 때문이다!!
※ 메모리 주소를 직접 조작하면 cracking 작업을 수행할 수 있다.
id함수를 사용해서 생성한 객체들에 대한 주소값을 살펴보다보면 이상한 점을 발견할 수 있다.
분명 a와 b는 다른 변수로 선언했지만 주소값이 같게 나왔다.
이는 파이썬이 숫자를 다루는 특징때문이다.
코드를 짤 때 0~256까지의 숫자는 아주 많이 사용된다
그래서 파이썬은 메모리를 효율적으로 사용하기 위해서 0~256까지의 숫자에 한해서
이미 그 숫자가 만들어진 객체, 메모리가 있으면 새로운 객체를 만들지 않고 이미 만들어진 메모리를 공유하여 사용한다
이 방법을 통해 메모리를 효율적으로 사용할 수 있다.
256을 넘어가는 숫자를 이용해 테스트해보면 다른 주소값이 나오는 것을 확인할 수 있다!
==연산자와 is 연산자를 통해서 이 특성을 더 자세히 알아볼 수 있다.
두 연산자 모두 True or False를 리턴하는 논리 연산자이다.
== | 값이 같은지를 비교 |
is | 메모리 주소값이 같은지를 비교 (즉, 같은 객체인지를 환인) |
반응형
'Programming > Python' 카테고리의 다른 글
[python] 제어문 Control Statement (0) | 2022.01.20 |
---|---|
[Python]Data type 2 - Sequence, Text Sequence, Mapping, Set, Bool (0) | 2022.01.20 |
[python] 데이터타입 1 - Numeric과 Sequence (0) | 2022.01.19 |
[Python] 주석 처리 방법과 변수 (0) | 2022.01.19 |
[pygame] 개체 화면에 나타내기_미완성 (0) | 2021.11.05 |