๐ก ๋ณธ ํฌ์คํ ์ ์์ ๋ด์ฉ, ๊ต์ฌ, ChatGPT๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ ๋ฆฌํ ํ์ต ๊ธฐ๋ก์ ๋๋ค.
๊ธ๊ณผ ๊ทธ๋ฆผ ๋ฑ ๋ชจ๋ ์ฝํ ์ธ ์ ์ ๋ฆฌ ๋ฐ ์์ฑ์ ๋ณธ ๋ธ๋ก๊ทธ์์ ์ง์ ์ ์๋์์ต๋๋ค.
Python ๊ธฐ์ด๋ถํฐ Streamlit ๋ฐ์ดํฐ ์๊ฐํ๊น์ง ์ ๋ฆฌํ๋ ํ์ต ๊ธฐ๋ก์ ๋๋ค.
์ด ๊ธ์ '11. [ํ์ด์ฌ] Python ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ' ์ ๋๋ค.
Python์์ ๋ณ์์ ๊ฐ์ ํ ๋นํ๊ณ , ํจ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๊ณ , ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ๊ฒฐ๋ ๋์์ด๋ค.
๊ฒ์ผ๋ก ๋ณด๊ธฐ์๋ ๋จ์ํ ๊ฐ์ด ๋ฐ๋๊ฑฐ๋ ์ ๋ฌ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์ค์ ๋ก๋ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋๊ณ ๋ณ์๋ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ(reference) ํ๊ฒ ๋๋ค.
์ด๋ฒ ๊ธ์์๋ Python์ด ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ๊ด๋ฆฌํ๋์ง, ๊ทธ๋ฆฌ๊ณ ํจ์ ํธ์ถ ์ ๊ฐ์ด ์ ๋ฌ๋๋ ๋ฐฉ์๊ณผ ํจ๊ป reference count์ garbage collection์ ์ค์ฌ์ผ๋ก Python์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์์ ์ ๋ฆฌํด๋ณธ๋ค.
Python์์ ๋ณ์๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค
Python์์ ๋ณ์๋ ๊ฐ์ ์ง์ ์ ์ฅํ๋ ์์๋ผ๊ธฐ๋ณด๋ค ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ์ด๋ฆ(name) ์ ๊ฐ๊น๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ์ฝ๋๋ฅผ ๋ณด์.
a = 10
b = a
์ด ์ฝ๋๋ ์ซ์ 10์ด๋ผ๋ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋๊ณ , ๋ณ์ a๊ฐ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ค.
์ดํ b = a๊ฐ ์คํ๋๋ฉด b ์ญ์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋๋ค.
์ฆ, Python์์ ๋ณ์๋ ๊ฐ์ฒด ์์ฒด๊ฐ ์๋๋ผ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ(reference) ๋ผ๊ณ ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค.
Python์ ๋ฐ์ดํฐ ์ ๋ฌ ๋ฐฉ์
Python์์ ํจ์์ ๊ฐ์ ์ ๋ฌํ ๋๋ Call by Object Reference ๋ฐฉ์์ด ์ฌ์ฉ๋๋ค.
์ฆ, ํจ์ ํธ์ถ ์ ๊ฐ์ฒด ์์ฒด๊ฐ ๋ณต์ฌ๋๋ ๊ฒ์ด ์๋๋ผ ๊ฐ์ฒด์ ๋ํ ์ฐธ์กฐ๊ฐ ์ ๋ฌ๋๋ค.
ํ์ง๋ง ๊ฐ์ฒด์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ๊ฒฐ๊ณผ๋ ๋ค๋ฅด๊ฒ ๋ํ๋๋ค.
- immutable ๊ฐ์ฒด → ๊ฐ์ด ๋ณต์ฌ๋ ๊ฒ์ฒ๋ผ ๋์
- mutable ๊ฐ์ฒด → ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ์ฌ ์๋ณธ์ด ์์ ๋ ์ ์์
immutable ๊ฐ์ฒด ์ ๋ฌ ์์
๋จผ์ ๋ถ๋ณ ๊ฐ์ฒด(immutable)๋ฅผ ํจ์์ ์ ๋ฌํด๋ณด์.
def change_number(value):
value = 999
num = 100
change_number(num)
print(num)
์คํ ๊ฒฐ๊ณผ
100
ํจ์ ์์์ value = 999๋ก ๊ฐ์ ๋ณ๊ฒฝํ์ง๋ง ๋ฐ๊นฅ์ num ๊ฐ์ ๋ณํ์ง ์๋๋ค.
์ด์ ๋ ์ ์(int)๋ immutable(๋ถ๋ณ) ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ด๋ค.
ํจ์ ๋ด๋ถ์์ ์๋ก์ด ๊ฐ์ฒด 999๋ฅผ ๋ค์ ์ฐธ์กฐํ๊ฒ ๋์์ ๋ฟ,
์๋ ๊ฐ์ฒด๋ ๊ทธ๋๋ก ์ ์ง๋๋ค.
mutable ๊ฐ์ฒด ์ ๋ฌ ์์
์ด๋ฒ์๋ ๊ฐ๋ณ ๊ฐ์ฒด(mutable)๋ฅผ ์ ๋ฌํด๋ณด์.
def update_items(items):
items.append("streamlit")
topics = ["python", "sql"]
update_items(topics)
print(topics)
์คํ ๊ฒฐ๊ณผ
['python', 'sql', 'streamlit']
๋ฆฌ์คํธ๋ mutable ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ํจ์ ๋ด๋ถ์์ ๊ฐ์ ๊ฐ์ฒด์ ๋ด๋ถ ์ํ๊ฐ ์ง์ ์์ ๋๋ค.
๊ทธ๋์ ํจ์ ์คํ ์ดํ์๋ ์๋ณธ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ์ํ๋ก ๋จ๊ฒ ๋๋ค.
reference count
Python์ ๊ฐ์ฒด๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์กด์ฌํ ๋ ์ฐธ์กฐ ํ์(reference count) ๋ฅผ ๊ด๋ฆฌํ๋ค.
์ฆ, ํ๋์ ๊ฐ์ฒด๋ฅผ ๋ช ๊ฐ์ ๋ณ์๊ฐ ์ฐธ์กฐํ๊ณ ์๋์ง๋ฅผ ๊ธฐ๋กํ๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ์ฝ๋๋ฅผ ๋ณด์.
x = [1, 2, 3]
y = x
์ด ๊ฒฝ์ฐ ๋ฆฌ์คํธ ๊ฐ์ฒด [1,2,3]์ ๋ ๊ณณ์์ ์ฐธ์กฐ๋๊ณ ์๋ค.
- ๋ณ์ x
- ๋ณ์ y
์ฆ, ์ด ๊ฐ์ฒด์ reference count๋ 2๊ฐ ๋๋ค.
์ฐธ์กฐ๊ฐ ํ๋์ฉ ์ฌ๋ผ์ง๋ฉด reference count๋ ์ค์ด๋ ๋ค.
x = [1,2,3]
y = x
del y
์ด ๊ฒฝ์ฐ y๋ผ๋ ์ฐธ์กฐ๊ฐ ์ ๊ฑฐ๋๋ฉด์ reference count๊ฐ ๊ฐ์ํ๋ค.
garbage collection
๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๋ณ์๊ฐ ํ๋๋ ์์ผ๋ฉด ๊ทธ ๊ฐ์ฒด๋ ๋ ์ด์ ์ฌ์ฉํ ์ ์๋ ์ํ๊ฐ ๋๋ค.
์ด๋ Python์ garbage collection์ ํตํด ํ์ ์๋ ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ์ ๋ฆฌํ๋ค.
์ฆ Python ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ๋ค.
๊ฐ์ฒด ์์ฑ → ์ฐธ์กฐ(reference) ๋ฐ์ → ์ฐธ์กฐ ํด์ → garbage collection
Python์ ์ด๋ฌํ ๊ณผ์ ์ ์๋์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ์ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ ํ์๋ ์๋ค.
mutable vs immutable๊ณผ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
์ด์ ๊ธ์์ ์ ๋ฆฌํ๋ mutable / immutable ๊ฐ๋ ์ Python ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๋ฐ ๋งค์ฐ ์ค์ํ๋ค.
๋ํ์ ์ธ ์๋ฃํ์ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
immutable
- int
- float
- str
- tuple
mutable
- list
- dict
- set
immutable ๊ฐ์ฒด๋ ๋ด๋ถ ๊ฐ์ ์ง์ ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ณ๊ฒฝ ์ ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ค.
๋ฐ๋ฉด mutable ๊ฐ์ฒด๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ ์งํ ์ฑ ๋ด๋ถ ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๋ค.
์ด ์ฐจ์ด๋ ํจ์ ํธ์ถ, ๋ณต์ฌ, ๋ฐ์ดํฐ ์ฒ๋ฆฌ์์ ๋งค์ฐ ์ค์ํ ์ํฅ์ ๋ฏธ์น๋ค.
์ ๋ฆฌ
Python์์ ๋ณ์๋ ๊ฐ์ ์ ์ฅํ๋ ๊ณต๊ฐ์ด๋ผ๊ธฐ๋ณด๋ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ์ด๋ฆ์ผ๋ก ์ดํดํ๋ ๊ฒ์ด ์ค์ํ๋ค.
ํจ์ ํธ์ถ ์ Python์ Call by Object Reference ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ ๊ฐ์ฒด๊ฐ mutable์ธ์ง immutable์ธ์ง์ ๋ฐ๋ผ ๋์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค.
๋ํ Python์ ๊ฐ์ฒด์ reference count๋ฅผ ๊ด๋ฆฌํ๊ณ , ์ฐธ์กฐ๊ฐ ์ฌ๋ผ์ง ๊ฐ์ฒด๋ garbage collection์ ํตํด ์๋์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์์ ์ ๋ฆฌํ๋ค.
์ด๋ฌํ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๋ฐฉ์์ ์ดํ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ๊ณผ ํด๋์ค ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ๋ฐ์๋ ์ค์ํ ๊ธฐ๋ฐ์ด ๋๋ค.
'Python & SQL > Python Basics' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 13. [ํ์ด์ฌ] ์์๊ณผ ํ์ ํ์ธ (0) | 2026.03.08 |
|---|---|
| 12. [ํ์ด์ฌ] ํด๋์ค์ ๊ฐ์ฒด (0) | 2026.03.08 |
| 10. [ํ์ด์ฌ] mutable vs immutable (0) | 2026.03.07 |
| 9. [ํ์ด์ฌ] iterator์ generator (0) | 2026.03.07 |
| 7. [ํ์ด์ฌ] ํจ์ ๊ธฐ์ด์ ๋งค๊ฐ๋ณ์ (0) | 2026.03.07 |