제너레이터와 이터레이터
학습 목표
- 이터러블(Iterable)과 이터레이터(Iterator)의 차이를 이해한다
yield로 제너레이터 함수를 작성할 수 있다- 제너레이터 표현식을 사용할 수 있다
- 메모리 효율적인 데이터 처리 패턴을 적용할 수 있다
왜 중요한가
제너레이터는 데이터를 한 번에 메모리에 올리지 않고, 필요할 때 하나씩 생성하는 지연 평가(Lazy Evaluation) 방식을 구현합니다. ML/DL에서 대용량 데이터셋을 메모리 효율적으로 처리하는 DataLoader가 바로 제너레이터 패턴입니다.이터레이터 프로토콜
제너레이터 함수
yield 키워드를 사용하면 함수가 제너레이터가 됩니다.
return vs yield
제너레이터 표현식
yield from
다른 제너레이터에게 위임할 때 사용합니다.커스텀 이터레이터 클래스
AI/ML에서의 활용
제너레이터는 한 번만 순회할 수 있나요?
제너레이터는 한 번만 순회할 수 있나요?
네. 제너레이터는 한 번 소진되면 재사용할 수 없습니다. 다시 순회하려면 제너레이터를 새로 생성해야 합니다.
send()와 throw()는 무엇인가요?
send()와 throw()는 무엇인가요?
send(value)는 yield 표현식에 값을 전달하고, throw(exception)은 제너레이터 내부에서 예외를 발생시킵니다. 코루틴(Coroutine) 패턴에서 사용되지만, 일반적인 용도에서는 거의 필요하지 않습니다.체크리스트
- 이터러블과 이터레이터의 차이를 설명할 수 있다
-
yield로 제너레이터 함수를 작성할 수 있다 - 제너레이터의 메모리 효율 이점을 설명할 수 있다
-
yield from으로 서브제너레이터에 위임할 수 있다

