immutable 객체
📌 immutable 객체
: 값이 변하지 않는 객체.
int, float, bool, str, tuple, set
📌 파이썬은 c, c++과 달리 각 변수마다 메모리가 할당되지 않음.
파이썬에서는 하나의 immutable 값을 여러 개의 객체가 참조함.
변수의 값이 바뀔 경우, 참조하는 값이 바뀜.
💡 id() : 객체의 고유한 아이디 반환.
a = 1
b = 1
c = 1
print(id(a), id(b), id(c)) # 1131067932912 1131067932912 1131067932912
a = 5
b = 5
print(id(a), id(b), id(c)) # 1131067933040 1131067933040 1131067932912
+ 추가 설명
더보기
a, b, c는 모두 주소가 같음.
→ a, b, c가 가리키는 값이 같기 때문.
값이 바뀔 경우, 주소도 바뀜.
mutable 객체
📌 mutable 객체
: 값이 변하는 객체.
list, set, dict
📌 mutable 객체는 생성 시, 메모리를 할당받음.
li_a = [1, 2, 3]
li_b = [1, 2, 3]
li_c = [1, 2, 3]
print(id(li_a), id(li_b), id(li_c)) # 1131069317184 1131069270848 1131069597760
li_a.append(5)
li_b[0] = 1
print(id(li_a), id(li_b), id(li_c)) # 1131069317184 1131069270848 1131069597760
+ 추가 설명
더보기
list는 mutable 객체이기 때문에, li_a, li_b, li_c는 각각의 메모리를 가짐.
값이 변해도 할당된 메모리의 주소가 바뀌지 않음.
'Python > Python' 카테고리의 다른 글
[Python] 이터레이터(iterator)와 제너레이터(generator) (1) | 2022.10.11 |
---|---|
[Python] 얕은 복사와 깊은 복사 (1) | 2022.10.11 |
[Python] sys.stdin.readline() (0) | 2022.10.04 |
[Python] 예외처리 - try except문, try finally, try else문 (0) | 2022.10.04 |
[Python] 파일입출력 (0) | 2022.10.04 |
댓글