๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒฑ CS Study/ํŒŒ์ด์ฌ

์–•์€ ๋ณต์‚ฌ vs. ๊นŠ์€ ๋ณต์‚ฌ (shallow copy vs. deep copy)

by HelloRabbit 2022. 7. 18.
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 ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค

 

์›๋ณธ์„ ์žƒ์ง€ ์•Š์œผ๋ ค๋ฉด ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

๋Œ“๊ธ€