본문 바로가기
Data Science/파이썬으로 데이터분석 하기

Python 기초 - 일급함수(first-class)란 무엇인가

by 싸코 2017. 9. 20.

파이썬 내용 보충 - 밑바닥부터 시작하는 데이터 과학 中

※본 포스팅은 "밑바닥부터 시작하는 데이터 과학"을 공부하면서 Python2로 작성된 샘플 코드를 Python3으로 변환할 때 발생하는 에러 혹은 수정 내용 등 또는 필용한 내용을 정리하기 위해 작성되었습니다.


일급 함수(first-class)

일급 함수(first-class)는 객체 지향 프로그래밍(object-oriented programming) 중에서 파이썬을 포함한 몇몇 프로그래밍 언어에서 발견할 수 있는 개념이다. 아래는 이를 잘 드러내는 파이썬의 철학이다.


'모든 것은 객체(object)다'


객체는 숫자, 문자열, 튜플, 리스트, 딕셔너리, 그리고 함수를 포함한다. 함수는 그 중에서도 일급 시민(first-class citizen)이다. 이 뜻은 다음과 같다

  • 함수를 변수에 할당 가능
  • 다른 함수에서 해당 함수를 인자로 전달 가능
  • 함수에서 함수를 반환 가능

우리는 변수(variable)를 쉽게 객체라고 생각한다. 하지만 함수(function)도, 클래스(class) 등도 객체가 될 수 있다고는 생각하지 못한다. 파이썬의 다른 기타 자료구조를 포함한 모든 것은 객체이기 때문에 무엇이든 함수의 인자로(argument) 전달 가능하다.


1
2
3
4
5
6
7
    def apply_one(f):
        ''' argument가 숫자 1인 함수 f를 반환한다 '''
        return f(1)
    def triple(x):
        return x*3
    result = apply_one(triple)    #결과는 3
cs

함수를 다른 다른 자료구조(리스트, 튜플, 셋, 딕셔너리)의 요소로도 사용할 수 있다


댓글