ํ์ด์ฌ์ ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ๋ถํฐ ๋ฉ๋ชจ๋ฆฌ ๋์ ์๋ฆฌ๊น์ง, ํนํ ํํ์ ํ์ฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ํํ์ ๋ถ๋ณ(immutable) ํน์ฑ์ ์ง๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ๋ฆฌ์คํธ์ ์ ์ฌํ์ง๋ง ํ ๋ฒ ์์ฑ๋๋ฉด ์์ ์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฌํ ํน์ฑ์ผ๋ก ์ธํด ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ธก๋ฉด์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ด๋ฒ ๊ธ์์๋ ํํ์ ์์ฑ ๋ฐฉ๋ฒ, ๊ธฐ๋ณธ ์ฐ์ฐ, ์ธ๋ฑ์ฑ ๋ฐ ์ฌ๋ผ์ด์ฑ, ๊ทธ๋ฆฌ๊ณ ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์์ ๋ํด ์์ธํ ๋ค๋ฃจ์ด ๋ณด๊ฒ ์ต๋๋ค.
๋ชฉ์ฐจ
ํํ์ ๋ฌด์์ผ๊น?
ํํ์ ํ์ด์ฌ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ํ๋๋ก ๋ฆฌ์คํธ์ ์ ์ฌํ์ง๋ง ๋ช ๊ฐ์ง ์ฐจ์ด๊ฐ ์๋ค.
- ์ฝ๊ธฐ ์ ์ฉ(Immutable) : ํํ์ ํ ๋ฒ ์์ฑ๋๋ฉด ๊ทธ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค. ๋ฐ๋ผ์ ์ฝ๊ธฐ๋ง ๊ฐ๋ฅํ ํํ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ด๋ค. ๋ฆฌ์คํธ์ ๋ฌ๋ฆฌ ๊ฐ์ ์ถ๊ฐ, ์์ , ์ญ์ ํ ์ ์๋ค.
- ๊ดํธ๋ก ์์ฑ: ํํ์ ๊ดํธ์ธ () ๋ฅผ ์ฌ์ฉํ์ฌ ์์ฑํ ์ ์๋ค.
- ๊ดํธ ์๋ต ๊ฐ๋ฅ: ํํ์ ๊ดํธ๋ฅผ ์๋ตํ์ฌ ์์ฑํ ์ ์๋ค.
tp1 = (1,2,3) tp2 = 1,2,3โ
- ํ๊ฐ์ ํญ๋ชฉ ํํ: ํ ๊ฐ์ ํญ๋ชฉ์ ๊ฐ๋ ํํ์ ์์ฑํ ๋๋ ํญ๋ชฉ ๋ค์ ์ฝค๋ง(,)๋ฅผ ๋ถ์ฌ์ผํ๋ค.
tp1 = (1,) tp2 = 1,
๐ const์ let์ ์ฐจ์ด์ ํ์ด์ฌ์ ํํ ๋น๊ต
ํ์ด์ฌ์์ ๋ณ์๋ฅผ ์ ์ธํ ๋๋ ์ฃผ๋ก const, let ํค์๋๋ฅผ ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฌ๋ฆฌ, = ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ค.
๋ณ์๋ฅผ ์ ์ธํ ๋, const๋ ์์๋ก ์ ์ธํ๊ณ , ํ๋ฒ ์ ์ธ๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค. ํ์ด์ฌ์์๋ ์ด๋ฌํ ๊ฐ๋
์ ํํ์ด๋ผ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก ํํํ๋ค.
const์ let์ ์ดํด
const์ let์ ์ฐจ์ด๋ฅผ ์ดํดํ๊ธฐ์ํด ์๋ฐ์คํฌ๋ฆฝํธ ๋ณ์ ์ ์ธ ๋ฐฉ์์ ์ดํด๋ณด์.
// JavaScript ์ฝ๋
let a = 10;
const b = {name : 'kim', age: 20}
//const b = Object({name : 'kim', age: 20})
let์ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ๋๊ณ , ๊ฐ์ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค. ์๋ฅผ ๋ค์ด let a = 10;์ a๋ผ๋ ๋ณ์์ 10์ด๋ผ๋ ๊ฐ์ด ํ ๋น ๊ฐ๋ฅํ๋ค. ๋ฐ๋ฉด์ const๋ ์์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ๋๊ณ , ํ๋ฒ ํ ๋น๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๋ค. ์ด๋ ๊ฐ์ฒด b๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ณ , b์๋ ํด๋น ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ด ์ ์ฅ๋๋ค.
# Python์ฝ๋
my_tuple = (1,2,3)
์ ์ฝ๋์์ ํ์ด์ฌ์ ํํ์ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ํ๋ฒ ์์ฑ๋ ํํ์ ์์ ํ ์ ์๊ณ , ์ฌ๋ฌ๊ฐ์ ๊ทธ๋ฃนํํ์ฌ ์ฌ์ฉํ ๋ ์ ์ฉํ๋ค. ์ด๋ฌํ ํน์ฑ์ผ๋ก ์ธํด ์๋ฐ์คํฌ๋ฆฝ const์ ์ ์ฌํ ์ญํ ์ํ๋ค.
์น์์ const ๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ ๊ฐ์ด ๋ณ๊ฒฝ์ด ๋ ๊น?
์น์์ const๋ฅผ ์ฌ์ฉํ์์๋ ๋ณ๊ฒฝ๋๋ ์ด์ ๋ ํด๋น ๋ณ์๊ฐ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ์ฒด ๋ฆฌํฐ๋ด new ์ฐ์ฐ์๊ฐ ์๋ต๋์ด ์์ผ๋ฉฐ, ํด๋น ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ด ๋ณ์์ ํ ๋น๋๋ค. ๋ฐ๋ผ์ ๋ณ์์ ํ ๋น๋ ๊ฐ์ ๋ณ๊ฒฝ ๋ ์ ์์ง๋ง ํด๋น ๊ฐ์ฒด์ ์์ฑ ๊ฐ์ ๋ณ๊ฒฝ ๋ ์ ์๋ค.
๐ ํํ์ ์ฌ์ฉ๋ฐฉ๋ฒ : ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ๊ณผ ์ธ๋ฑ์ฑ
ํํ์ ๊ดํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ธํ ์ ์๊ณ , ๊ดํธ๋ฅผ ์๋ตํด๋ ๋๋ค.
tp1 = (1,2,3)
tp2 = 1,2,3
tp3 = (1,)
tp4 = 1,
print(tp1) #์ถ๋ ฅ: (1, 2, 3)
print(tp2) #์ถ๋ ฅ: (1, 2, 3)
print(tp3) #์ถ๋ ฅ: (1,)
print(tp4) #์ถ๋ ฅ: (1,)
ํํ์ ๊ฐ ์์๋ ์ธ๋ฑ์ค๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ค.
print(tp1[1]) #์ถ๋ ฅ: 2
print(tp1[0] + tp1[1] + tp1[2]) #์ถ๋ ฅ: 6
์ฌ๋ผ์ด์ฑ์ ์ฌ์ฉํ์ฌ ํํ์ ์ผ๋ถ๋ถ์ ๊ฐ์ ธ์ฌ์ ์๋ค.
#ํํ์ด๋ฆ[์์์ธ๋ฑ์ค:๋์ธ๋ฑ์ค+1]
print(tp1[1:3]) #์ถ๋ ฅ: (2, 3)
print(tp1[1:]) #์ถ๋ ฅ: (2, 3)
print(tp1[:3]) #์ถ๋ ฅ: (1, 2, 3)
ํํ์ ๋ง์
๊ณผ ๊ณฑ์
์ฐ์ฐ์ด ๊ฐ๋ฅํ๋ค.
print(tp1+tp2) #์ถ๋ ฅ: (1, 2, 3, 1, 2, 3)
print(tp2*3) #์ถ๋ ฅ: (1, 2, 3, 1, 2, 3, 1, 2, 3)
ํํ์ ๋ฆฌ์คํธ์ ์ ์ฌํ์ง๋ง ๋ด๋ถ์ ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ํ์ง๋ง ์ฌ๋ฌ ํํ์ ๊ฒฐํฉํ๋ ๊ฒ์ ๊ฐ๋ฅํ๋ค.
๐ง ํํ์ ๋ถ๋ณ์ฑ๊ณผ ๋ฉ๋ชจ๋ฆฌ ๋์
ํํ์ ์๋ฐ์คํฌ๋ฆฝํธ const๋ ๊ฐ์ ์์ฑ์ ๊ฐ์ง๊ณ ์๊ธฐ๋๋ฌธ์ ๊ธฐ์กด์(1,2,3)์ ํํ (4,5,6)์ ํ๋ ๋ ์์ฑ์ ํด์ a์ ๋์ ์ ํ๊ฒ ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น? a๊ฐ ํํ์ด๋๊น const์ ๋์ ์ ํ๋ฉด ์ฑ๋ฆฝ์ด ์๋์ผ ํ๋๋ฐ ์ถ๋ ฅ์ด๋๋ค. 4,5,6์ด ์ถ๋ ฅ๋๋ค.
a = (1,2,3)
a = (4,5,6)
print(a) #์ถ๋ ฅ: (4, 5, 6)
print(id(a)) #์ถ๋ ฅ: 1857557131392
print(id(a),a) #์ถ๋ ฅ: 1857557131392 (4, 5, 6)
ํ์ด์ฌ์์ ๋ณ์๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ด๋ฏ๋ก ๋ณ์๊ฐ ์ฐธ์กฐํ๋ ๊ฐ์ฒด๊ฐ ๋ณ๊ฒฝ๋๋ฉด ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ๋๋ค.
a = (1,2,3)
print(id(a)) #์ถ๋ ฅ: 1725010833472
a = (4,5,6)
print(id(a),a) #์ถ๋ ฅ: 1725010592640 (4, 5, 6)
a์๋ (1,2,3) ํํ์ด ํ ๋น๋๊ณ , ๊ทธํ id(a)๋ฅผ ํธ์ถํ๋ฉด ํด๋น ํํ ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ์ฃผ์๊ฐ ๋ฐํ๋๋ค.
๊ทธ๋ฆฌ๊ณ a์ (4,5,6) ํํ์ด ์๋กญ๊ฒ ํ ๋น๋๋ค. ์ด๋ ์ด์ ์ a๊ฐ ๊ฐ๋ฆฌํค๋ ํํ ๊ฐ์ฒด๋ ๋ ์ด์ ์ฐธ์กฐ๋์ง ์๊ฒ๋๊ณ , ์๋ก์ด ํํ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค. ์ด๋ก์ธํด ๋ณ์ a๋๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ฒด๊ฐ ๋ณ๊ฒฝ๋๋ค.
๋ฐ๋ผ์ id(a)๋ฅผ ๋ค์ ํธ์ถํ๋ฉด ์๋ก์ด ํํ ๊ฐ์ฒด (4,5,6)์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ฐํ๋๋ค.
์ด๋ ์ด์ ์ ๋ฐํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๋ค๋ฅด๊ฒ ๋๋ค.
const์ ๊ฐ๋ ์์ ํํ์ ์ด์ง ๋ค๋ฅด๋ค?
let a = {cons name, const age} ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฐ์๋ฉด, ์ฃผ์๊ฐ์ ๋ณ์์ธ๋ฐ ๊ฐ๊ฐ์ ๋ด๋ถ๊ฐ const์ธ ๊ฒ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ก ํํํ์๋ฉด, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ a๊ฐ ๋ ์์ปฌ ํ๊ฒฝ์ ์๊ณ , 1,2,3 ๊ทธ๋ฆฌ๊ณ 4,5,6์ ์ฃผ์๊ฐ์ด ์๋ค๋ฉด a๊ฐ 0x100์ ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์๋ค๊ฐ ์์ 0x100์ ์ฃผ์๊ฐ์ด ๋์ด์ง๊ณ ์๋ 4,5,6์ ์ฃผ์๊ฐ์ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
const ์ด๊ธฐ๋๋ฌธ์ ๋ณ๊ฒฝ์ด ์๋๋ค. ๋ฐ๋ผ์ a[0] = 40๊ณผ ๊ฐ์ด ์์๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค. ์๋ํ๋ฉด ํํ์ ๋ถ๋ณ์ฑ์ ์ ์งํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ณ์ a์ ๋ด๋ถ์์๋ ์์๊ฐ ์๋๋ผ ๋ถ๋ณํ๋ค.