[파이썬] 제너레이터 함수의 개념과 예제
제너레이터 함수(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()
함수를 사용하여 다음 값을 가져올 수 있습니다.
제너레이터 함수를 사용하면 큰 데이터 집합을 한 번에 메모리에 로드하지 않고, 데이터를 효율적으로 처리할 수 있습니다. 이러한 특성은 대용량 데이터셋이나 연속적인 스트림 데이터를 처리하는 데 유용합니다.