파이썬 decorator

Code Snippets 2021. 4. 22. 11:36

데코레이터는 말로 표현하기 참 어려운 패턴인데, 어쨌든 공통되는 코드를 '템플릿화' 하고 중복으로 작성하지 않기 위하여 사용한다고 보면 된다. 함수의 실행시간을 나타내기 위하여 데코레이터 함수를 적용해볼 수 있다.

'코드를 바꾸지 않고 기능을 추가하거나 수정하고 싶을 때 사용하는 파이썬 문법'이라고 소개된 글도 봤지만, 파이썬에서는 비록 @를 이용해서 애트리뷰트로 데코레이터 패턴을 사용하기는 하지만 이건 파이썬 문법이 아니다. 프로그래밍 언어에 상관없이 적용 가능한 패턴일 뿐, 문법이 아니당.

import time
def timer(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        print("running time : {}", format(end_time - start_time))
        return result
    return wrapper
    
    
@timer   # 이 녀석이 위에 선언된 함수
def test2(num1, num2):
    result = 0
    for num in range(num1, num2 + 1):
        result += num
    return result
admin