본문 바로가기

Programming

Python functools 모듈의 내장함수[기본]

728x90
반응형

functools 모듈은 python 표준 라이브러리 중 하나로써 다른 함수에 적용하거나 다른 함수를 반환하는 고차 함수를 위한 모듈이다. 
functools 모듈의 함수를 잘 사용한다면 더 심플하면서 풍부한 표현을 할 수 있다. 

 

functools.reduce

iterable의 두 인자를 왼쪽에서 오른쪽으로 연산을 누적으로 적용해서 최종적으로 단일 값으로 줄인다. 간단한 예는 아래와 같다. 

reduce(lambda x, y: x+y, [1,2,3,4,5]) # (((1+2)+3)+4)+5

연산의 과정을 다 산출하고 싶으면 functools.accumulate()를 사용할 수 있다. 

 

functools.cmp_to_key(func)

key함수를 인자로 가진 함수 (sorted(), min(), max()...) 에 사용할 수 있다. key함수는 하나의 인자를 받아들여서 정렬 키로 사용할 다른 값을 반환하는 역할을 하는데 여기서 cmp_to_key는 두 개의 인자를 받아들여 작으면 음수, 같으면 0, 크면 양수를 반환한다. 

sorted(iterable, key=cmp_to_key(locale.strcoll))

 

functools.partial

기존 함수를 이용해 새로운 함수를 만들 수 있다. 즉 하나 이상의 인수가 이미 채워진 새 버전의 함수를 만들 때 사용할 수 있다. 
아래 예제는 문자를 입력받아 숫자로 변환하는 기존 함수에서 입력 받는 문자의 진수를 추가로 지정하는 함수를 생성한다.

from functools import partial
basetwo = partial(int, base=2)
basetwo.__doc__ = 'Convert base 2 string to an int.'
basetwo('10010') # 18
728x90
반응형

'Programming' 카테고리의 다른 글

[자료구조] Heap  (0) 2022.10.07
[Ray]1. 시작하며  (0) 2022.10.05
파이썬 로그 핸들링  (0) 2022.08.01
파이썬 예외처리  (0) 2022.08.01
Black을 이용한 코드 스타일 맞추기  (0) 2022.07.14