본문 바로가기

Programming/python

python decorators에 대해서 알아보자

파이썬에서 데코레이터(Decorators)는 다른 함수를 수정하거나 기능을 추가하는 함수입니다.

데코레이터를 사용하면 함수의 코드를 변경하지 않고도 기존 함수의 동작을 확장하거나 데코레이터가 제공하는 기능을 추가할 수 있습니다.

데코레이터는 주로 코드 재사용과 함수들 간의 공통 기능을 추가하는데 유용하게 사용됩니다.

데코레이터는 함수를 입력으로 받고, 함수를 반환하는 클로저(Closure)의 형태로 작성됩니다. 

일반적으로 `@decorator_name` 형태로 함수 위에 데코레이터를 사용합니다.

간단한 예제를 통해 데코레이터의 동작 방식을 살펴보겠습니다:

def simple_decorator(func):
    def wrapper():
        print("Something is happening before the function is called.")
        func()
        print("Something is happening after the function is called.")
    return wrapper

@simple_decorator
def say_hello():
    print("Hello, world!")

# 함수 호출
say_hello()


위 예제에서 `simple_decorator`라는 데코레이터 함수가 정의되어 있습니다.

 

 `simple_decorator`는 `func`라는 함수를 입력으로 받아, `wrapper`라는 함수를 반환합니다.

 `wrapper` 함수 내에서 기존 함수 `func`를 호출하고 앞뒤로 추가적인 동작을 수행합니다.

그리고 `say_hello` 함수 위에 `@simple_decorator`라고 표시하여 `say_hello` 함수를 `simple_decorator` 데코레이터로 둘러싸도록 지정했습니다.

실행 결과는 다음과 같을 것입니다:

Something is happening before the function is called.
Hello, world!
Something is happening after the function is called.


`say_hello` 함수를 호출할 때, `simple_decorator` 데코레이터에 의해 `wrapper` 함수가 실행되고, 그 안에서 기존 `say_hello` 함수의 동작이 확장됩니다. 따라서 `say_hello` 함수의 앞뒤로 추가적인 출력이 발생합니다.

데코레이터를 사용하면 코드의 재사용성과 가독성을 높이고, 기존 함수에 기능을 추가하거나 수정하는데 유용한 기능을 제공합니다. 

파이썬에서 많은 라이브러리와 프레임워크에서 데코레이터를 활용하여 유용한 기능들을 제공하고 있습니다.

 

* ptyhon의 유용한 데코레이터 알아보기 

 

반응형