파이썬에서 데코레이터(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` 함수의 앞뒤로 추가적인 출력이 발생합니다.
데코레이터를 사용하면 코드의 재사용성과 가독성을 높이고, 기존 함수에 기능을 추가하거나 수정하는데 유용한 기능을 제공합니다.
파이썬에서 많은 라이브러리와 프레임워크에서 데코레이터를 활용하여 유용한 기능들을 제공하고 있습니다.
'Programming > python' 카테고리의 다른 글
python lambda에 대해서 알아보자 (0) | 2023.07.25 |
---|---|
python의 주요 decorator에 대해서 알아보자 (0) | 2023.07.25 |
python Scope Resolution(스코프 결정)에 대해서 알아보자 (0) | 2023.07.25 |
python의 namespaces에 대해 알아보자 (0) | 2023.07.25 |
python의 메모리 관리에 대해서 알아보자 (0) | 2023.07.25 |