-제너레이터는 이터레이터 생성해주는 함수.
-이터레이터는 클래스에 iter, next, getitem등의 메서드 구현해야 하지만 제너레이터는 함수 안에서 yield 키워드만 사용하면 끝
-제너레이터(발생자)
-함수 안에서 yield사용하면 함수가 제너레이터되고, yield에는 값(변수)지정
yield 값
def number_generator():
yield 0
yield 1
yield 2
yield 3
for i in number_generator():
print(i)
결과
0
1
2
3
def number_generator(stop):
n = 0
while n < stop:
yield n
n += 1
g = number_generator(5)
결과
0
1
2
3
4
def upper_generator(x):
for i in x:
yield i.upper()
fruits = ['apple', 'pear', 'blueberry']
for i in upper_generator(fruits):
print(i)
결과
APPLE
PEAR
BLUEBERRY
yield from 반복가능한객체
yield from 이터레이터
yield from 제너레이터객체
def number_generator():
x = [1,2,3]
yield from x
for i in number_generator():
print(i)
결과
1
2
3
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)
결과
0
1
2