1. 메모리 할당이란?
- python은 기본적으로 데이터 값을 하나의 객채로 인식하여 객체의 주소값을 연결한다.
- 예를 들면,
x = [1,2,3,4]
y = x
y[0] = 0
print(x) -> [1,2,3,4] 가 아닌 [0,2,3,4] 가 출력이 된다.
즉 대입 연산자를 사용하면 값의 복사가 일어나는 것이 아닌 객체의 같은 주소값을 복사함으로 다른 변수에서 특정 주소값의 값을 수정하면 연결된 모든 변수에서 그 값이 수정된 후로 출력된다.
2. 복사
- 리스트에서 대입이 아닌 복사(같은 값을 가지는 새로운 객체를 생성하여 주소값을 할당)를 원할 경우 다음과 같이 사용한다.
x = [1,2,3,4]
y = x.copy()
y[0] = 0
print(x) -> [1,2,3,4] 출력
- 2차원 이상의 리스트의 경우 copy 모듈의 deepcopy 메서드를 사용한다.
import copy
x = [[1,2],[3,4]]
y = copy.deepcopy(x)
y[0][0] = 0
print(x) -> [[1,2],[3,4]] 출력
print(y) -> [[0,2],[3,4]] 출력
* 대입 연산자를 사용하여 값을 할당할 때, 같은 주소값을 가져야 할지 새로운 주소값을 가져야할지 잘 고려해야 런타임 오류를 방지할 수 있다.
'Python > Language' 카테고리의 다른 글
[python] 정규표현식(Regex) (0) | 2023.08.17 |
---|---|
[python] 함수 (0) | 2023.08.15 |
[Python] 예외처리 (0) | 2023.08.04 |
[Python] 모듈 (0) | 2023.08.03 |
[Python] 클래스 상속 (1) | 2023.08.03 |