-
[Python] 리스트의 메모리 관리 방식 , == 연산자, is 연산개발 프로세스/Back-end 2021. 7. 15. 21:32
리스트의 메모리 저장
파이썬은 리스트를 저장할 때 값 자체가 아니라, 값이 위치한 메모리 주소(reference)를 저장한다.
리스트의 메모리 저장 a = 300 b = 300 # 메모리의 주소를 비교하는 연산 print(a is b) # False # 값을 비교하는 연산 print(a == b) # True
출력결과
False True
is는 메모리의 주소를 비교하는 연산이고, ==은 값을 비교하는 연산이기 때문이 결과가 다르게 나왔다. a와 b는 값은 값지만, 메모리의 저장 주소는 다른 것이다.
예외 : -5부터 256까지의 정수값 저장
파이썬은 인터프리터가 구동될 떄, -5부터 256까지의 정수값을 특정 메모리 주소에 저장한다. 그리고 해당 숫자를 할당하려고 하면 해당 변수는 그 숫자가 가진 메모리 주소로 연결한다. 따라서 아래의 코드를 실행해보면 주소와 값이 모두 같은 것으로 나온다.
a = 1 b = 1 # 메모리의 주소를 비교하는 연산 print(a is b) # 값을 비교하는 연산 print(a == b)
출력결과
True True
메모리 저장 구조로 인한 리스트의 특징
1. 하나의 리스트에 다양한 자료형(정수, 실수, 문자열, 리스트 등) 포함 가능
2. 두 변수가 같은 메모리 주소로 연결되어 있으면 하나의 변수값만 바뀌더라도 둘 다 영향을 받음
'개발 프로세스 > Back-end' 카테고리의 다른 글
[Android Studio] 안드로이드 하이브리드앱 만들기 1: 프로젝트 생성하기 (0) 2021.08.24 [Python] 반복문 for문: 반복 범위를 지정하는 다양한 방법 (0) 2021.07.15 [Python] 중첩 for문을 활용한 2차원 리스트 생성 (0) 2021.07.15 [Python] 리스트 조작 함수 (0) 2021.07.14 [Python] 리스트 인덱싱과 슬라이싱 (0) 2021.07.14