Python/Language

[python] 메모리 할당과 복사

오늘도개발 2023. 8. 10. 15:30

 

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] 클래스 상속  (0) 2023.08.03