Generator   제너레이터

(2023-02-21)

1. [전산, 프로그래밍]  제너레이터 (Generator)

  ㅇ 생성 후에, 호출시 마다, 빌 때까지 하나씩 뽑아 사용하는 함수

  ㅇ 특징
     - 쉽게, 최소한의 자원 소모로, 규칙적인 발생 구조를 갖음
        . 그러나, 결과를 무한히 내놓는 구조로는 구현할 수 없음
        . 다만, 어느 정도 상한을 두더라도, 이를 저장할 최소의 메모리 소요는 필요함
     - 제너레이터 함수는, 제어권을 자신이 독점하지 않고, 함수 호출자에게 양도(yield) 가능
        . 제너레이터 함수함수 호출자가 양방향으로 함수상태를 주고받을 수 있음 
     - 제너레이터 함수를 호출하면, 제너레이터 객체를 반환 함
        . 이때, 제너레이터 객체이터레이터 객체의 한 종류 임
        . 따라서, 이터레이터 객체 처럼, next에 의해 반복 처리를 단계별 정밀 제어 가능

  ㅇ 주요 용도
     - 메모리 공간 절약
        . 수많은 반복처리 결과 값을 생성하는 경우, 생성 구조를 갖으므로, 
        . 입력 길이에 상관 없이 메모리 공간 크기를 동일하게 작게 유지할 수 있음
     - 간결한 코드 작성


2. [자바스크립트]  자바스크립트 형식
     - function* 함수명() { ...} 으로 정의하고, 1 이상의 yield 표현식을 포함

  ㅇ (설명)
     - 함수 내부에서, yield 명령으로 값을 반환하게 됨
        . 만일, 함수 중간에 yield 구문을 만나면, 
           .. 그때까지의 중간 값을 반환하고, 함수를 종료 않고, 맨끝에 도달할 때까지 실행됨 
        . 만일, yield 명령문이 여럿일 때는, 다음 호출시에 이전 yield 명령문 이후부터 재개
     - 한편, return 구문을 만나면, 통상의 함수 처럼,
        . 값을 반환하고 바로 함수를 종료시킴

  ㅇ (참고)
     - 화살표 함수로써 정의 불가
     - new 연산자 형식에 의한 생성자 함수로는 호출 불가


3. [파이썬]

  ㅇ 제너레이터 객체의 생성 방법 둘
     - 제너레이터 함수에 의한 생성
        . yield가 하나라도 있으면, 제너레이터 함수가 됨
        . 제너레이터 객체가 만들어져 반환이 됨
     - 제너레이터 표현식에 의한 생성
        . () 소괄호 안에, ( for in )
           .. 문법적 구성이 리스트 컴프리헨션과 동일함

파이썬 반복
   1. 파이썬 제어 구문   2. 이터레이터   3. 제너레이터  
JS 객체
   1. JS 객체   2. JS 객체 구분   3. JS 객체의 생성 저장 접근   4. JS 클래스   5. 프로토타입 객체   6. 프라미스 객체   7. 일급 객체   8. 래퍼 객체   9. 콘솔 객체   10. this 참조   11. 이터레이터   12. 제너레이터   13. 범용 객체 (Object object)  


Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"