기본 패턴
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는 리스트처럼 아무 때나 인덱스로 접근할 수 없습니다. "순차적으로 한 번씩 읽는 흐름"에 맞는 도구인지 먼저 판단하는 편이 좋습니다.