shallow copy를 쓰긴하나요?
265
작성한 질문수 15
쓰는 곳이 있나요? 예시가 생각이 나지않네요.
assingment랑 비슷하면서 다르긴 하나.
assignment는 복사란 개념보단 직접 그 point한 메모리안의 값을 assign 한다는 의미로 받았고.
shallow copy 는 새로운 메모리 공간 안에 값들을 복사 하고자(reference value)하는 memory의 address를 point해서 reference 값을 가져온다는 의미로 이해했습니다.
shallow copy를 했을 때랑 assignment 했을 때랑 =, [:]말곤 차이를 잘 못느끼겠습니다. 다른 건 그냥 assign하는 memory address만 다르다로만 이해했습니다.
hard copy는 새로운 memory안에 복사 하고자 하는 값도 똑같이 복사한다는 걸로 이해했습니다.
답변 1
1
안녕하세요,
assignment는 새로운 객체가 생성되는 것이 아니라 동일한 객체에 대한 새로운 참조가 생성된다고 기억하시면 될 거 같고, shallow copy는 새로운 객체를 생성하지만, 원본 객체가 참조하는 객체들까지 복사하지는 않습니다. 대신 원본 객체 내의 객체에 대한 참조를 새로운 객체에 삽입합니다.
얕은 복사는 컬렉션(리스트나 딕셔너리)의 복사본을 만들고, 새로운 컬렉션에 변경을 가하더라도 원본에는 영향을 미치지 않게 하고 싶을 때 유용합니다. 그러나 컬렉션 내에 있는 중첩 객체들은 깊이 복사할 필요가 없을 때 사용합니다.
예를 들자면...
리스트의 리스트가 있고, 외부 리스트를 복사하되 내부 리스트는 공유하고 싶을 때.
import copy
a = [[1, 2, 3], [4, 5, 6]]
b = copy.copy(a)
b[0][0] = 99
print(a) # output: [[99, 2, 3], [4, 5, 6]]
print(b) # output: [[99, 2, 3], [4, 5, 6]]이 예제에서 a와 b는 내부 리스트를 공유합니다. b를 통해 내부 리스트에 변경을 가하면 a에도 반영됩니다. 이는 모든 객체를 재귀적으로 복사하여 완전히 독립적인 복사본을 생성하는 깊은 복사와는 다른 동작입니다.
도움이 되셨나요?
replit에서 developer frameworks가 안보여요
0
48
2
[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가
2
89
3
html 읽기 오류
1
103
2
DataFrame groupby 사용관련 질문
1
103
2
pylint shell 사용법
0
80
2
자막오류 수정가능한가요?
0
89
1
복합 조건절 관련 궁금증
0
85
2
49.행맨 프로그램 - 재시도 횟수 관련.
1
81
1
64. 파이썬 입문자가 쉽게 빠지기 쉬운 몇가지 에러(혹은 로직)에 대해 알아보기
0
110
2
Replit UI가 업데이트 되서 강의 진행이 멈췄어요
2
190
3
Replit을 사용해보려고 하는데 영상처럼 진행이 안되네요
3
454
2
실무에서의 제네레이터 함수 사용에 관한 질문입니다.
0
70
2
영상이 소리만 나오고 영상은 안보입니다.
0
92
2
pandas 오류 질문
0
131
2
상속 질문
1
136
2
total을 float으로 바꾸신 이유
0
204
2
섹션2 ["환경 vs. 설정 vs. 구성"] 강의 자막 문의
0
147
1
파이썬 data insert to table
0
229
2
파이썬 Class Method 질문
0
164
2
timeit 쓸 때는 만들었던 함수를 재사용 할 수는 없는지?
0
134
2
__repr__ 와 __str__ 차이점?
0
207
2
class method vs static method
0
283
2
Type hint 문법의 Type Checking이 강제성이 있는지?
0
167
2
클래스 접근자 강의 복습부분 0:47에 오타가 있네요
0
109
2





