먼저 파이썬은 포인터가 없고 모든것이 객체다

자바처럼 primitive type도 없음


i = 1이렇게하면

기본이 Integer(1)이렇게되고

인터프리터가 박싱언박싱 자동으로 해줌

불린이 1비트인데 128비트로 생성된다고 함









original_list = ["s",[1]]가 있을때 세가지 복사가 있음


1.alias

new_list = original_list 이렇게하면

둘의 참조와 값의 주소 모두 같음

사실 이건 복사가 아니라

new_list는 따로 존재하지 않고 그냥 별칭이됨


2. shallow copy

new_list = original_list[:] 이렇게 하면 얕은복사임

copy의 기본 copy함수도 얕은복사임


두 객체의 참조는 다르지만

객체 내의 이뮤터블 한 값은 참조가 공유됨

이 값을 변경하려고하면 문제 생길 수 있음


3.deep copy

import copy

new_list = copy.deepcopy(original_list)

이렇게하면 두 객체의 참조와

안에 들어있는 모든 값의 참조도 새로 assign됨

하지만 immutable 한 값은 변경불가능이라서 얘는

새로값을주면 알아서 재할당됨