04_First-class Function

Copes·2021년 12월 21일
0

Python

목록 보기
4/7
post-thumbnail

First-class Function(일급 함수)

  • 함수를 First-class Citizen으로 취급하는 언어
  • 파이썬 함수 특징
    1. 런타임 초기화
    2. 함수를 변수에다 할당 가능
    3. 함수를 다른 함수의 인자로 전달 가능
    4. 함수를 결과로 반환 가능(return)
      -> 파이썬은 위의 것들이 가능하므로 함수형 프로그래밍 가능
  • Higher-order function(고위 함수)
    • map, filter, reduce, lambda
  • callable
    • 메소드 형태로 호출 가능한지 확인
  • partial
    • 인수 고정 -> callback 함수 사용

Code 1

Closure(클로저)

  • scope가 닫혀도 값을 기억(remember)한다.
  • 서버 프로그래밍은 동시성(concurrency) 제어 -> 메모리 공간에 여러 자원이 접근 -> DeadLock이 발생
    • 이를 해결하기 위해
      • 메모리를 공유하지 않고 메시지 전달로 처리하기 위한 -> Erlang
      • Closure는 메모리는 공유하되 변경되지 않는(Immutable, read only 구조를 적극적으로 사용 -> 함수형 프로그래밍
      • Closure는 불변 자료구조 및 atom, STM
        • 멀티 스레드 프로그래밍에 강점
        • Coroutine을 통해 단일 스레드에서도 병행성 가능

Code 2

  • '외부에서 호출된' 함수의 변수 값, 상태(주소) 복사 후 저장
    • 이후에 해당 상태로 접근(액세스 가능)
  • 전역변수(global)을 사용하는 경우 유지 보수가 어려울 수 있는데, 이런 식으로 Closure를 사용하면 문제를 해결할 수 있다.

Code 3

Decorator(데코레이터)

  • 장점
    1. 중복 제거, 코드 간결, 공통 함수 작성
    2. 로깅, 프레임워크, 유효성 체크... 등 가능 -> 공통 기능
    3. 조합해서 사용 용이
  • 단점
    1. 가독성 감소
    2. 특정 기능에 한정된 함수는 -> 단일 함수로 작성하는 것이 유리
    3. 디버깅 불편
  • 예를 들어 함수의 실행 시간을 구하는 기능 ->
    • 어떤 함수든 공통적으로 실행 시간을 뽑을 수 있다 -> 다른 함수를 장식해줄 수 있다.(데코레이터)

Code 4

0개의 댓글