def one_to_three():
... """1, 2, 3을 반환하는 생성기를 반환한다."""
... print('생성기가 1을 내어 놓습니다.')
... yield 1
... print('생성기가 2를 내어 놓습니다.')
... yield 2
... print('생성기가 3을 내어 놓습니다.')
... yield 3
...
>>> one_to_three_generator = one_to_three()
>>> next(one_to_three_generator)
생성기가 1을 내어 놓습니다.
1
>>> next(one_to_three_generator)
생성기가 2를 내어 놓습니다.
2
>>> next(one_to_three_generator)
생성기가 3을 내어 놓습니다.
3
yield 문이 포함된 함수를 실행하면 생성기가 반한된다.
생성기 next 함수안에 생성기를 넣어서 실행하면, 함수의 본문이 실행된다.
이 때, yield 문은 값을 내어준 후, 생성기의 실행을 일시정지 시킨다.
다시 next 함수가 실행되면 정지했던 위치에서부터 다시 실행이 이어진다.
>>> cube_generator = (e ** 3 for e in range(1000000000))
>>> next(cube_generator)
0
>>> next(cube_generator)
1
>>> next(cube_generator)
8
생성기 식을 이용하면 원본 컬렉션을 다른 것으로 변환하는 종류의 생성기를 간편하게 만들 수 있다. 각 요소를 구하는 비용이 크거나 원본 컬렉션의 크기가 방대할 때는 리스트 조건제시법 대신 생성기 식을 사용하는 것이 유리하다.
'대학원 공부 > programming language' 카테고리의 다른 글
Python : 반복기, 생성기, itertools (0) | 2020.01.28 |
---|---|
Numpy & Pandas : 참고 블로그 (0) | 2020.01.12 |
CSS : Positioning : static, relative, absolute, fixed (0) | 2019.12.15 |
CSS : Positioning (min-max width, margin, padding) (0) | 2019.12.15 |
CSS : Positioning (float, clear,overflow) (0) | 2019.12.15 |
댓글