제너레이터는 이터레이터를 생성해주는 함수입니다.
이터레이터는 클래스에 __iter__, __next__ 또는 __getitem__ 메서드를 구현해야 하지만 제너레이터는 함수 안에서 yield라는 키워드만 사용하면 끝입니다. 제너레이터는 발생자라고 부르기도 합니다.
# yield 값
def number_generator():
yield 0
yield 1
yield 2
result = number_generator()
for i in result:
print(i)
yield에서 함수 호출하기
def upper_generator(x):
for i in x:
yield i.upper() # 함수의 반환값을 바깥으로 전달
fruits = ['apple', 'pear', 'grape', 'pineapple', 'orange']
for i in upper_generator(fruits):
print(i)
yield from를 이용한 제너레이터 생성
yield from 반복가능한객체
yield from 이터레이터
yield from 제너레이터객체
def number_generator(stop):
n = 0
while n < stop:
yield n
n += 1
def three_generator():
yield from number_generator(3) # 숫자를 세 번 바깥으로 전달
for i in three_generator():
print(i)
제너레이터 표현식을 이용한 생성
( )(괄호)로 묶으면 제너레이터 표현식이 됩니다.
리스트 표현식은 처음부터 리스트의 요소를 만들어내지만 제너레이터 표현식은 필요할 때 요소를 만들어내므로 메모리를 절약할 수 있습니다.
(식 for 변수 in 반복가능한객체)
result = (i for i in range(50) if i % 2 == 0)
for i in result:
print(i,end=' ')
'Python Basic' 카테고리의 다른 글
이터레이터(iterator) (0) | 2022.11.23 |
---|---|
Exception (0) | 2022.11.23 |
decorator 사용법 (0) | 2022.11.23 |
closure 사용법 (0) | 2022.11.23 |
Programming productivity tools (0) | 2022.11.08 |