본문 바로가기

IT/Python

Python 프로그래밍: 데코레이터와 제너레이터에 대해

1. 데코레이터란 무엇인가?

데코레이터는 Python의 고급 기능 중 하나로, 함수나 메서드의 동작을 수정하거나 확장하는 데 사용됩니다. 데코레이터는 '@' 심볼로 표시되며, 수정하려는 함수 바로 위에 위치합니다.

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()

 

위 코드에서 `my_decorator`는 데코레이터 함수입니다. `say_hello` 함수는 `my_decorator`에 의해 데코레이트되었고, 그 결과 `say_hello` 함수가 호출되기 전후로 추가적인 동작이 수행됩니다.

 

2. 제너레이터란 무엇인가?

제너레이터는 Python의 다른 고급 기능 중 하나로, 반복 가능한 객체를 생성하는 함수입니다. 일반 함수는 실행이 종료되면 그 상태를 유지하지 않지만, 제너레이터는 상태를 유지하여 필요할 때마다 값을 생성(yield)합니다.

def count_up_to(n):
    count = 1
    while count <= n:
        yield count
        count += 1

for number in count_up_to(5):
    print(number)

 

위 코드에서 `count_up_to` 함수는 제너레이터 함수입니다. `yield` 키워드는 함수가 제너레이터임을 나타냅니다. 이 함수를 반복할 때마다 다음 숫자를 생성합니다.

 

3. 데코레이터와 제너레이터의 활용

데코레이터와 제너레이터는 코드를 더 효율적이고 유연하게 만드는 데 큰 도움이 됩니다. 예를 들어, 데코레이터는 로깅, 타이밍, 레이트 리미팅, 메모이제이션 등과 같은 재사용 가능한 기능을 쉽게 추가할 수 있게 해줍니다.

 

제너레이터는 대용량 데이터를 처리할 때 유용합니다. 메모리에 한 번에 모든 데이터를 로드할 필요 없이, 필요한 만큼만 데이터를 생성하므로 메모리를 효율적으로 사용할 수 있습니다.

 

4. 결론

Python의 고급 기능인 데코레이터와 제너레이터는 프로그래밍을 더욱 효과적이고 즐겁게 만듭니다