반응형
파이썬의 함수는 일급 함수라고 하는데, 여기서 일급함수의 정의는 무엇일까?
일급함수란?
함수를 다른 변수와 동일하게 다루는 언어를 일급함수를 가졌다고 표현한다.
즉, 프로그래밍 언어에서 함수를 값으로 다룰 수 있는 것이다 ( 함수 스스로를 객체로 취급 하는 것)
정리하자면, 함수를 변수에 담에 유저가 원할때 함수를 호출하는 것이다.
예를 들어 일급 함수를 가진 언어에서는 다른 함수에 매개 변수로 제공하거나,
함수가 함수를 반환할 수 있으며, 변수에 할당할 수 있다.
일급 객체의 정의
( 아래와 같은 작업을 수행할 수 있는 프로그램 개체 )
- 런타임에 생성할 수 있어야 함
- 데이터 구조체의 변수나 요소에 할당할 수 있어야 함
- 함수 인수로 전달할 수 있어야 함
- 함수 결과로 반환할 수 있어야 함
예시 (example)
def factorial(n):
'''returns n!'''
return 1 if n < 2 else n * factorial(n-1)
fact = factorial
print(fact)
>> <function factorial at 0x0000026D93FCC948>
print(fact(5))
>> 120
print(map(factorial, range(11)))
>> <map object at 0x0000026D9412EF48>
print(list(map(factorial, range(11))))
>> [1, 1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800]
위 함수는 일급함수 의 본질을 보여준다.
factorial 함수를 fact 라는 변수에 할당하고,
이 fact 라는 변수를 통해 factorial 함수를 호출하는 것이다.
그리고 fact 를 통해서 map( ) 함수의 인수로 전달하고
함수 결과를 반환할 수 있다.
위와 같은 함수를 일급함수라고 하며,
파이썬에서는 모든 함수가 일급함수라고 불린다.
참고 링크
developer.mozilla.org/ko/docs/Glossary/First-class_Function
book.naver.com/bookdb/book_detail.nhn?bid=10910543
반응형
'Book > 전문가를 위한 파이썬' 카테고리의 다른 글
[전문가를 위한 파이썬 ] 1장 파이썬 데이터 모델 (0) | 2020.08.25 |
---|