[파이썬] 데코레이터와 코드 변경 최소화

데코레이터는 파이썬에서 함수나 클래스를 수정하지 않고도 기존 코드에 추가 기능을 적용하는 방법을 제공합니다. 이를 통해 코드 변경을 최소화하고 유지보수를 더욱 용이하게 할 수 있습니다.

데코레이터란?

데코레이터는 함수나 클래스를 감싸는 형태로 작성되며, 동일한 형태의 다양한 함수나 클래스에 공통적인 기능을 추가합니다. 예를 들어, 로깅, 인증, 성능 측정 등의 작업을 함수나 클래스에 적용하고 싶을 때 데코레이터를 사용할 수 있습니다.

데코레이터의 장점

데코레이터를 사용하면 기존 코드를 수정하지 않고도 새로운 기능을 추가할 수 있습니다. 이로 인해 코드 변경을 최소화할 수 있으며, 원래 코드의 동작을 변경하지 않아 기존 기능에 영향을 미치지 않습니다. 또한, 데코레이터를 사용하면 코드의 재사용성과 가독성을 향상시킬 수 있습니다.

데코레이터 예제

다음은 간단한 데코레이터 예제입니다. 이 예제에서는 함수의 실행 시간을 측정하는 데코레이터를 작성합니다.

import time

def measure_time(func):
    def wrapper(*args, **kwargs):
        start_time = time.time()
        result = func(*args, **kwargs)
        end_time = time.time()
        execution_time = end_time - start_time
        print(f"Function {func.__name__} took {execution_time} seconds to execute.")
        return result
    return wrapper

@measure_time
def calculate_sum(a, b):
    time.sleep(1)
    return a + b

result = calculate_sum(2, 3)
print(result)

위 코드에서 measure_time 데코레이터 함수는 다른 함수를 인자로 받습니다. 이 함수를 실행하기 전과 후에 시간을 측정하고, 측정된 시간을 출력합니다. @measure_time 문법을 사용하여 calculate_sum 함수에 데코레이터를 적용했습니다.

결과적으로, calculate_sum 함수를 호출할 때 함수 실행 시간이 측정되고 출력됩니다. 이를 통해 기존 코드를 수정하지 않고도 함수 실행 시간을 측정하는 기능을 추가할 수 있습니다.

마무리

데코레이터는 파이썬에서 기존 코드를 수정하지 않고도 추가 기능을 적용하는 강력한 도구입니다. 이를 통해 코드 변경을 최소화하고 유지보수를 더욱 용이하게 할 수 있습니다. 데코레이터는 다양한 상황에서 사용될 수 있으므로, 여러분은 필요에 따라 다양한 데코레이터를 작성하고 활용할 수 있습니다.