프로그래밍언어/파이썬[중급]
[파이썬][중급] Chapter09. 일급 객체와 클로저
about_IT
2025. 5. 18. 21:37
728x90
파이썬은 함수도 변수처럼 다룰 수 있는 '일급 객체(First-Class Object)'를 지원합니다. 이 개념은 함수를 변수에 저장하거나, 인자로 전달하거나, 반환값으로 사용할 수 있게 해주며, 클로저(Closure)와 같은 고급 기능을 가능하게 합니다.
● 일급 객체란?
프로그래밍 언어에서 일급 객체란 다음 조건을 만족하는 요소를 의미합니다.
- 변수에 할당할 수 있음
- 함수의 인자로 전달할 수 있음
- 함수의 반환값으로 사용할 수 있음
파이썬의 함수는 이 세 가지 조건을 모두 만족하므로 일급 객체로 분류됩니다.
def greet(name):
return f"Hello, {name}"
say_hello = greet
print(say_hello("Python"))
● 클로저(Closure)란?
클로저는 함수 내부에 선언된 내부 함수가 외부 함수의 변수를 참조하고, 그 상태를 유지하는 함수 객체입니다. 클로저는 상태를 기억하는 함수로서, 함수형 프로그래밍에서 매우 유용하게 활용됩니다.
def outer(msg):
def inner():
print(f"메시지: {msg}")
return inner
f = outer("클로저 예제")
f()
이 코드에서 inner()
함수는 외부 함수 outer()
의 지역 변수 msg
를 기억하고 있으며, 이를 호출할 때 해당 값이 유지됩니다.
● 클로저의 활용 예
클로저는 상태를 유지하는 콜백, 데코레이터, 이벤트 핸들러 등에 자주 사용됩니다.
def multiplier(factor):
def multiply(n):
return n * factor
return multiply
times3 = multiplier(3)
print(times3(10)) # 출력: 30
multiplier
는 곱셈 함수를 생성하는 함수이며, 클로저를 이용해 인자 factor
의 상태를 기억합니다.
● 마무리
일급 객체와 클로저는 파이썬의 유연함을 상징하는 강력한 기능입니다. 이 개념을 제대로 이해하면 고차 함수, 데코레이터, 함수형 프로그래밍 등 고급 주제를 더욱 쉽게 다룰 수 있습니다.
728x90