👩‍💻 Develope/Python

[Python] 데코레이터 (decorator)

heywantodo 2023. 5. 3. 14:38
728x90
반응형

[Python] 데코레이터 (decorator)

데코레이터란?

데코레이터 (Decorator)는 파이썬에서 함수클래스의 기능확장하거나 수정할 수 있게 해주는 기능

데코레이터를 사용하면 기존 코드를 건드리지 않고 함수나 클래스의 동작을 수정할 수 있음

 

데코레이터 사용 이유

1. 코드의 재사용성모듈성을 높임 

2. 코드의 가독성을 높일 수 있는 강력한 도구 중 하나

3. 코드의 중복을 줄이고 유지보수성을 높일 수 있음

 

데코레이터 사용 예제

데코레이터가 필요한 함수 위에 @ + (데코레이터로 사용 할) 함수명으로 선언을 해줌

def my_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

@my_decorator
def say_hello():
    print("Hello!")

say_hello()

1. 'my_decorator' 함수는 func 인자로 전달 된 함수를 래핑하고, 래핑된 함수를 반환하는 함수

2. 'wrapper' 함수는 래핑된 함수를 실행하기 전과 후에 추가적인 동작을 수행 

3. '@my_decorator'는 'say_hello' 함수에 'my_decorator' 함수를 데코레이터로 사용한다는 의미

즉, 'say_hello'는 'my_decorator'함수에 의해 래핑된 함수인 'wrapper' 함수를 호출

 

'say_hello'를 호출했을 때 결과는 다음과 같음

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

 

파이썬 웹 프레임워크인 Flask나 Django에서는 데코레이터를 많이 사용하여

웹 애플리케이션에서 로그인 인증, 권한 확인, 캐싱 등의 기능을 쉽게 구현 할 수 있다고 함

 

728x90
반응형