데이터를 한 번에 모두 만들지 않고 필요할 때 생산합니다.
iterator는 __next__로 다음 값을 제공하고 끝나면 StopIteration을 발생시킵니다. yield가 있는 함수는 generator가 되어 실행 상태를 기억하며 값 하나씩 생산합니다.
예제에서 def generate(): yield value 부분부터 찾으세요. 값을 만드는 표현식과 그 값을 다음 문장으로 넘기는 흐름을 한 줄씩 따라가면 실행 결과를 스스로 설명할 수 있습니다.
제너레이터는 한 번 소비하면 되돌릴 수 없습니다. len이나 인덱스가 필요하지 않으며 큰 파일과 스트림을 순차 처리할 때 메모리를 절약합니다.
무한 제너레이터나 외부 스트림에는 호출자가 처리량과 종료 조건을 통제할 수 있는 인터페이스를 제공합니다.
이 코드는 브라우저의 실제 Python에서 실행됩니다. 먼저 현재 결과를 확인한 뒤 짝수만 생산하는 제너레이터를 만들고 처음 다섯 값을 출력하세요.
제너레이터를 출력하면 값 목록이 아니라 객체 표현이 보입니다. 반복하거나 list로 소비해야 합니다.
직접 바꿔보세요짝수만 생산하는 제너레이터를 만들고 처음 다섯 값을 출력하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.