상태를 직접 관리하지 않아도 되는 반복자
함수 본문에 yield가 있으면 호출 결과는 제너레이터야. next가 들어올 때 yield까지 실행하고 값을 내준 뒤 그 자리의 지역 변수와 실행 위치를 보존해. 다음 next에서 바로 다음 줄부터 이어가. 수동 반복자를 만들려던 사례의 약 90%는 이 모양으로 더 간단해져.
필요한 만큼만 만든다
제너레이터는 값을 모두 준비하지 않으므로 무한 수열이나 큰 파일도 다룰 수 있어. 소비자가 멈추면 뒤의 값은 계산조차 하지 않아. yield from은 다른 반복값의 원소를 차례로 넘겨 위임 코드를 줄여줘.
파일을 줄 단위로 흐르게 해
파일 객체 자체가 반복자이므로 한 줄씩 읽고 변환한 값을 yield하면 전체 파일을 메모리에 올리지 않는 처리 단계를 만들 수 있어.
send와 throw는 역사적 도구야
send와 throw는 제너레이터 안으로 값과 예외를 보낼 수 있어 초기 코루틴 형태에 쓰였어. 오늘의 비동기 코드는 비동기/await가 더 분명하므로, 기존 코드를 읽을 만큼만 이해해도 돼.