프로그래밍언어/파이썬[중급]

[파이썬][중급] 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