슬코생

[Python] In-Place & Out-Place Operators 본문

Data/기초

[Python] In-Place & Out-Place Operators

ashbeen 2022. 5. 18. 18:03

실습은 구글 코랩에서 진행했다 :) 
블로그 복습 정리는 그날 새롭게 안 내용, 그동안 헷갈렸던 내용들 위주로 정리하려고 한다.

1. In-Place Operators

a = 5
a += 1
a # a의 경우, 현재 int형으로 원시자료형이다. 즉, 불변타입! 따라서, 불변형의 경우 수정이 필요할 때 새로운 객체를 생성한다.

 - 기존 객체를 수정 시도하고, 불가능할 시 새로운 객체 생성 (계산 전, 이전 값이 별도로 필요하지 않다면 이를 사용함

 - 장점 : 추가 메모리 할당 없이 기존 할당된 메모리를 그대로 사용하므로 메모리 효율화와 속도 향상 기대가 가능해진다.
(특히, 배열의 크기가 클수록 할당에 시간이 오래 소요되므로 더 큰 차이가 발생한다.) 

 - 예시 : +=, -=, *=, /=

2. Out-Place Operators

a = 5
a = a+1
a # 새로운 객체 생성

 - 명시적으로 새로운 객체 생성

3. 예시 

a = 10            # int는 불변 타입
b = a             # a와 b는 같은 메모리 주소를 가르침
a += 1            # a는 불변 타입 -> 수정이 필요할 경우에 새로운 객체 생성해서 할당
a,b, a is b       # a가 새로 할당되었기 떄문에 a is not b! 
(11, 10, False)

a = [1,2,3]       # List는 가변 타입
b = a             # a, b는 같은 메모리 주소를 가르침
a += [4]          # a는 가변 타입 -> 원 객체를 수정 (in-place)
a, b, a is b      # a의 메모리 주소는 변함 없음!
([1,2,3,4], [1,2,3,4], True)

a = a + [5]       # out-place 연산   
a, b, a is b           
([1,2,3,4,5], [1,2,3,4], False)

 

Comments