이터레이터와 제너레이터를 활용한 데이터 흐름 제어

데이터 흐름 제어는 프로그래밍에서 중요한 개념 중 하나입니다. 이터레이터와 제너레이터는 데이터 흐름을 효과적으로 제어하는데 도움이 되는 파이썬의 기능입니다.

이터레이터 (Iterator)

이터레이터란 순회 가능한 객체 (iterable) 안에서 항목들을 차례대로 반복(iterate)할 수 있는 객체를 말합니다. 예를 들어 리스트, 튜플, 세트, 문자열 등은 모두 이터레이터입니다.

다음은 이터레이터의 예시 코드입니다.

my_list = [1, 2, 3, 4, 5]
my_iter = iter(my_list)

print(next(my_iter))  # 1
print(next(my_iter))  # 2
print(next(my_iter))  # 3

이터레이터 객체를 생성한 후 next() 함수로 다음 항목을 순차적으로 가져올 수 있습니다. StopIteration 예외가 발생할 때까지 계속해서 값을 받아올 수 있습니다.

제너레이터 (Generator)

제너레이터는 이터레이터를 생성하는 함수입니다. 일반적인 함수와 달리 값을 반환한 후 호출 상태를 저장한 채 다음 값은 호출될 때까지 기다립니다. 이는 메모리 사용을 최적화하여 대용량 데이터를 처리할 때 유용합니다.

다음은 제너레이터의 예시 코드입니다.

def my_generator():
    yield 1
    yield 2
    yield 3

gen = my_generator()

for item in gen:
    print(item)

위의 코드는 1부터 3까지의 값을 차례대로 반환하는 제너레이터 함수를 생성한 후 yield 키워드를 사용하여 값들을 반환합니다. 이를 호출하는 for 루프를 통해 값을 순회하고 출력할 수 있습니다.

결론

이터레이터와 제너레이터는 파이썬의 데이터 흐름을 제어하는 강력한 기능입니다. 이를 활용하면 메모리 사용을 최적화하고 대용량 데이터를 효율적으로 처리할 수 있습니다. 데이터 흐름을 제어하는데 있어 이러한 개념을 잘 이해하고 활용하는 것이 중요합니다.

#파이썬 #이터레이터 #제너레이터