νλ‘κ·Έλλ° μΈμ΄/Python
Mutableκ³Ό Immutable κ°μ²΄
μμλπ
2024. 4. 29. 01:06
νμ΄μ¬μμ λ³μλ λ κ°μ§ νμ μΌλ‘ λλ©λλ€: mutable(κ°λ³)κ³Ό immutable(λΆλ³)μ λλ€. μ΄ λμ λ³μκ° λ³κ²½ κ°λ₯νμ§ μ¬λΆμ λ°λΌ ꡬλΆλ©λλ€.
Immutable κ°μ²΄
- Immutable κ°μ²΄λ ν λ² μμ±λλ©΄ κ°μ λ³κ²½ν μ μμ΅λλ€. μ¦, λ³μκ° λ©λͺ¨λ¦¬μ ν λΉλ νμλ κ·Έ κ°μ λ³κ²½ν μ μμ΅λλ€.
- μ£Όμ immutable λ°μ΄ν° νμ μΌλ‘λ int(μ μ), float(λΆλ μμμ μ), str(λ¬Έμμ΄), tuple(νν) λ±μ΄ μμ΅λλ€.
x = 5 # int λ³μλ immutable
y = "Hello" # str λ³μλ immutable
# κ°μ λ³κ²½νλ €κ³ νλ©΄ μλ¬κ° λ°μν©λλ€.
x = x + 1 # x κ°μ λ³κ²½νλ κ²μ΄ μλλΌ, μλ‘μ΄ κ°μ΄ ν λΉλ©λλ€.
y[0] = 'h' # λ¬Έμμ΄μ λ³κ²½ν μ μμ΅λλ€.
- immutable κ°μ²΄μΈ ννμ μ μ₯λ κ°μ μμ νμ λ μλ‘μ΄ ννμ΄ λ§λ€μ΄μ§λ κ²μ λ³Ό μ μμ΅λλ€.(κ°μ²΄μ μ£Όμκ° μλ‘κ² ν λΉλ¨)
- λ°λΌμ immutable κ°μ²΄λ λ³κ²½ λΆκ°λ₯νκΈ° λλ¬Έμ call by referenceμ outputμ΄ λ μ μμ΅λλ€.
- μλ‘κ² λ§λ κ°μ²΄λ₯Ό λ°ννλ ν¨μλ‘ λ체ν©μλ€.
Mutable κ°μ²΄
- Mutable κ°μ²΄λ κ°μ λ³κ²½ν μ μμ΅λλ€. μ¦, λ³μκ° λ©λͺ¨λ¦¬μ ν λΉλ νμλ κ°μ λ³κ²½ν μ μμ΅λλ€.
- μ£Όμ mutable λ°μ΄ν° νμ μΌλ‘λ list(리μ€νΈ), dict(μ¬μ ), set(μ§ν©) λ±μ΄ μμ΅λλ€.
a = [1, 2, 3] # 리μ€νΈλ mutable
b = {'name': 'John', 'age': 30} # μ¬μ λ mutable
# κ°μ λ³κ²½ν μ μμ΅λλ€.
a[0] = 100 # 리μ€νΈ λ΄μ κ° λ³κ²½
b['age'] = 31 # μ¬μ λ΄μ κ° λ³κ²½
- μμ κ°λ₯ν κ°μ²΄λ idκ° λ°λμ§ μμ΅λλ€.
- mutable κ°μ²΄λ λ νΌλ°μ€λ₯Ό ν΅ν κ° λ³κ²½μ νμ©νκΈ° λλ¬Έμ Call by referenceμ μν κ° λ³κ²½μ΄ κ°λ₯ν©λλ€.
μ΄λ¬ν μ°¨μ΄λ‘ μΈν΄ νλ‘κ·Έλλ°ν λ λ³μμ νμ μ κ³ λ €ν΄μΌ ν©λλ€. Immutable λ³μλ κ°μ΄ λ³νμ§ μκΈ° λλ¬Έμ μμ μ μΌλ‘ μ¬μ©ν μ μμ΅λλ€. Mutable λ³μλ λμ μΈ λ°μ΄ν°λ₯Ό μ²λ¦¬ν λ μ μ©νμ§λ§, κ°μ΄ μμ£Ό λ³κ²½λλ―λ‘ μ μ€νκ² λ€λ£¨μ΄μΌ ν©λλ€.
ν¨μλ₯Ό μ μ μνλ €λ©΄ νμ΄μ¬ λ΄μμ μ°Έμ‘°νλ κ°μ²΄μ μ±κ²©μ ꡬλΆν΄μ ν¨μλ₯Ό μ μν΄μΌλ§ ν©λλ€.