Guidelines

얕은 볡사와 κΉŠμ€ λ³΅μ‚¬μ˜ κ°œλ…κ³Ό 차이점

객체λ₯Ό λ³΅μ‚¬ν•˜λŠ” λ°©λ²•μœΌλ‘œ 얕은(Shallow) 볡사와 κΉŠμ€(Deep) 볡사가 μžˆμŠ΅λ‹ˆλ‹€.

얕은 λ³΅μ‚¬λŠ” 원본 λ˜λŠ” 볡사본 쀑 ν•˜λ‚˜λ₯Ό λ³€κ²½ν•˜λ©΄ λ‹€λ₯Έ ν•˜λ‚˜μ—λ„ 영ν–₯을 λ―ΈμΉ©λ‹ˆλ‹€.

κΉŠμ€ λ³΅μ‚¬λŠ” 원본과 볡사본이 μ™„μ „νžˆ λ…λ¦½μ μ΄λ―€λ‘œ, 원본 λ˜λŠ” 볡사본 쀑 ν•˜λ‚˜λ₯Ό λ³€κ²½ν•˜λ”λΌλ„ λ‹€λ₯Έ ν•˜λ‚˜μ—λŠ” 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.


얕은 볡사(Shallow Copy)

얕은 λ³΅μ‚¬λŠ” λ³΅μ‚¬λœ 객체와 원본 객체가 λ‚΄λΆ€ 객체λ₯Ό κ³΅μœ ν•˜κ²Œ λ©λ‹ˆλ‹€.

얕은 볡사 μ˜ˆμ‹œ
# 리슀트λ₯Ό λ§Œλ“­λ‹ˆλ‹€ original = [1, 2, 3, [4, 5, 6]] # 얕은 볡사λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€. 이λ₯Ό μœ„ν•΄ list() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. shallow_copied = list(original) # 얕은 λ³΅μ‚¬λœ 리슀트의 μ€‘μ²©λœ 리슀트λ₯Ό λ³€κ²½ν•©λ‹ˆλ‹€. shallow_copied[3][0] = 99 # κ²°κ³Ό 좜λ ₯ print("Original:", original) # [1, 2, 3, [99, 5, 6]] 좜λ ₯ : 원본 λ¦¬μŠ€νŠΈλ„ 변경됨 print("Shallow Copied:", shallow_copied) # [1, 2, 3, [99, 5, 6]] 좜λ ₯

μœ„ μ˜ˆμ‹œμ—μ„œ shallow_copied 리슀트의 μ€‘μ²©λœ 리슀트λ₯Ό λ³€κ²½ν•˜λ©΄, original λ¦¬μŠ€νŠΈλ„ λ³€κ²½λ©λ‹ˆλ‹€.


κΉŠμ€ 볡사(Deep Copy)

κΉŠμ€ λ³΅μ‚¬λŠ” 객체의 λͺ¨λ“  μˆ˜μ€€μ—μ„œ μƒˆλ‘œμš΄ 객체λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€. λ³΅μ‚¬λœ κ°μ²΄λŠ” 원본 객체와 μ™„μ „νžˆ 독립적이며, 원본 객체의 변경이 λ³΅μ‚¬λœ 객체에 영ν–₯을 주지 μ•ŠμŠ΅λ‹ˆλ‹€.

κΉŠμ€ 볡사 μ˜ˆμ‹œ
import copy original = [1, 2, 3, [4, 5, 6]] deep_copied = copy.deepcopy(original) deep_copied[3][0] = 99 # κ²°κ³Ό 좜λ ₯ print("Original:", original) # [1, 2, 3, [4, 5, 6]] 좜λ ₯ : 원본 λ¦¬μŠ€νŠΈλŠ” λ³€κ²½λ˜μ§€ μ•ŠμŒ print("Deep Copied:", deep_copied) # [1, 2, 3, [99, 5, 6]] 좜λ ₯ : λ³΅μ‚¬λœ 리슀트만 변경됨

Guidelines

AI Tutor

Publish

Design

Upload

Notes

Favorites

Help

Code Editor

Run
Generate

Execution Result