Python고급 주제

generator와 yield

값을 한꺼번에 만들지 않고 필요할 때마다 하나씩 생성하는 Python generator와 `yield`의 기본 패턴입니다.

마지막 수정 2026년 3월 19일

기본 패턴

python
def countdown(n):
    while n > 0:
        yield n
        n -= 1

설명

  • yield가 있는 함수는 일반 함수처럼 한 번에 끝나는 대신, 값을 하나씩 생성하는 generator가 됩니다.
  • generator는 필요할 때마다 다음 값을 계산하므로 메모리를 아끼는 데 유리할 수 있습니다.
  • 큰 데이터 흐름을 순차 처리하거나 무한 시퀀스를 다룰 때 특히 유용합니다.
  • return이 함수를 완전히 끝내는 반면, yield는 현재 상태를 보존한 채 잠시 멈춥니다.

짧은 예제

python
for value in countdown(3):
    print(value)

# 3
# 2
# 1

빠른 정리

표현의미
yield x값 하나를 생성하고 상태 유지
generator function호출 시 generator 객체 반환
lazy evaluation필요할 때 계산
for와 함께 사용generator를 자연스럽게 순회

공식 참고: More on Defining Functions

주의할 점

generator는 리스트처럼 아무 때나 인덱스로 접근할 수 없습니다. "순차적으로 한 번씩 읽는 흐름"에 맞는 도구인지 먼저 판단하는 편이 좋습니다.