π‘ λ³Έ ν¬μ€ν μ μμ λ΄μ©, κ΅μ¬, ChatGPTλ₯Ό μ°Έκ³ νμ¬ μ 리ν νμ΅ κΈ°λ‘μ λλ€.
κΈκ³Ό κ·Έλ¦Ό λ± λͺ¨λ μ½ν μΈ μ μ 리 λ° μμ±μ λ³Έ λΈλ‘κ·Έμμ μ§μ μ μλμμ΅λλ€.
Python κΈ°μ΄λΆν° Streamlit λ°μ΄ν° μκ°νκΉμ§ μ 리νλ νμ΅ κΈ°λ‘μ λλ€.
μ΄ κΈμ '17. [νμ΄μ¬] ν΄λ‘μ μ λ°μ½λ μ΄ν°' μ λλ€.
Pythonμμλ ν¨μ μμ λ λ€λ₯Έ ν¨μλ₯Ό μ μν μ μλ€.
μ΄μ²λΌ ν¨μ λ΄λΆμμ μ μλλ ν¨μλ₯Ό νμ©νλ©΄ ν¨μμ λμμ νμ₯νκ±°λ νΉμ κΈ°λ₯μ μΆκ°ν μ μλ€.
λνμ μΈ κ°λ μ΄ ν΄λ‘μ (Closure) μ λ°μ½λ μ΄ν°(Decorator) μ΄λ€.
μ΄ λ κ°λ
μ Pythonμ ν¨μ κ°μ²΄ νΉμ±μ μ΄ν΄νλ λ° μ€μν μμμ΄λ©°, μ€μ μ½λμμλ λ€μν λ°©μμΌλ‘ νμ©λλ€.
μ΄λ² κΈμμλ μ€μ²© ν¨μ, ν΄λ‘μ , λ°μ½λ μ΄ν°μ κ°λ κ³Ό κΈ°λ³Έ ꡬ쑰λ₯Ό μ 리ν΄λ³Έλ€.
μ€μ²© ν¨μ (Nested Function)
Pythonμμλ ν¨μ λ΄λΆμ λ λ€λ₯Έ ν¨μλ₯Ό μ μν μ μλ€.
μ΄λ₯Ό μ€μ²© ν¨μ(nested function) λΌκ³ νλ€.
μλ₯Ό λ€μ΄ λ€μκ³Ό κ°μ μ½λκ° μλ€.
def outer():
def inner():
print("inner function")
inner()
ν¨μλ₯Ό μ€ννλ©΄ λ΄λΆ ν¨μκ° νΈμΆλλ€.
outer()
μ€ν κ²°κ³Ό
inner function
μ΄μ²λΌ ν¨μ μμ μ μλ ν¨μλ μΈλΆ ν¨μ λ΄λΆμμλ§ μ¬μ©ν μ μλ€.
ν΄λ‘μ (Closure)
ν΄λ‘μ λ μΈλΆ ν¨μμ λ³μλ₯Ό κΈ°μ΅νλ λ΄λΆ ν¨μλ₯Ό μλ―Ένλ€.
λ€μ μμ λ₯Ό μ΄ν΄λ³΄μ.
def outer(msg):
def inner():
print(msg)
return inner
μ΄ ν¨μλ λ΄λΆ ν¨μ inner λ₯Ό λ°ννλ€.
func = outer("Hello Python")
func()
μ€ν κ²°κ³Ό
Hello Python
μ¬κΈ°μ inner ν¨μλ outer ν¨μμ λ³μ msgλ₯Ό κ³μ κΈ°μ΅νκ³ μλ€.
μ¦, ν΄λ‘μ λ μΈλΆ ν¨μ λ³μ + λ΄λΆ ν¨μκ° ν¨κ» λ¬Άμ¬ λμνλ ꡬ쑰μ΄λ€.
ν΄λ‘μ νΉμ§
ν΄λ‘μ μ νΉμ§μ μ 리νλ©΄ λ€μκ³Ό κ°λ€.
- ν¨μ λ΄λΆμμ μ μλ ν¨μ
- μΈλΆ ν¨μμ λ³μλ₯Ό κΈ°μ΅
- ν¨μ κ°μ²΄λ₯Ό λ°ν
μ΄ κ΅¬μ‘°λ₯Ό νμ©νλ©΄ μνλ₯Ό μ μ§νλ ν¨μλ₯Ό λ§λ€ μ μλ€.
μλ₯Ό λ€μ΄ μΉ΄μ΄ν° ν¨μλ₯Ό λ§λ€ μ μλ€.
def counter():
count = 0
def increment():
nonlocal count
count += 1
return count
return increment
μ¬μ© μμ
c = counter()
print(c())
print(c())
print(c())
μ€ν κ²°κ³Ό
1
2
3
μ΄μ²λΌ ν΄λ‘μ λ₯Ό μ¬μ©νλ©΄ ν¨μ λ΄λΆ μνλ₯Ό μ μ§ν μ μλ€.
λ°μ½λ μ΄ν° (Decorator)
λ°μ½λ μ΄ν°λ ν¨μλ₯Ό μμ νμ§ μκ³ κΈ°λ₯μ μΆκ°νλ λ°©λ²μ΄λ€.
Pythonμμλ ν¨μλ κ°μ²΄μ΄κΈ° λλ¬Έμ ν¨μλ₯Ό λ€λ₯Έ ν¨μμ μΈμλ‘ μ λ¬ν μ μλ€.
μλ₯Ό λ€μ΄ λ€μ μ½λλ₯Ό 보μ.
def decorator(func):
def wrapper():
print("start")
func()
print("end")
return wrapper
μ€ν κ²°κ³Ό
start
hello
end
μ΄μ²λΌ μλ ν¨μμ μΆκ° κΈ°λ₯μ κ°μΈλ ννλ‘ λμνλ€.
λ°μ½λ μ΄ν° λ¬Έλ²
Pythonμμλ λ°μ½λ μ΄ν°λ₯Ό @ λ¬Έλ²μΌλ‘ κ°λ¨νκ² μ¬μ©ν μ μλ€.
import time
def timer(func):
def wrapper():
start = time.time()
func()
end = time.time()
print("μ€ν μκ°:", end - start)
return wrapper
μ¬μ© μμ
@timer
def process():
for i in range(1000000):
pass
process()
μ΄μ²λΌ λ°μ½λ μ΄ν°λ₯Ό μ¬μ©νλ©΄ ν¨μμ κ³΅ν΅ κΈ°λ₯μ μ½κ² μΆκ°ν μ μλ€.
μ 리
ν΄λ‘μ μ λ°μ½λ μ΄ν°λ Pythonμμ ν¨μμ λμμ νμ₯ν λ μ¬μ©νλ μ€μν κ°λ μ΄λ€.
ν΄λ‘μ λ μΈλΆ ν¨μμ λ³μλ₯Ό κΈ°μ΅νλ λ΄λΆ ν¨μ ꡬ쑰μ΄λ©°,
λ°μ½λ μ΄ν°λ κΈ°μ‘΄ ν¨μμ μλ‘μ΄ κΈ°λ₯μ μΆκ°νλ λ°©λ²μ΄λ€.
μ΄λ¬ν κΈ°λ₯μ νμ©νλ©΄ μ½λμ μ¬μ¬μ©μ±μ λμ΄κ³ κ³΅ν΅ λ‘μ§μ ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν μ μλ€.
λ€μ κΈμμλ Python νλ‘κ·Έλ¨μ ꡬ쑰μ μΌλ‘ ꡬμ±νκΈ° μν λͺ¨λκ³Ό νλ‘μ νΈ κ΅¬μ‘°λ₯Ό μ΄ν΄λ³Έλ€.
'Python & SQL > Python Basics' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| 19. [νμ΄μ¬] μ λ ¬ κΈ°μ κ³Ό μ μ©ν μ νΈ ν¨μ (0) | 2026.03.08 |
|---|---|
| 18. [νμ΄μ¬] λͺ¨λκ³Ό νλ‘μ νΈ κ΅¬μ‘° (2) | 2026.03.08 |
| 16. [νμ΄μ¬] class methos vs static method (2) | 2026.03.08 |
| 15. [νμ΄μ¬] μ 보μλκ³Ό ν΄λμ€ λ΄λΆ ꡬ쑰 (2) | 2026.03.08 |
| 14. [νμ΄μ¬] μ€νμ λ©μλμ μ°μ°μ μ€λ²λ‘λ© (2) | 2026.03.08 |