Generators
2.9 제너레이터¶
필요한 경우 제너레이터를 사용하세요.
2.9.1 정의¶
제너레이터 함수는 yield 문을 실행할 때마다 값을 반환하는 이터레이터를 생성합니다. 값을 yield한 후, 제너레이터 함수의 실행 상태는 일시 중단되며 다음 값이 필요할 때 다시 실행됩니다.
2.9.2 장점¶
제너레이터는 각 호출마다 로컬 변수의 상태와 제어 흐름이 유지되기 때문에 더 간결한 코드 작성이 가능합니다. 또한, 한 번에 전체 리스트를 생성하는 함수보다 메모리를 적게 사용합니다.
2.9.3 단점¶
제너레이터의 로컬 변수는 제너레이터가 모든 값을 소진하거나 직접 가비지 컬렉션(Garbage Collection, GC)이 될 때까지 해제되지 않습니다.
2.9.4 권장 사항¶
반드시 제너레이터 함수의 docstring에서는 "Returns:" 대신 "Yields:"를 사용해야합니다.
제너레이터가 비용이 많이 드는 리소스를 관리하는 경우, 필수적으로 정리(clean up)를 해야 합니다.
정리를 효과적으로 수행하려면 제너레이터를 컨텍스트 매니저PEP-0533로 감싸는 것이 좋습니다.