[파이썬] 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를 사용하면 큰 데이터셋이나 연속적인 스트림 데이터를 처리할 때 메모리 소비를 최소화할 수 있습니다.