Python 생성기는 값을 한꺼번에 저장하지 않고 필요할 때 순서대로 내보내는 반복 처리 방식이다.
원리
yield를 포함한 함수는 호출 시 생성기 객체를 반환한다. 반복을 진행할 때 다음 yield까지 실행하며 중간의 지역 상태를 유지한다.
Python 주요 기능 |
|---|
Python 리스트 컴프리헨션 · Python 모듈 · Python 예외 처리 · Python venv · Python asyncio |
Python dataclass · Python pathlib · Python 타입 힌트 · Python unittest · Python 생성기 |
예시
큰 로그를 한 줄씩 읽어 조건에 맞는 기록만 내보내면 모든 결과를 미리 리스트에 담지 않아도 된다. 소비자는 for 문으로 순회할 수 있다.
주의할 점
생성기는 보통 한 번 소진하면 같은 객체를 처음부터 다시 순회할 수 없다. 지연 실행 때문에 오류가 소비 시점에 나타날 수 있고 열린 자원의 종료 조건도 관리해야 한다.