Menu
Coddy logo textTech

Decorators Usage

Coddy의 Python 데코레이터 코스 레슨. 12개 중 5번째.

Python에서 데코레이터(decorator)는 다른 함수를 입력으로 받아 해당 함수의 코드를 명시적으로 수정하지 않고도 그 동작을 확장하는 함수입니다. 데코레이터는 유연하고 재사용 가능한 방식으로 함수의 동작을 수정하거나 향상시킬 수 있는 강력한 방법입니다.

다음은 간단한 데코레이터 함수의 예시입니다:

def my_decorator(func):
    def wrapper():
        print("Before the function is called.")
        func()
        print("After the function is called.")
    return wrapper

이 예제에서 my_decorator 함수는 다른 함수인 func를 입력으로 받아 wrapper라는 새로운 함수를 반환합니다.

wrapper 함수는 func 함수가 호출되기 전과 후에 몇 가지 동작을 추가합니다.

challenge icon

챌린지

쉬움

함수 func를 입력으로 받아, func가 호출될 때마다 func의 이름과 func의 반환 값을 출력하는 새로운 함수를 반환하는 debug라는 데코레이터 함수를 작성하세요.

func의 이름을 가져오려면 func.__name__을 사용하세요.

다음은 debug 데코레이터를 사용하는 예시입니다:
 

def hello():
    return "Hello"

debug_hello = debug(hello)
debug_hello()

이 예시에서, 우리는 debug 데코레이터를 사용하여 hello 함수를 감싸고 debug_hello라는 새로운 함수를 생성합니다. debug_hello()를 호출하면, 데코레이터는 다음과 같이 출력합니다:

Calling hello
hello returned: Hello

debug에 전달되는 모든 함수는 인수가 없는 함수(no-arguments functions)라고 가정할 수 있습니다.

직접 해보기

Python 데코레이터의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러