Generator and Iterator

Generator and Iterator 이터레이터는 값을 차례대로 반환하는 객체로, __iter__()와 __next__() 메서드를 구현한다. 제너레이터는 yield 키워드를 사용하여 값을 하나씩 반환하는 함수로, 이터레이터를 생성한다. 제너레이터와 이터레이터의 주요 차이점 비교 항목 이터레이터 제너레이터 정의 방식 __iter__와 __next__ 메서드를 구현하는 클래스 yield 키워드를 사용하는 함수 상태 저장 인스턴스 변수를 통해 명시적으로 상태 저장 함수의 실행 상태가 자동으로 저장 메모리 사용 모든 상태를 명시적으로 저장해야 함 필요한 값만 생성하여 메모리 효율적 구현 복잡도 상대적으로 복잡함 (여러 메서드 구현 필요) 매우 단순함 (일반 함수처럼 작성) 용도 복잡한 이터레이션 로직이 필요한 경우 간단한 순차적 데이터 생성 재사용성 클래스로 구현되어 재사용 용이 한 번 순회하면 소진됨 기능 확장성 클래스이므로 추가 메서드와 속성 정의 가능 함수 범위로 제한됨 성능 상태 관리를 위한 추가 오버헤드 존재 매우 가벼움 코드 가독성 구조화된 형태로 명확하나 장황할 수 있음 간결하고 직관적 양방향 통신 메서드를 통해 구현 가능 send() 메서드로 기본 제공 이러한 차이점들은 실제 사용에서 다음과 같은 의미를 가진다. ...

November 24, 2024 · 5 min · Me

Python - Generators

Generators 파이썬의 제너레이터(Generator)는 반복 가능한 객체를 생성하는 강력한 도구 제너레이터의 기능과 역할 메모리 효율성: 필요한 값만 생성하여 메모리를 절약합니다. 지연 평가: 필요할 때만 값을 생성하여 불필요한 연산을 피합니다. 무한 시퀀스 생성: 끝없는 데이터 스트림을 모델링할 수 있습니다. 복잡한 로직 간소화: 복잡한 반복 로직을 간단하게 표현할 수 있습니다. 제너레이터의 특징 yield 키워드 사용: 함수 내에서 yield를 사용하여 값을 반환합니다. 상태 유지: 함수의 로컬 변수를 통해 내부 상태를 유지합니다. 이터레이터 프로토콜 준수: next() 함수를 통해 값을 하나씩 가져올 수 있습니다. StopIteration 예외: 모든 값을 생성한 후 StopIteration 예외를 발생시킵니다. 제너레이터의 주요 장점 메모리 효율성: ...

November 24, 2024 · 3 min · Me