[파이썬] 제너레이터 함수의 개념과 예제

제너레이터 함수(Generator Function)는 파이썬에서 반복 가능한 객체(Iterable)를 생성하는 함수입니다. 제너레이터는 이터레이션(Iteration)을 위해 필요한 값을 실시간으로 생성하고 메모리를 효율적으로 관리할 수 있게 해줍니다.

제너레이터 함수를 정의하려면 함수 내에서 yield 키워드를 사용합니다. yield는 값을 반환하고 함수의 실행 상태를 일시 중단하며, 다음 요청이 들어올 때까지 상태를 유지합니다.

아래는 제너레이터 함수의 개념과 예제입니다:

예제 1: 제너레이터 함수의 기본 구조

def simple_generator():
    yield 1
    yield 2
    yield 3

# 제너레이터 객체 생성
gen = simple_generator()

# 제너레이터를 이용한 순회
for value in gen:
    print(value)

# 출력: 1, 2, 3

위의 simple_generator 함수는 세 개의 값을 생성하고 yield를 통해 값을 반환합니다. 함수를 호출할 때마다 상태가 유지되며, for 루프를 통해 제너레이터를 순회합니다.

예제 2: 무한 제너레이터

def infinite_generator():
    num = 1
    while True:
        yield num
        num += 1

# 제너레이터 객체 생성
gen = infinite_generator()

# 처음 5개의 값을 출력
for _ in range(5):
    print(next(gen))

# 출력: 1, 2, 3, 4, 5

이 예제에서는 infinite_generator 함수가 무한한 숫자 시퀀스를 생성합니다. while True 루프와 yield를 통해 무한한 값을 반환합니다. next() 함수를 사용하여 다음 값을 가져올 수 있습니다.

제너레이터 함수를 사용하면 큰 데이터 집합을 한 번에 메모리에 로드하지 않고, 데이터를 효율적으로 처리할 수 있습니다. 이러한 특성은 대용량 데이터셋이나 연속적인 스트림 데이터를 처리하는 데 유용합니다.