1. 파이썬 자료형

— 배경지식: 객체 identity —

<aside> 💡 모든 파이썬 객체는 unique한 id 값을 가지고 있다! 메모리 주소라고 생각하면 된다.

</aside>

"""
    대입연산 실행 시,
    1) 임의의 메모리 공간을 할당
		2) 값을 해당 메모리 공간에 저장
		3) 대입 당하는 변수 이름이 해당 메모리 공간을 가리키도록 지정
"""
a = 12345
b = 12345
id(a)  # 139793185626288  실행할 때마다 달라짐
id(b)  # 139793184743568  실행할 때마다 달라짐

a = 12345  # 새로운 메모리 할당!
id(a)  # 위의 id 값과 다름

b = a  # b가 a의 메모리 주소를 참조한다. 절대 값을 copy해서 대입하는 것이 아님!
b is a  # True
id(b) == id(a)  # True

<aside> 💡 (참고) 더이상 참조되지 않는 메모리 공간은, Reference counting 또는 GC(garbage collector)가 해당 메모리를 해제시킨다.

</aside>


— Immutable type & Mutable type —

<aside> 💡 수정 불가능한 객체와 수정가능한 가변 객체로 나눌 수 있다.

</aside>


— (심화) Object Interning —

<aside> 💡 자주 사용되는 객체는 내부적으로 메모리 어딘가에 저장해두고, 재사용! ⇒ 메모리 절감

</aside>

참고 링크


#1. 리스트

# 깊은 복사 & 얕은 복사
a = [[1, 2], [3, 4], 5, 6, 7]
b = a  # 얕은 복사

b = a[:]  # 슬라이싱,, 값을 복사하지만,, 여전히 얕은 복사
b[0] is a[0]  # True, [1, 2]

import copy
b = copy.deepcopy(a)

#2. 딕셔너리