Miner

immutable / mutable 본문

Python

immutable / mutable

MineTime76 2023. 3. 20. 20:10

오랜만에 시작한 파이썬 Study

 

파이썬은 모두 객체다.

정수, 실수, 문자열, 사용자 정의 클래스의 인스턴스 등 모든 것은 특정 타입(자료형)을 가지고 메모리에 상주하는 객체들인 것이다

 

수정 불가능한 객체 :

변수는 그저 포인터 화살표일뿐, 수정이 불가능한 객체면 포인터의 방향을 옮긴다.

수정을 요구 하면 포인터는 다른 객체로 방향을 옮기고 기존에 있던 필요가 없는 문자열 객체는 아무도 자신을 참조하지 않기 때문에 가비지 컬렉터에 의해 자동으로 메모리에서 소멸된다.

int, float, str, tuple

 

a = 1

b = 1 (이 상태에서 a,b는 같은 객체를 가리키고 있다.)

b += 1

하면 b는 원래 객체에서 수정된 값을 가리키는 객체로 포인터의 방향을 옮긴다.

 

수정가능한 객체 : 

list, dict

 

a = [1,2,3]

b = a (이 상태에서 a,b는 같은 객체를 가리키고 있다.)

a += [4] 이렇게 되면 a,b 둘다 동시에 가리키고 있는 객체가 변하면서 자동적으로 b의 값도 바뀌게 되는 것

 

의도적으로 리스트를 복사하고 둘의 포인터가 동일하지 않게끔 하는 것은

a = [1,2,3]b = a[:]

이런식으로 해줘야 한다. 

 

파이썬의 리스트는 기본적으로 값을 연속적으로 저장하는 것이 아니라, 값이 있는 주소를 저장하는 방식이다.

 

'Python' 카테고리의 다른 글

정리 2  (0) 2023.06.18
정리1  (0) 2023.06.18
[Baekjoon] 10951  (0) 2023.01.30
[Baekjoon 1652] 런타임 에러 (네임에러) 문제  (0) 2023.01.26
리스트 내장함수  (0) 2023.01.24