๐ฑ CS Study/ํ์ด์ฌ
์์ ๋ณต์ฌ vs. ๊น์ ๋ณต์ฌ (shallow copy vs. deep copy)
HelloRabbit
2022. 7. 18. 18:00
728x90
์์ ๋ณต์ฌ (Shallow copy) | ๊น์ ๋ณต์ฌ (Deep copy) | |
๋ฉ๋ชจ๋ฆฌ ์ฃผ์ | ๊ฐ์ | ๋ค๋ฆ |
์ฅ์ | โ ๊ณต๊ฐ, ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ โ ํ์ด์ฌ์ ๊ธฐ๋ณธ ๋ณต์ฌ์์ผ๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ฉ ์์ |
โ ์๋ณธ ์ ์ง |
๋จ์ | โ ๋ณต์ฌ๋ณธ์ ์์ ํ์ ๋ ์๋ณธ๋ ๊ฐ์ด ๋ฐ๋ | โ ๊ณต๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์ถ๊ฐ๋ก ์ฐจ์งํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋งํผ ์๋๋ ๋๋ ค์ง๊ณ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ๋ ๋ถ์กฑํด์ง โ copy๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ฉํด์ผํจ |

ํ์ด์ฌ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ๋ณต์ฌ๋ฅผ ์ด์ฉํ๋ค.
var1 = [1,2,3]
var2 = var1 # ์์ ๋ณต์ฌ
print(id(var1), id(var2)) # 140364606746528 140364606746528 ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์์ด๋๊ฐ ์ถ๋ ฅ๋จ
์๋ณธ์ ์ ์งํ๊ธฐ ์ํด ๊น์ ๋ณต์ฌ๋ฅผ ์ด์ฉํ๊ณ ์ถ๋ค๋ฉด copy ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ถ๋ฌ์์ผ ํ๋ค.
import copy
var1 = [1,2,3]
var2 = copy.deepcopy(var1)
print(id(var1), id(var2)) # 140364606800272 140364621903584 ์๋ก ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ์ฉํ๊ณ ์๋ค
์๋ณธ์ ์์ง ์์ผ๋ ค๋ฉด ๊น์ ๋ณต์ฌ๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ์ค์ํ๋ค.