[Python] 객체, 그리고 일급 객체

jul ee·2025년 4월 2일

데이터 성장기

목록 보기
7/139

🖇  객체란?
🖇  일급 객체(First-Class Object)란?
🖇  일급 객체 함수의 활용: 고차 함수


프로그래밍을 배우다 보면 '일급 객체(First-Class Object)'라는 개념을 접하게 된다.

이 개념은 특히 파이썬처럼 객체 지향 언어에서 매우 중요한데,

이 글에서는
일급 객체를 제대로 이해하기 위해 먼저 객체와 객체 지향 프로그래밍(OOP)을 살펴보고, 파이썬 함수가 왜 일급 객체인지까지 예제를 통해 정리해 보았다.



🖇  객체란?

객체(Object)는 속성(변수)행동(함수)을 가진 독립적인 존재이다.

객체는 컴퓨터 세상뿐만 아니라 우리 주변에서도 적용할 수 있는 개념이다.

e.g.,  객체(자동차) = 속성(색상, 브랜드, 속도) + 행동(달리기, 멈추기)

파이썬은 객체 지향 언어로, 모든 것이 객체이다.
변수도, 함수도, 숫자도, 문자열도 모두 객체이다.


객체 지향 프로그래밍이란?

  • 프로그램의 구성 요소들을 객체로 표현하고,

  • 각 객체 간의 상호작용으로 구성된 프로그래밍 방식이다.

    절차 지향 vs 객체 지향

     절차 지향 프로그래밍
      :  연산이 순차적으로 진행되는 프로시저(procedure)를 기반으로 하는 프로그래밍 방법

    절차 지향객체 지향
    순차적인 흐름객체 중심 구조
    데이터와 함수가 분리됨데이터와 행동을 객체에 묶음
    작은 변화에도 전체 수정독립적인 단위로 유지보수 쉬움



🖇  일급 객체(First-Class Object)란?

일급 객체란,

객체 지향 프로그래밍에서 사용되는 개념 중 하나로
다른 객체들에 일반적으로 적용할 수 있는 연산을 모두 지원하는 객체이다. 여기서 연산이란 연산자로 수행할 수 있는 연산뿐만 아니라 인자로 넘기기, 비교하기, 수정하기, 변수에 대입하기 등을 의미한다.

더 구체적으로 보면
다음 조건을 모두 만족하는 객체를 말한다.

  1.   변수에 할당하거나 자료구조(리스트, 딕셔너리 등)에 담을 수 있다.
  2.   매개변수로 전달할 수 있다.
  3.   리터값으로 사용할 수 있다.

숫자(int)로 살펴보자.

x = 3                        # 1. 변수에 할당
nums = [1, 2, 3]             # 2. 리스트에 담기

def add(a):                 # 3. 매개변수로 전달
    return a + 1

print(add(x))               # 4. 리턴값으로 사용

    이렇게
    숫자는 3가지 조건을 모두 만족하기 때문에 일급 객체라고 할 수 있다.

우리가 잘 알고 있는 int, float, str 타입의 객체는 일급 객체이다.



함수도 일급 객체일까?

결론부터 말하자면, 파이썬의 함수는 일급 객체이다.
아래 예제로 조건을 하나씩 확인해 보자.

  1. 변수에 할당하거나
def add(a, b):
    return a + b

f = add
print(f(2, 3))  # [결과] 5
  1. 리스트(자료구조)에 담을 수 있다
def sub(a, b):
    return a - b

operations = [add, sub]

for op in operations:
    print(op(5, 2))  # [결과] 7, 3
  1. 매개변수로 전달할 수 있다
def apply(func, a, b):
    return func(a, b)

print(apply(add, 10, 5))  # [결과] 15
  1. 리턴값으로 사용 가능
def greeting(name):
    def say_hello():
        print(f"Hello, {name}!")
    return say_hello

hello_func = greeting("AIFFEL")
hello_func()  # [결과] Hello, AIFFEL!

    이처럼 함수도 할당, 전달, 리턴이 가능하므로
    파이썬에서는 함수 자체가 데이터처럼 자유롭게 사용된다.

함수를 변수처럼 자유롭게 다룰 수 있다는 것이 파이썬의 유연성과 확장성의 핵심이라고 할 수 있다.




🖇  일급 객체 함수의 활용: 고차 함수

일급 객체로서의 함수는
고차 함수(Higher-order Function)를 가능하게 한다.

    고차 함수란?
    함수를 인자로 받거나, 함수를 반환하는 함수를 말합니다.

    즉, 함수를 매개변수처럼 다루거나, 함수 안에서 새로운 함수를 만들어 리턴하는 것이다.

     이러한 동작이 가능하려면 함수도 데이터처럼 다룰 수 있어야 하는데
    이걸 가능하게 해주는 개념이 일급 객체이다.

     대표적인 고차 함수 예시

  • map(function, iterable)
  • filter(function, iterable)
  • sorted(list, key=function)
# 홀수만 필터링
nums = range(10)
def is_odd(x):
    return x % 2 == 1

print(list(filter(is_odd, nums)))  # [결과] [1, 3, 5, 7, 9]


고차 함수와 같은 함수형 프로그래밍이 가능한 것은

파이썬은 함수를 변수처럼 자유롭게 다룰 수 있게 해주는 일급 객체 특성을 갖고 있기 때문이다.

덕분에 코드를 더 간결하게 구성하고, 반복을 줄이며 재사용성을 높여
직관적이고 효율적인 프로그래밍이 가능해진다 :)


profile
AI에 관심을 가지고, 데이터로 가치를 만들어 나가는 과정을 기록합니다.

0개의 댓글