파이썬 기초문법

파이썬 데코레이터(decorator) 활용하기

Family in August 2024. 5. 12. 10:51
반응형


파이썬 데코레이터(decorator) 활용하기

데코레이터는 파이썬의 멋진 기능 중 하나입니다. 함수를 꾸며주는 역할을 하는 데코레이터를 적재적소에 사용하면 코드의 가독성과 재사용성을 높일 수 있습니다.


데코레이터의 기본 구조

def decorator_func(original_func):
    def wrapper_func(*args, **kwargs):
        # 추가 기능 구현
        result = original_func(*args, **kwargs)
        # 추가 기능 구현
        return result
    return wrapper_func

@decorator_func
def display():
    print('display 함수가 실행됐습니다.')

display()



데코레이터의 실용적 활용

1. 로깅 추가하기
2. 함수 실행 시간 측정하기
3. 인증 체크하기
4. 싱글톤 패턴 구현하기
5. 스레드 동기화하기

예를 들어 함수 실행 시간을 측정하는 데코레이터는 다음과 같이 작성할 수 있습니다.

import time

def measure_time(original_func):
    def wrapper_func(*args, **kwargs):
        start = time.time()
        result = original_func(*args, **kwargs)
        end = time.time()
        print(f"{original_func.__name__} took {end-start} sec")
        return result
    return wrapper_func

@measure_time
def display_info(name, age):
    time.sleep(1)
    print(f"display_info({name}, {age})")

display_info("John", 25)



이렇게 데코레이터는 여러 함수에 손쉽게 부가 기능을 추가할 수 있습니다. 코드의 중복을 피하고 재사용성을 극대화할 수 있어 파이썬 프로그래밍에서 활용도가 높습니다. 상황에 맞는 데코레이터를 직접 작성하거나, 파이썬 표준 라이브러리나 third-party 모듈에서 제공하는 데코레이터를 활용할 수 있습니다.

반응형