Generator 제네레이터
- 루프의 반복 동작을 제어할 수 있는 루틴 형태
- 숫자 1억 개를 만들어 계산하는 프로그램이 존재할 때, 기존의 방식으로는 숫자 1억 개를 만들어서 어딘가에 저장하고 있어야 한다
- 제너레이터만 생성해두고 필요할 때마다 숫자를 생성하는 방식을 사용할 수 있다
yield
구문을 사용하면 제너레이터를 리턴할 수 있다- 기존의 return은 값을 리턴하고 모든 함수의 동작을 종료하지만,
yield
는 제너레이터가 여기까지 실행 중이던 값을 내보낸다는 의미 - 중간 값을 리턴하고 다음 함수는 종료되지 않고 계속해서 맨 끝에 도달할 때까지 실행된다는 것
- 기존의 return은 값을 리턴하고 모든 함수의 동작을 종료하지만,
def generator:
yield 1
yield 'string'
yield True
g = generator()
- next(g) → 1
- next(g) → ‘string’
- next(g) → True