Generator   제너레이터

(2022-07-08)

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

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

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

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


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

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

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


3. [파이썬]

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



"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"