더북(TheBook)

4.9 데코레이터와 함수 프로파일러

파이썬 프로그램을 개선하기 시작할 때 함수 실행 시간을 측정하는 것은 무척 유용하다. 아마 여러분은 수천 개의 임의의 숫자를 생성하는 함수의 실행 시간이 얼마나 걸리는지 소수점 단위까지 확인하고 싶을 것이다.

파이썬 함수는 일급-클래스 객체이기 때문에 데코레이터 함수(decorator functions)는 코드의 실행 속도를 측정하거나 다른 정보들을 제공할 수 있다. 데코레이션의 핵심 개념은 기존 함수가 그대로 동작하면서 추가 문장이 더 실행되는 래퍼 함수(wrapper function)라는 것이다.8

그림 4-3의 예시를 살펴보자. 데코레이터는 함수 F1을 입력받아서 다른 함수 F2를 반환한다. 이 두 번째 함수 F2는 F1을 호출하면서 다른 문장도 함께 실행하고 있다. F2가 바로 래퍼 함수다.

▲ 그림 4-3 데코레이터(decorator) 동작 방식(고수준 관점)

 

 


8 역주 래퍼(wrapper)는 주변을 감싸고 있다는 것으로, 함수에 추가적인 기능을 더하는 의미가 담겨 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.