[파이썬] yield 이란?
yield
는 파이썬에서 제너레이터 함수(Generator Function)를 정의할 때 사용되는 키워드입니다. yield
는 함수에서 값을 반환하면서 함수의 상태를 일시 중단하고, 다음 값을 생성하기 위해 상태를 보존합니다. 이를 통해 제너레이터는 값을 하나씩 생성하고 메모리를 효율적으로 사용할 수 있습니다.
yield
의 작동 원리를 보여주는 예제를 살펴보겠습니다:
예제: yield
를 사용한 제너레이터 함수
def simple_generator():
yield 1
yield 2
yield 3
# 제너레이터 객체 생성
gen = simple_generator()
# next() 함수를 사용하여 값을 하나씩 가져옴
print(next(gen)) # 출력: 1
print(next(gen)) # 출력: 2
print(next(gen)) # 출력: 3
# 다음 값을 가져오려면 next()를 호출할 수 있음
이 예제에서 simple_generator
함수는 세 번의 yield
문을 사용하여 값을 생성합니다. 제너레이터를 호출할 때마다 next()
함수를 사용하여 다음 값을 가져올 수 있습니다. 함수의 상태가 yield
에서 일시 중단되고 다음 값을 생성하기 위해 유지됩니다.
제너레이터는 반복 가능한 객체(Iterable)로서 for
루프와 같은 순회 구조에서 사용할 수 있으며, 필요할 때만 값을 생성하므로 메모리 효율적으로 동작합니다.
for value in simple_generator():
print(value)
# 출력: 1, 2, 3
이러한 방식으로 yield
를 사용하면 큰 데이터셋이나 연속적인 스트림 데이터를 처리할 때 메모리 소비를 최소화할 수 있습니다.